DO NOT EDIT THIS FILE FOR ANY NEW DEVELOPMENT.
This is the CHANGELOG for the old "Ambassador Pro" product that was an add-on to the Ambassador API Gateway. In 1.0.0, Ambassador Pro and the Ambassador API Gateway were merged in to a combined "Ambassador Edge Stack" product.
Behavior:
- Developer portal no longer requires the /openapi Mapping
- Renamed environment variable APRO_DEVPORTAL_CONTENT_URL to DEVPORTAL_CONTENT_URL
- Feature: Developer portal can check out a non-default branch. Control with DEVPORTAL_CONTENT_BRANCH env var
- Feature: Developer portal can use a subdir of a checkout. Control with DEVPORTAL_CONTENT_DIR env var
apictl traffic initializeno longer waits for the traffic-proxy to become ready before exiting.- Feature: Developer portal will show swagger documentation for up to five services (or more with appropriate license)
- Feature: local-devportal is now a standalone go binary with no external dependencies
v1license keys were not being used so augment them to include emails- The OAuth2 redirection endpoint has moved from
/callbackto/.ambassador/oauth2/redirection-endpoint. Migrating Pro users will need to notify thier IDP of the change.
Other:
amb-coreandamb-sidecarhave been merged in to a combinedaeswhich is based on Ambassador OSS [version TBD].login-gate-jscontent has been updated for a clearer first time experience.
Configuration:
JWTFilter now has arealmsetting to configure the realm mentioned inWWW-Authenticateof error responses.- Feature:
JWTFilter now has a FilterPolicy argumentscopeto preformdraft-ietf-oauth-token-exchange-compatible Scope validation. - Feature:
OAuth2Filter now has a.insteadOfRedirect.filtersFilterPolicy argument that lets you provide a list of filters to run; as if you were listing them directly in a FilterPolicy. - Feature:
OAuth2Filter now has aextraAuthorizationParameterssetting to manually pass extra parameters to the IDP's authorization endpoint. - Feature:
OAuth2Filter now has aaccessTokenJWTFiltersetting to use aJWTfilter for access token validation whenaccessTokenValidation: jwtoraccessTokenValidation: auto.
Behavior:
- Feature:
JWTFilter now generates RFC 6750-compliant responses with theWWW-Authenticateheader set.
Other:
- Update Ambassador Core from Ambassador 0.85.0 (Envoy 1.11+half-way-to-1.12) to 0.86.0 (Envoy 1.12.2)
Configuration:
- Feature:
FilterPolicymay now setifRequestHeaderto only apply aFilterto requests with appropriate headers. - Feature:
FilterPolicymay now setonDenyandonAllowto modify howFilters chain together. - Feature:
JWTFilterinjectRequestHeadersetemplates can now read the incoming HTTP request headers. - Feature:
JWTFiltererrorResponsecan now set HTTP headers of the error response. - Beta feature:
OAuth2Filter can now be configured to receive OAuth client credentials in the HTTP request header, and use them to obtain a client credentials grant. This is only currently tested with Okta.
Behavior:
- The
OAuth2filter's XSRF protection now works differently. You should use theambassador_xsrf.{name}.{namespace}cookie instead of theambassador_session.{name}.{namespace}cookie for XSRF-protection purposes.
Configuration:
- The
JWTandOAuth2Filter types supportrenegotiateTLS - The
JWTFilter now has anerrorResponseargument that allows templating the filter's error response.
Other:
- Update Ambassador Core from Ambassador 0.83.0 to 0.85.0
Configuration
- The
OAuth2filter now has a FilterPolicy argumentinsteadOfRedirectthat can specify a different action to perform than redirecting to the IDP.
Behavior:
- Feature: Developer portal URL can be changed by the user. Adjust the
ambassador-pro-devportalMappingCRD (or annotation) by changing theprefixto desired prefix and changing therewriteto/docs/. Theambassador-pro-devportal-apican not be adjusted yet. - Feature: The
OAuth2filter can now perform OIDC-session RP-initiated logout when used with an identity provider that supports it. - Bugfix: Properly return a 404 for unknown paths in the amb-sidecar; instead of serving the index page; this could happen if the devportal Mapping is misconfigured.
- Bugfix: Fix the "loaded filter" log info message.
- Bugfix: Don't publish the "dev-portal-server" Docker image; it was obviated by "amb-sidecar" in 0.8.0.
- Bugfix: The
JWTFilter is no longer case-sensitive with the auth-scheme (Bearervsbearer) - Bugfix: The
JWTFilter no longer accepts authorizations that are missing an auth-scheme
Other:
- Update Ambassador Core from Ambassador 0.75.0 to 0.83.0
- Incorporate the Envoy 1.11.2 security patches in Ambassador Core
- Fast iteration on Developer Portal styling and content using a docker image inside a local checkout of Developer Portal content repo (see reference doc for usage guide)
Configuration:
amb-sidecarnow takes additional configuration related to the developer portal.
Behavior:
- Feature: The developer portal is now in "beta", and incorporated into amb-sidecar.
- Bugfix: The
ExternalFilter no longer erroneously follows redirects. - Bugfix: Fixed a case-folding bug causing the
JWTFilter to be inoperable. - Enhancement: Errors in
Filterresource definitions are now recorded and included in error messages.
Configuration:
amb-sidecar: The default value ofUSE_STATSDhas changed fromtruetofalse.- Bump license key schema v0 → v1. The developer portal requires a v1 license with the "devportal" feature enabled. Some future version of the other functionality will drop support for v0 license keys.
- The
JWTFilter can now inject HTTP request headers; configured with theinjectRequestHeadersfield.
Behavior:
- Fixed a resource leak in dev-portal-server
Other:
- There is now a build of Ambassador with Certified Envoy named "amb-core".
Configuration:
- The CRD field
ambassador_idmay now be a single string instead of a list of strings (this should have always been the case, but there was a bug in the parser). - Everything is now on one port:
APRO_HTTP_PORT, which defaults to8500. LOG_LEVELno longer exists; everything obeysAPP_LOG_LEVEL.- The meaning of
REDIS_POOL_SIZEhas changed slightly; there are no longer separate connection pools for ratelimit and filtering; the maximum number of connections is nowREDIS_POOL_SIZEinstead of 2×REDIS_POOL_SIZE. - The
amb-sidecarRateLimitService can now report to statsd, and attempts to do so by default (USE_STATSD,STATSD_HOST,STATSD_PORT,GOSTATS_FLUSH_INTERVAL_SECONDS).
Behavior:
- Now also handles gRPC requests for
envoy.service.auth.v2, in addition toenvoy.service.auth.v2alpha. - Log a stacktrace at log-level "debug" whenever the HTTP client encounters an error.
- Fix bug where the wrong key was selected from a JWKS.
- Everything in amb-sidecar now runs as a single process.
Configuration:
- Redis is now always required to be configured.
- The
amb-sidecarenvironment variables$APRO_PRIVATE_KEY_PATHand$APRO_PUBLIC_KEY_PATHare replaced by a Kubernetes secret and the$APRO_KEYPAIR_SECRET_NAMEand$APRO_KEYPAIR_SECRET_NAMESPACEenvironment variables. - If the
$APRO_KEYPAIR_SECRET_NAMEKubernetes secret (above) does not exist,amb-sidecarnow needs the "create" permission for secrets in its ClusterRole. - The
OAuth2Filter now ignores theaudiencefield setting. I expect it to make a come-back in 0.5.1 though. - The
OAuth2Filter now acts as if theopenidscope value is always included in the FilterPolicy'sscopesargument. - The
OAuth2Filter can verify Access Tokens with several different methods; configured with theaccessTokenValidationfield.
Behavior:
- The
OAuth2Filter is now strictly compliant with OAuth 2.0. It is verified to work properly with:- Auth0
- Azure AD
- Keycloak
- Okta
- UAA
- The
OAuth2Filter browser cookie has changed:- It is now named
ambassador_session.{{filter_name}}.{{filter_namespace}}instead ofaccess_token. - It is now an opaque string instead of a JWT Access Token. The Access Token is still available in the injected
Authorizationheader.
- It is now named
- The
OAuth2Filter will no longer consider a user-agent-providedAuthorizationheader, it will only consider the cookie. - The
OAuth2Filter now supports Refresh Tokens; they must be requested by listingoffline_accessin thescopesargument in the FilterPolicy. - The
OAuth2Filter's/callbackendpoint is no longer vulnerable to XSRF attacks - The Developer Portal file descriptor leak is fixed.
Other:
- Open Source dependency license compliance is now automated as part of the release machinery. Source releases for the Docker images are now present in the images themselves at
/*.opensource.tar.gz.
- Add the Developer Portal (experimental; no documentation available yet)
apictl traffic initialize: Correctly handle non-defaultnamespacesapp-sidecar: Respect theAPP_LOG_LEVELenvironment variable, same asamb-sidecar
- Turn down liveness and readiness probe logging from "info" to "debug"
- Add liveness and readiness probes
-
Moved all of the default sidecar ports around; YAML will need to be adjusted (hence 0.4.0 instead of 0.3.2). Additionally, all of the ports are now configurable via environment variables
Purpose Variable Old New Auth gRPC APRO_AUTH_PORT 8082 8500 RLS gRPC GRPC_PORT 8081 8501 RLS debug (HTTP) DEBUG_PORT 6070 8502 RLS HTTP ??? PORT 7000 8503 -
apictlno longer sets an imagePullSecret when deploying Pro things to the cluster (since the repo is now public)
- Support running the Ambassador sidecar as a non-root user
- New Filter type
External - Request IDs in the Pro logs are the same as the Request IDs in the Ambassador logs
OAuth2Filter type supportssecretNameandsecretNamespace- Switch to using Ambassador OSS gRPC API
- No longer necessary to set
allowed_request_headersorallowed_authorization_headersforPluginFilters - RLS logs requests as
infoinstead ofwarn - Officially support Okta as an IDP
(0.3.0 was initially tagged as 0.2.5)
JWTandOAuth2Filter types supportinsecureTLSOAuth2now handles JWTs with ascopeclaim that is a JSON list of scope values, instead of a JSON string containing a whitespace-separated list of scope values (such as those generated by UAA)
- Consul Connect integration no longer requires a license key
- Fix Consul certificate rotation
- Move the AuthService from port 8080 to 8082, and make it configurable with
APRO_AUTH_PORT
- Have everything require license keys
- Differentiate between components when phoning-home to Scout
- Phone-home to kubernaut.io/scout, not metriton.datawire.io/scout
- Fix bug where
apictl traffic injectwiped existingimagePullSecrets - Support
AMBASSADOR_ID,AMBASSADOR_SINGLE_NAMESPACE, andAMBASSADOR_NAMESPACE - Log format changed
- OIDC support
- Replace
TenantandPolicyCRDs withFilterandFilterPolicyCRDs - Add JWT validation filter
- Add
apro-plugin-runner(previously was in a separate OSS git repo)
- More readable logs in the event of a crash
apictl trafficsetsimagePullSecret- Have
apictlalso look for the license key in~/.config/as a fallback on macOS. The paths it now looks in, from highest to lowest precedence, are:$HOME/Library/Application Support/ambassador/license-key(macOS only)${XDG_CONFIG_HOME:-$HOME/.config}/ambassador/license-key$HOME/.ambassador.key
- First release with combined rate-limiting and authentication.