View a markdown version of this page

Richten Sie die eingehende Autorisierung für Ihr Gateway ein - Amazon Grundgestein AgentCore

Richten Sie die eingehende Autorisierung für Ihr Gateway ein

Bevor Sie Ihr Gateway erstellen, müssen Sie die eingehende Autorisierung einrichten. Bei der eingehenden Autorisierung werden Benutzer validiert, die versuchen, über Ihr Gateway auf Ziele zuzugreifen. AgentCore AgentCore unterstützt die folgenden Arten der eingehenden Autorisierung:

  • JSON Web Token (JWT) — Ein sicheres und kompaktes Token, das für die Autorisierung verwendet wird. Nachdem Sie das JWT erstellt haben, geben Sie es als Autorisierungskonfiguration an, wenn Sie das Gateway erstellen. Sie können ein JWT mit jedem der Identitätsanbieter unter Provider-Setup und -Konfiguration erstellen.

  • IAM-Identität — Autorisiert anhand der Anmeldeinformationen der AWS IAM-Identität, die versucht, auf das Gateway zuzugreifen.

  • Ausgelagerte Autorisierungstypen — Das Gateway trifft keine eigene Autorisierungsentscheidung und überträgt die Autorisierung stattdessen auf eine andere Komponente, z. B. das Downstream-Ziel, eine an das Gateway angeschlossene Policy-Engine oder eine Interceptor-Lambda-Funktion. Zu dieser Kategorie gehören „Nur Authentifizierung“ und „Keine Autorisierung“. Einzelheiten und Anleitungen finden Sie unter Offloaded Inbound Authorization.

Anmerkung

Wenn Sie Ihr Gateway mit der AWS Management Console oder AgentCore CLI erstellen, können Sie bei der Gateway-Erstellung mit Amazon Cognito eine Standardkonfiguration für eingehende Autorisierungen erstellen. Wenn Sie die standardmäßige Autorisierungskonfiguration verwenden möchten, können Sie diese Voraussetzung überspringen.

Wenn Sie nicht vorhaben, die standardmäßige Autorisierungskonfiguration mit Amazon Cognito zu verwenden, wählen Sie das Thema aus, das dem Autorisierungstyp entspricht, den Sie verwenden möchten, um zu erfahren, wie Sie ihn einrichten können:

IAM-based eingehende Autorisierung

IAM-based Bei der eingehenden Autorisierung können Sie die IAM-Anmeldeinformationen des Gateway-Aufrufers für die Autorisierung verwenden. Sie können diese Option verwenden, wenn Sie eine IAM-Identität erstellen möchten, über die Benutzer, die Ihr Gateway anrufen, authentifiziert werden können.

Um die Autorisierung für eingehenden Datenverkehr einzurichten IAM-based

  1. Erstellen oder verwenden Sie eine bestehende IAM-Identität für Ihre Gateway-Anrufer.

  2. Erstellen Sie eine identitätsbasierte IAM-Richtlinie, die die folgenden Berechtigungen enthält:

    • bedrock-agentcore:InvokeGateway— Nachdem Sie das Gateway erstellt haben, sollten Sie diese Richtlinie so ändern, dass das Resource Feld auf das Gateway beschränkt ist, das Sie aus Sicherheitsgründen erstellen.

  3. Hängen Sie die Richtlinie an die Identität des Gateway-Anrufers an.

Beispiel für eine Richtlinie

Das folgende Beispiel zeigt eine Richtlinie, die Sie an eine Identität anhängen könnten, damit sie ein Gateway mit der ID aufrufen kann my-gateway-12345

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }

Ressourcen

Auf JSON Web Token (JWT) basierende eingehende Autorisierung

Ein JSON Web Token (JWT) ist ein sicheres und kompaktes Token, das für die Autorisierung verwendet wird. Sie können ein JWT mit einem unterstützten Identitätsanbieter erstellen. Nachdem Sie ein JWT erstellt haben, können Sie es abrufen und bei der Erstellung des Gateways als Autorisierungskonfiguration angeben.

Wichtig

Die Verwendung der eingehenden Autorisierung auf der Grundlage von JWT-Token führt dazu, dass einige Ansprüche des JWT-Tokens protokolliert werden. CloudTrail Der Eintrag enthält den Betreff des bereitgestellten Web-Identitätstokens. Wir empfehlen Ihnen, in diesem Feld keine personenbezogenen Daten (PII) zu verwenden. Beispielsweise könnten Sie stattdessen eine GUID oder einen paarweisen Bezeichner verwenden, wie in der OIDC-Spezifikation vorgeschlagen.

