-
Notifications
You must be signed in to change notification settings - Fork 85
feat(dev-portal): API composition and packaging #2664
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 17 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
b01d1cb
Start outlining reference FF page
cloudjumpercat b0ea8b5
Continue draft
cloudjumpercat f3a4f86
Finish FF draft docs
cloudjumpercat 5d218f7
Fix vale
cloudjumpercat bc2897b
Apply suggestions from code review
cloudjumpercat 4e6b4fd
GW service rate limit interaction, additional req role, clarify how t…
cloudjumpercat a646d78
Revise API packaging guide for clarity and detail
jharmn 8e8e68e
Minor copy edit
cloudjumpercat dc73a0e
Apply recommendation about spec to Gateway route mapping
cloudjumpercat 6e02118
Fix the table formatting
cloudjumpercat a76a81b
Fix tags, add ACE plugin config content, other feedback fixes
cloudjumpercat 2c176e5
Apply more feedback
cloudjumpercat a97ff24
Apply suggestions from code review
cloudjumpercat 37cd59b
Merge branch 'main' into feat/api-packaging
cloudjumpercat 94d6d32
Make ace stuff includes, update steps, change file name and redirects
cloudjumpercat 5708461
Move packaging to catalog instead
cloudjumpercat f816192
Add backlinks, add to index and landing pages
cloudjumpercat aba968d
Apply suggestions from code review
cloudjumpercat 4e43fbf
Appease vale
cloudjumpercat 2d456cf
feat(dev-portal): API packaging how to (#3580)
cloudjumpercat 5737d80
Update app/catalog/api-packaging.md
cloudjumpercat File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| The Access Control Enforcement (ACE) plugin manages developer access control to APIs published with Dev Portal. | ||
|
|
||
| Previously, when you created an API catalog in Dev Portal and linked the APIs to a Gateway Service, {{site.konnect_short_name}} would automatically apply the {{site.konnect_short_name}} application auth (KAA) plugin automatically. API packages uses the ACE plugin instead to manage developer access control to APIs. Unlike the KAA plugin, the ACE plugin can link to control planes to configure access control and create operations for Gateway Services in those control planes. | ||
|
|
||
| The ACE plugin runs *after* all other [authentication plugins](/plugins/?category=authentication) run. For example, if you have [Key Authentication](/plugins/key-auth/) configured and it rejects a request, the ACE plugin *will not* run. To allow for multiple authentication plugins, each must set the [`config.anonymous`](/plugins/ace/reference/#schema--config-anonymous) plugin configuration. Additionally, the choice to allow or reject an `anonymous` result after all authentication plugins have run needs to be controlled as described in [using multiple authentication methods](/gateway/authentication/#using-multiple-authentication-methods). | ||
cloudjumpercat marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| When you configure the ACE plugin, you must set either `required` or `present` for [`config.match_policy`](/plugins/ace/reference/#schema--config-match-policy). This determines how the ACE plugin will behave when a request doesn't match an existing Route. | ||
|
|
||
| Keep in mind that misconfigurations can overexpose unintended Routes. | ||
|
|
||
| The following table describes what the `match_policy` values do and when to use each: | ||
| {% table %} | ||
| columns: | ||
| - title: Setting | ||
| key: setting | ||
| - title: Description | ||
| key: description | ||
| - title: Limitations | ||
| key: limitations | ||
| - title: Use cases | ||
| key: use-case | ||
| rows: | ||
| - setting: | | ||
| `required` | ||
| description: | | ||
| Requires every incoming request to match a defined operation from an API or API package in Dev Portal. If a request doesn't match, ACE rejects the request outright with a 404. All traffic will be rejected except operations or Routes in published APIs linked to an ACE-enabled {{site.base_gateway}}. | ||
|
|
||
| {:.danger} | ||
| > **Warning:** Setting the [`match_policy`](/plugins/ace/reference/#schema--config-match-policy) to `required` can **block all traffic with a 404**. Any undefined endpoints will be blocked. If you accidentally enable this in your control planes, this could cause a potential outage in production. | ||
| limitations: | | ||
| * Shuts down all traffic outside of ACE-enabled Dev Portal APIs. | ||
| * If the plugin is improperly configured, potentially all traffic could be terminated. | ||
| use-case: | | ||
| * You want to lock down {{site.konnect_short_name}} so that only traffic that is part of an explicitly defined API operation is allowed through. | ||
| * You only plan to provide self-service access via your Dev Portal. | ||
| - setting: | | ||
| `if_present` | ||
| description: | | ||
| By default, the ACE plugin only engages with a request when it matches an operation. If a request doesn't match, ACE lets the request pass through untouched. This means that non-matching requests aren't rejected, but ACE also won't perform authentication and authorization on them. This allows a request to still be processed by other plugins with a [lower priority](/gateway/entities/plugin/#plugin-priority) than ACE. | ||
| limitations: | | ||
| * All traffic outside of published APIs linked to an ACE-enabled {{site.base_gateway}} won't be access controlled, this must be configured with a different plugin. Dev Portal will not be able to protect all operations. | ||
cloudjumpercat marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| * Since Routes aren't protected by default in this mode, any mistyped or omitted operation in API entities could result in open access. | ||
| use-case: | | ||
| * You have an environment where some Gateway Services or Routes are governed by Dev Portal–exposed APIs (with ACE), while others are regular Routes that should be left alone. | ||
| * You already have existing traffic and other access controls in place and want to avoid interruption. | ||
| {% endtable %} | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.