Sie können die AgentCore CLI verwenden, um ein Standard-JWT einzurichten, oder eines manuell mit einem unterstützten Identitätsanbieter erstellen. Um mehr über die verschiedenen Methoden zum Einrichten eines JWT zu erfahren, wählen Sie eines der folgenden Themen aus:

Richten Sie ein Standard-JWT ein

Mit der AgentCore CLI können Sie mit Amazon Cognito auf einfache Weise eine Standardautorisierungskonfiguration erstellen, die Sie dann beim Erstellen eines Gateways verwenden können. Bei der Ausführung fordert Sie die CLI aufagentcore create, die eingehende Autorisierung zu konfigurieren, und kann automatisch einen Amazon Cognito Cognito-Benutzerpool für Sie einrichten.

agentcore create

Nach Abschluss des Befehls stellt die AgentCore CLI Authentifizierungs- und Autorisierungsinformationen bereit:

  • Sie verwenden die Authorizer-Konfiguration, wenn Sie das Gateway erstellen.

  • Für die eingehende Autorisierung beim Aufrufen Ihres Gateways benötigen Sie ein Zugriffstoken, indem Sie Ihre Client-ID, den geheimen Clientschlüssel und den Token-Endpunkt verwenden. Weitere Informationen darüber, wie Sie Ihr Zugriffstoken erhalten, finden Sie im Beispiel unter Use an AgentCore gateway oder The token issuer endpoint im Amazon Cognito Developer Guide.

Richten Sie ein JWT manuell ein

Amazon Bedrock AgentCore unterstützt JWTs von allen Identitätsanbietern. Einige Beispiele finden Sie unter Einrichtung und Konfiguration des Anbieters.

Notieren Sie sich bei der Erstellung des JWT die folgenden Werte, die Sie CustomJWTAuthorizerConfigurationbei der Erstellung eines Gateways ausfüllen müssen, sofern sie für Ihren Anwendungsfall relevant sind:

  • Discovery-URL — Die URL, von der Anmeldeinformationen und der Token-Endpunkt abgerufen werden können.

  • Client-ID — Die öffentliche Kennung einer Client-Anwendung, die ein Token anfordert und anhand des client_id Antrags validiert wird.

  • Geheimer Client-Schlüssel — Der private Schlüssel, der den Zugriff der Client-Anwendung zum Abrufen eines Tokens authentifiziert.

  • Zulässige Zielgruppe — Die Kennung, die anhand des Antrags die beabsichtigten Empfänger oder Verbraucher eines Tokens bestätigt. aud

  • Zulässige Bereiche — Die Bereiche, die die Beschränkungen des Zugriffs einer Anwendung auf das Konto eines Benutzers definieren. Weitere Informationen finden Sie unter OAuth-Bereiche.

  • Andere erforderliche Anspruchswerte — Je nachdem, welchen Autorisierer Sie verwenden, müssen Sie möglicherweise erforderliche benutzerdefinierte Anspruchsfelder und Regeln angeben, mit denen der Wert des Anspruchsfeldes für die Authentifizierung abgeglichen wird.

Sie benötigen diese Werte, um Folgendes zu tun:

  • Erstellen Sie das Gateway, indem Sie Werte in der Authorizer-Konfiguration angeben.

  • Besorgen Sie sich Autorisierungsdaten, um das Gateway aufzurufen. Um zu erfahren, wie Sie Ihre Anmeldeinformationen erhalten, schlagen Sie in der Dokumentation Ihres Identitätsanbieters nach. Wenn Sie beispielsweise Amazon Cognito verwendet haben, finden Sie weitere Informationen unter The token issuer endpoint im Amazon Cognito Developer Guide.

Umfang der Werbung bei Authentifizierungsherausforderungen

Wenn ein Client eine Anfrage ohne gültiges Zugriffstoken an ein JWT-authorized Gateway sendet, gibt das Gateway eine Fehlerantwort mit einem WWW-Authenticate Header zurück, der die erforderlichen OAuth-Bereiche ankündigt. Dies entspricht dem RFC 6750 Bearer Token Challenge-Format und ermöglicht es MCP-compliant Clients, automatisch die Bereiche zu ermitteln, die für den Token-Erwerb benötigt werden.

Das Gateway gibt je nach Fehler die folgenden Antworten zurück:

  • 401 Nicht autorisiert — Die Anfrage hat kein Token oder ein ungültiges Token. Der WWW-Authenticate Header beinhaltet resource_metadata und scope Parameter.

  • 403 Forbidden — Das Token ist gültig, enthält aber nicht die erforderlichen Bereiche. Der WWW-Authenticate Header enthält resource_metadata Parameter error="insufficient_scope"scope, und.

Der scope Wert enthält die durch Leerzeichen getrennten Bereiche, die in den Bereichen des Gateways als Zulässige Bereiche konfiguriert sind. CustomJWTAuthorizerConfiguration Der resource_metadata Wert verweist auf das Dokument OAuth Protected Resource Metadata des Gateways unter, das Clients abrufen können/.well-known/oauth-protected-resource, um den Autorisierungsserver und die unterstützten Bereiche zu ermitteln.

Verwenden Sie einen privaten () Identitätsanbieter VPC-hosted

AgentCore Gateway unterstützt JWT-based eingehende Autorisierung mit Identitätsanbietern, die in Ihrer VPC gehostet werden. Sie können eine privateEndpoint Option konfigurieren, customJWTAuthorizer um Ihre privaten OIDC-Discovery-, Token- und JWKS-Endpunkte AgentCore zu erreichen, ohne sie dem öffentlichen Internet zugänglich zu machen.

Ihr IAM-Prinzipal muss über die entsprechenden iam:CreateServiceLinkedRole Berechtigungen verfügenidentity-network.bedrock-agentcore.amazonaws.com, damit AgentCore Identity die AWSServiceRoleForBedrockAgentCoreIdentity serviceverknüpfte Rolle in Ihrem Namen erstellen kann, falls sie noch nicht vorhanden ist.

Das privateEndpoint gilt für die Domain in der. discoveryUrl Wenn Ihr Identitätsanbieter andere Domänen für andere Endpunkte verwendet (z. B. wird der Token- oder JWKS-Endpunkt in eine andere Domäne aufgelöst als die Discovery-URL), verwenden Sie diese Option, privateEndpointOverrides um für jede weitere Domäne eine separate private Endpunktkonfiguration anzugeben.

Im folgenden Beispiel wird mithilfe von Managed Lattice ein Gateway mit einem privaten Identitätsanbieter erstellt:

{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }

Wenn Ihre Token- oder JWKS-Endpunkte eine andere Domain als die Discovery-URL verwenden, fügen Sie für jede weitere Domain einen privateEndpointOverrides Eintrag hinzu. Derzeit privateEndpointOverrides wird nur mit selbstverwalteten Lattice-Ressourcen unterstützt:

{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }

Informationen zu selbstverwaltetem Lattice, kontoübergreifenden Setups und erweiterten Konfigurationen finden Sie unter Connect zu privaten Ressourcen in Ihrer VPC mithilfe von VPC Lattice. Einen umfassenden Leitfaden, der sowohl eingehende als auch ausgehende private IdP-Szenarien behandelt, finden Sie unter Connect zu privaten Identitätsanbietern herstellen.

Ausgelagerte Autorisierung eingehender Nachrichten

Bei der ausgelagerten eingehenden Autorisierung trifft das Gateway keine eigene Autorisierungsentscheidung. Stattdessen verlagert es die Autorisierung auf eine andere Komponente:

  • Der nachgeschaltete Zieldienst, der die empfangene Anfrage autorisiert.

  • Eine an das Gateway angeschlossene Policy-Engine, die Zugriffsrichtlinien auswertet.

  • Eine Interceptor-Lambda-Funktion, die Ihre benutzerdefinierte Authentifizierungs- oder Autorisierungslogik ausführt, bevor Anfragen Ihre Ziele erreichen.

AgentCore bietet zwei ausgelagerte Typen:

  • Nur authentifizieren (AUTHENTICATE_ONLY) — Das Gateway überprüft die SigV4-Signatur des Anrufers, um den Anrufer zu authentifizieren, trifft aber keine Autorisierungsentscheidung. Anfragen müssen signiert werden, aber jeder authentifizierte Anrufer wird an das Ziel weitergeleitet.

  • Keine Autorisierung (NONE) — Das Gateway führt keine eingehende Authentifizierung oder Autorisierung durch. Anfragen können nicht authentifiziert werden, und jeder Anrufer wird an das Ziel weitergeleitet.

Bei beiden Typen entscheiden Sie, wo die Autorisierung tatsächlich durchgesetzt wird:

  • Policy-Engine — Hängen Sie eine Policy-Engine an das Gateway an, um Zugriffsrichtlinien zentral auszuwerten. Dieses Muster wird für Produktionsgateways empfohlen und wird häufig zusammen mit OAuth verwendet.

  • Interceptor-Lambda-Funktion — Führen Sie Ihre eigene Authentifizierungs- oder Autorisierungslogik aus, bevor Anfragen Ihre Ziele erreichen. Dies wird für Produktionsgateways empfohlen, wenn die integrierten Autorisierungsoptionen für eingehenden Datenverkehr nicht Ihren Anforderungen entsprechen.

  • Downstream-Ziel — Lassen Sie das Ziel die Autorisierung der empfangenen Anfrage erzwingen. Dies ist nützlich für Experimente und schrittweises Onboarding — zum Beispiel, wenn Sie ein Gateway vor eine bestehende Laufzeit stellen, ohne die Authentifizierung und Autorisierung der Laufzeit zu ändern —, sodass Sie die Gateway-Funktionen schrittweise übernehmen können, während die Runtime weiterhin die Authentifizierung erzwingt, der sie bereits vertraut.

Wichtig

Wenn Sie eingehende Autorisierungen auslagern, indem Sie entweder AUTHENTICATE_ONLY oder wählenNONE, erzwingt AgentCore Gateway die Autorisierung nicht eigenständig. In diesem Szenario müssen Sie die Autorisierung auf eine separate Komponente auslagern — eine Policy-Engine, eine Interceptor-Lambda-Funktion oder das Downstream-Ziel — andernfalls kann jeder Anrufer Ihr Ziel erreichen.

Authenticate-only Autorisierung

Bei der Authenticate-Only-Autorisierung (AUTHENTICATE_ONLY) verifiziert das Gateway die Signature Version 4 (Sigv4) -Signatur des Anrufers, um dessen Identität zu bestätigen, trifft jedoch keine eigene Autorisierungsentscheidung. Jeder authentifizierte IAM-Principal kann das Gateway unabhängig von seinen Berechtigungen aufrufen, und die Anfrage wird an das Ziel weitergeleitet. Die Autorisierung wird an den nachgeschalteten Zieldienst oder an eine an das Gateway angeschlossene Policy-Engine delegiert.

Wichtig

Damit AUTHENTICATE_ONLY erzwingt das Gateway keine Autorisierungsrichtlinien. Jede gültige SigV4-signed Anfrage wird an das Ziel weitergeleitet. Stellen Sie sicher, dass Ihre Downstream-Ziele ihre eigene Autorisierungslogik implementieren, oder fügen Sie dem Gateway eine Policy-Engine hinzu, um den Zugriff zu kontrollieren. Ohne die richtige Autorisierung auf Ziel- oder Gateway-Richtlinienebene kann jeder authentifizierte Anrufer Ihre Back-End-Dienste erreichen.

Keine Autorisierung

Sie können ein Gateway erstellen, das ohne Autorisierung konfiguriert ist, indem SieauthorizerType=NONE. Das Gateway führt keine Autorisierung für die eingehende Gateway-Anfrage durch und die Anfrage kann nicht authentifiziert werden.

Wichtig

Verwenden Sie Gateways ohne Autorisierung nicht für Produktionsworkloads, es sei denn, Sie haben alle unten aufgeführten bewährten Sicherheitsmethoden implementiert. Wenn Sie eine benutzerdefinierte Authentifizierungslogik benötigen, sollten Sie erwägen, eine Interceptor-Lambda-Funktion zu verwenden, um die Authentifizierung durchzuführen, bevor Anfragen Ihre Ziele erreichen.

Bewährte Methoden im Bereich Sicherheit

  1. Verwenden Sie den bedrock-agentcore:GatewayAuthorizerType Bedingungsschlüssel für den selektiven allow/deny Zugriff innerhalb Ihrer Organisation, um Gateways zu erstellen mit authorizerType=NONE

  2. Verwenden Sie Gateways ohne Autorisierung nicht aus praktischen Gründen zum Testen. Sie sollten für Gateways verwendet werden, die Sie veröffentlichen möchten, für die Sie jedoch eigene benutzerdefinierte Drosselungsregeln und Prüfungen implementiert haben, um sicherzustellen, dass Ihr öffentliches Gateway auch mit nicht authentifizierten Benutzern umgehen kann

  3. Verwenden Sie keine Gateways ohne Autorisierung für Ziele, die möglicherweise mit vertraulichen Informationen antworten. Obwohl Ziele mit ihren eigenen Autorisierungskonfigurationen konfiguriert sind, empfiehlt es sich, dem Gateway eine weitere Sicherheitsebene hinzuzufügen.

Integrieren Sie eine bestehende Runtime, ohne ihre Authentifizierung zu ändern

Wenn Sie einen ausgelagerten Eingangstyp mit einem passenden Autorisierungstyp für ausgehenden Datenverkehr kombinieren, der die Identität des Anrufers an die Runtime weiterleitet, kann das Onboarding in ein Gateway so einfach sein wie das Einstellen einer Endpunkt-Override auf Ihrem vorhandenen Client — es sind keine Authentifizierungsänderungen erforderlich:

  • IAM-Laufzeiten — Kombinieren Sie die eingehende Autorisierung mit der AUTHENTICATE_ONLY ausgehenden Autorisierung mit den IAM-Anmeldeinformationen des Anrufers (). CALLER_IAM_CREDENTIALS Das Gateway authentifiziert den SigV4-Aufrufer und signiert dann die Anfrage an die Runtime mit derselben Anruferidentität, sodass die bestehende IAM-Autorisierung der Laufzeit weiterhin unverändert gilt. Weitere Informationen finden Sie unter IAM-Anmeldeinformationen für Anrufer.

  • OAuth-Laufzeiten — Kombinieren Sie eingehende Autorisierung ohne Autorisierung mit ausgehender Token-Passthrough () -Autorisierung. JWT_PASSTHROUGH Das Gateway leitet das eingehende JWT unverändert an die Runtime weiter, sodass die Runtime das Token genauso validiert wie heute. (Der Token-Passthrough leitet ein Bearer-Token weiter, daher ist ein eingehender Typ erforderlich — JWT-Autorisierung für JWT-bearing eingehende Anfragen oder. NONE Es ist nicht verfügbar mitAUTHENTICATE_ONLY, was auch kein Inhaber-Token ist SigV4-based und auch nicht enthält.) Weitere Informationen finden Sie unter Token-Passthrough.

    Anmerkung

    Token-Passthrough (JWT_PASSTHROUGH) ist nicht der empfohlene Ansatz für die Produktion. Wenn Sie das eingehende Token unverändert weiterleiten, wird dasselbe Token sowohl vom Gateway als auch vom Downstream-Ziel akzeptiert. Daher sollte es einen engen Gültigkeitsbereich haben — zum Beispiel sollte die Audience (aud) jedes Tokens auf die vorgesehene Ressource beschränkt werden. Das empfohlene Muster ist der Token-Austausch im Namen (OBO), bei dem das Gateway das Token des Anrufers gegen ein neues, zielgruppenspezifisches Token für das Ziel eintauscht, anstatt das Token des Anrufers erneut abzuspielen. Verwenden Sie Token-Passthrough für einfaches Experimentieren, Testen und Onboarding und wechseln Sie für langfristige Produktionsworkloads zu OBO.

Warnung

Die Konfigurationen zur Identitätsweiterleitung in diesem Abschnitt basieren ausschließlich auf der Downstream-Laufzeit, um Anfragen zu autorisieren. Das Gateway fügt keine eigene Autorisierung hinzu. Sie sind für Tests, Experimente und ein störungsarmes Onboarding vorgesehen. Erzwingen Sie für ein Produktionsgateway die Autorisierung am Gateway — konfigurieren Sie die eingehende JWT- oder IAM-Autorisierung, fügen Sie eine Policy-Engine hinzu oder verwenden Sie eine Interceptor-Lambda-Funktion. Um sicherzustellen, dass Anrufer das Gateway nicht umgehen können, sobald Sie es eingeführt haben, finden Sie weitere Informationen unter Traffic über das Gateway erzwingen.