View a markdown version of this page

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

Richten Sie die ausgehende Autorisierung für Ihr Gateway ein

Mit der ausgehenden Autorisierung können Amazon Bedrock AgentCore Gateways im Namen von Benutzern, die bei der eingehenden Autorisierung authentifiziert und autorisiert wurden, sicher auf Gateway-Ziele zugreifen.

AgentCore Gateway unterstützt die folgenden Arten der ausgehenden Autorisierung:

  • Keine Autorisierung (nicht empfohlen) — Einige Zieltypen bieten Ihnen die Möglichkeit, die ausgehende Autorisierung zu umgehen. Diese weniger sichere Option wird nicht empfohlen.

  • IAM-based ausgehende Autorisierung — Verwenden Sie die Gateway-Servicerolle, um den Zugriff auf das Gateway-Ziel mit AWS Signature Version 4 (Sig V4) zu authentifizieren.

  • IAM-Anmeldeinformationen des Anrufers — Das Gateway verwendet die IAM-Anmeldeinformationen des Anrufers, um Anfragen an das Ziel zu signieren. Das Gateway übernimmt im Namen des Anrufers, der den Federated Access Service (FAS) verwendet, eine Rolle und signiert die ausgehende Anfrage mit der Identität des Anrufers. Dies ist nützlich, wenn der Zieldienst die Autorisierung auf der Grundlage der Identität des ursprünglichen Anrufers und nicht auf der Gateway-Servicerolle durchführen muss.

  • OAuth — Ein offenes Autorisierungsframework, das einer Client-Anwendung den Zugriff auf Ressourcen ermöglicht. Sie können OAuth mit einem integrierten Identitätsanbieter oder mit einem benutzerdefinierten Identitätsanbieter verwenden. Weitere Informationen finden Sie unter OAuth 2.0. Sie können die folgenden Arten von OAuth-Autorisierungsberechtigungen verwenden:

    • Erteilung von Kundenanmeldedaten — Machine-to-machine Authentifizierung (auch bekannt als 2-beiniges OAuth). Die Client-Anwendung greift im Namen der Anwendung auf Ressourcen zu, nicht im Namen des Benutzers.

    • Gewährung eines Autorisierungscodes — User-delegated Zugriff (auch bekannt als dreibeiniges OAuth). Der Benutzer erklärt sich damit einverstanden, dass die Client-Anwendung im Namen des Benutzers auf Ressourcen zugreift.

    • Token Exchange Grant (On-behalf-of) — Das Gateway tauscht das Zugriffstoken des eingehenden Benutzers gegen ein neues Zugriffstoken mit Gültigkeitsbereich aus, das auf eine nachgelagerte Ressource abzielt. Das ausgetauschte Token enthält sowohl die Identität des Benutzers als auch die Identität des Agenten, sodass nachgelagerte Dienste bei jedem Hop eine detaillierte Autorisierung erzwingen können, ohne zusätzliche Zustimmungsflüsse auszulösen. Weitere Informationen finden Sie unter Token-Austausch. On-behalf-of

  • Token-Passthrough — Das Gateway leitet das eingehende Autorisierungstoken ohne Änderung direkt an das Ziel weiter. Der Zieldienst ist für die Validierung des Tokens verantwortlich. Dazu muss das Gateway die AUTHENTICATE_ONLY eingehende Autorisierung verwenden, sodass das Token validiert, aber für die Weiterleitung aufbewahrt wird.

  • API-Schlüssel — Verwenden Sie den AgentCore Dienst, um einen API-Schlüssel zur Authentifizierung des Zugriffs auf das Gateway-Ziel zu generieren.

Die Art der ausgehenden Autorisierung, die Sie einrichten können, hängt vom Gateway-Zieltyp ab, für den Sie den Zugriff autorisieren:

Zieltyp Keine Autorisierung Gateway-Dienstrolle IAM-Anmeldeinformationen des Anrufers OAuth (Client-Anmeldeinformationen) OAuth (Autorisierungscode) OAuth (Token-Austausch) Weiterleitung von Tokens API-Schlüssel

API-Gateway-Phase

Ja

Ja

Nein

Nein

Nein

Nein

Nein

Ja

Lambda-Funktion

Nein

Ja

Nein

Nein

Nein

Nein

Nein

Nein

MCP-Server

Ja

Ja

Nein

Ja

Ja

Ja

Nein

Ja

API-Schema öffnen

Ja

Ja

Nein

Ja

Ja

Ja

Nein

Ja

Smithy-Schema

Nein

Ja

Nein

Ja

Nein

Nein

Nein

Nein

AgentCore Laufzeit (HTTP)

Nein

Ja

Ja

Ja

Nein

Nein

Ja

Nein

Anmerkung

Wenn Sie eine Integrationsanbieter-Vorlage als Ziel verwenden, überprüfen Sie die unterstützten Autorisierungstypen für verschiedene Vorlagen unter Built-in Vorlagen von Integrationsanbietern als Ziele.

Bevor Sie Ihrem Gateway ein Ziel hinzufügen, müssen Sie die Autorisierung dafür mit einer der unterstützten Methoden einrichten.

Anmerkung

Sie können diese Voraussetzung überspringen, wenn Sie planen, Ihr Gateway mit der AWS Management Console oder AgentCore CLI zu erstellen. Wenn Sie eines dieser Tools verwenden, können Sie sich AgentCore automatisch eine Servicerolle mit den erforderlichen Berechtigungen für den Zugriff auf das Ziel erstellen lassen. Jedes Mal, wenn Sie ein Ziel hinzufügen, werden Ihrer Servicerolle automatisch die erforderlichen Berechtigungen zugewiesen.

Wählen Sie ein Thema aus, um zu erfahren, wie Sie diese Art der Autorisierung einrichten:

Richten Sie die IAM-based ausgehende Autorisierung mit einer Gateway-Servicerolle ein

IAM-based Mit der ausgehenden Autorisierung können Sie die IAM-Anmeldeinformationen der Gateway-Servicerolle für die Autorisierung mit AWS Signature Version 4 (Sig V4) verwenden. Mit dieser Option kann sich der Amazon AgentCore Bedrock-Service im Namen Ihrer Gateway-Anrufer bei Gateway-Zielen authentifizieren.

Wenn Sie diese Option verwenden, stellen Sie sicher, dass die Gateway-Servicerolle über Berechtigungen verfügt. bedrock-agentcore:InvokeGateway Das Gateway verwendet die Anmeldeinformationen der Servicerolle für die Authentifizierung während des Aufrufs.

Zusätzliche Konfiguration für MCP-Server und OpenAPI-Ziele

Wenn Sie die IAM-based ausgehende Autorisierung mit einem MCP-Server oder einem OpenAPI-Ziel verwenden, müssen Sie eine zusätzliche Konfiguration für die SigV4-Signatur bereitstellen. Fügen Sie in die credentialProviderConfigurations ein iamCredentialProvider mit den folgenden Feldern ein:

  • service (erforderlich) — Der AWS Dienstname, der für die SigV4-Signatur verwendet wird. Zum Beispiel bedrock-agentcore für MCP-Server, die auf Amazon AgentCore Bedrock gehostet werden.

  • region (optional) — Die AWS Region für die Sigv4-Signatur. Wenn Sie keine Region angeben, verwendet das Gateway seine eigene Region.

Schließen Sie das Feld für Lambda-, API Gateway- und Smithy-Ziele nicht ein. iamCredentialProvider Diese Zieltypen unterstützen nur die GATEWAY_IAM_ROLE Basiskonfiguration mitcredentialProviderType. Weitere Informationen zur Angabe der Konfiguration des Anmeldeinformationsanbieters finden Sie unter Autorisierung der AgentCore Gateway-Servicerolle (IAM).

Bewährte Sicherheitsmethoden für IAM-based die ausgehende Autorisierung

Die Gateway-Ausführungsrolle wird von allen Zielen gemeinsam genutzt, mit GATEWAY_IAM_ROLE denen konfiguriert wurde. Ihre Berechtigungen sind die Obergrenze dafür, was jeder autorisierte Anrufer über das Gateway ausüben kann. Folgen Sie diesen bewährten Methoden, um die Exposition zu begrenzen:

  • Legen Sie für die Ausführungsrolle Mindestberechtigungen fest — Gewähren Sie nur die Berechtigungen, die für alle konfigurierten Ziele benötigt werden. Vermeiden Sie allgemeine Angaben Action oder Resource Platzhalter.

  • Verwenden Sie separate Gateways für unterschiedliche Vertrauensgrenzen — Wenn Ziele unterschiedliche Vertraulichkeitsstufen haben oder unterschiedliche Workloads bedienen, stellen Sie sie hinter separaten Gateways mit unterschiedlichen Ausführungsrollen bereit.

  • Verwenden Sie die Policy-Engine, um den Anruferzugriff einzuschränken — Verwenden Sie auf gemeinsam genutzten Gateways die Policy-Engine, um zu kontrollieren, welche Anrufer welche Ziele aufrufen können, wodurch der Explosionsradius der Zugriffsrechte jedes einzelnen Anrufers begrenzt wird.

Richten Sie die ausgehende Autorisierung mit einem OAuth-Client ein

Um die ausgehende Autorisierung mit einem OAuth-Client einzurichten, verwenden Sie den AgentCore Identity-Dienst und geben die Client-Anmeldeinformationen an, die Sie erhalten, wenn Sie einen Client entweder in einem integrierten Identitätsanbieter (siehe Einrichtung und Konfiguration des Anbieters) oder in einem benutzerdefinierten Identitätsanbieter erstellen.

So richten Sie die ausgehende Autorisierung mit einem OAuth-Client ein

  1. Registrieren Sie Ihre Client-Anwendung bei einem unterstützten Drittanbieter.

  2. Sie erhalten eine Client-ID, einen geheimen Clientschlüssel und möglicherweise weitere Werte, auf die Sie bei der Einrichtung der ausgehenden Autorisierung verweisen.

  3. Folgen Sie je nach Ihren Anforderungen einem der folgenden Schritte:

  4. Notieren Sie sich den generierten Credential-ARN (credentialProviderArnin der API) und den AWS Secrets Manager Manager-Geheim-ARN (secretArnin der API). Sie werden diese Werte verwenden, wenn Sie Ihr Gateway-Ziel erstellen.

  5. (Wenn Sie eine benutzerdefinierte Gateway-Servicerolle verwenden) Fügen Sie Ihrer Gateway-Servicerolle die folgende identitätsbasierte Richtlinie hinzu:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceOauth2Token", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceOauth2Token", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/oauth2credentialprovider/CredentialName" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Ersetzen Sie die Werte der folgenden Felder:

    • Ersetzen Sie in der GetWorkloadAccessToken Anweisung das GatewayName in der Resource Liste durch den Namen Ihres Gateways.

    • Ersetzen Sie in der GetResourceOauth2Token Anweisung den Wert in der Resource Liste durch den ARN der Anmeldeinformationen, die Sie gerade generiert haben.

    • Ersetzen Sie in der GetSecretValue Anweisung den Wert in der Resource Liste durch den ARN des AWS Geheimnisses, das in der Antwort zurückgegeben wurde, als Sie die Anmeldeinformationen generiert haben.

Beispiele für die Einstellung der OAuth-Clientautorisierung

Die folgenden Beispiele zeigen Ihnen, wie Sie die Autorisierung über einen OAuth-Client für Ihr Gateway-Ziel einrichten:

Beispiel
AgentCore CLI
  1. Die AgentCore CLI-Anmeldeinformationen müssen in einem vorhandenen Agentcore-Projekt ausgeführt werden. Wenn Sie noch keins haben, erstellen Sie zuerst ein Projekt mit. agentcore create

    agentcore add credential \ --name oauth-credential-provider \ --type oauth \ --discovery-url <DiscoveryUrl> \ --client-id <ClientId> \ --client-secret <ClientSecret> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-oauth2-credential-provider \ --name oauth-credential-provider \ --credential-provider-vendor CustomOAuth2 \ --oauth2-provider-config-input '{ "customOAuth2ProviderConfig": { "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } }'
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_oauth2_credential_provider( name="oauth-credential-provider", credentialProviderVendor="CustomOAuth2", oauth2ProviderConfigInput={ "oauthDiscovery": { "discoveryUrl": "<DiscoveryUrl>" }, "clientId": "<ClientId>", "clientSecret": "<ClientSecret>" } )

Richten Sie die ausgehende Autorisierung mit einem API-Schlüssel ein

Um die ausgehende Autorisierung mit einem API-Schlüssel einzurichten, verwenden Sie den AgentCore Identity-Dienst und geben einen API-Schlüssel an, den Sie von einem unterstützten Identitätsanbieter erhalten.

Um die ausgehende Autorisierung mit einem OAuth-Client einzurichten

  1. Registrieren Sie Ihre Client-Anwendung bei einem unterstützten Drittanbieter.

  2. Richten Sie einen API-Schlüssel für den Dienst des Anbieters ein. Notieren Sie sich die folgenden Werte, die Sie angeben, wenn Sie das Gateway-Ziel hinzufügen:

    • Speicherort der Anmeldeinformationen — Gibt an, ob der API-Schlüssel im Header oder als Abfrageparameter platziert werden soll.

    • Präfix für Anmeldeinformationen — Das Präfix für die Anmeldeinformationen (z. B. Inhaber).

  3. Folgen Sie je nach Ihren Anforderungen einem der folgenden Schritte:

  4. Notieren Sie sich die folgenden Werte, die Sie angeben, wenn Sie das Gateway-Ziel hinzufügen:

    • Credential Provider ARN — Ein Amazon Resource Name (ARN), der für den Credential Provider generiert wurde.

    • Name — Der Name, den Sie dem API-Schlüssel gegeben haben.

    • Secret ARN — Ein geheimer ARN von AWS Secrets Manager, der für den API-Schlüssel generiert wurde.

  5. (Wenn Sie eine benutzerdefinierte Gateway-Servicerolle verwenden) Fügen Sie Ihrer Gateway-Servicerolle die folgende identitätsbasierte Richtlinie hinzu:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetWorkloadAccessToken", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default", "arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/GatewayName-*" ] }, { "Sid": "GetResourceApiKey", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourceApiKey", ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:token-vault/TokenVaultId/apikeycredentialprovider/Name" ] }, { "Sid": "GetSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretId" ] } ] }

    Ersetzen Sie die Werte der folgenden Felder:

    • Ersetzen Sie in der GetWorkloadAccessToken Anweisung das GatewayName in der Resource Liste durch den Namen Ihres Gateways.

    • Ersetzen Sie in der GetResourceApiKey Anweisung den Wert in der Resource Liste durch den ARN der Anmeldeinformationen, die Sie gerade generiert haben.

    • Ersetzen Sie in der GetSecretValue Anweisung den Wert in der Resource Liste durch den ARN des AWS Geheimnisses, das in der Antwort zurückgegeben wurde, als Sie die Anmeldeinformationen generiert haben.

Beispiele für das Setzen eines API-Schlüssels

Die folgenden Beispiele zeigen Ihnen, wie Sie einen API-Schlüssel für Ihr Gateway-Ziel festlegen:

Beispiel
AgentCore CLI
  1. Die AgentCore CLI-Anmeldeinformationen müssen in einem vorhandenen Agentcore-Projekt ausgeführt werden. Wenn Sie noch keins haben, erstellen Sie zuerst ein Projekt mit. agentcore create

    agentcore add credential \ --name api-key-credential-provider \ --type api-key \ --api-key <API_KEY_VALUE> agentcore deploy
AWS CLI
  1. aws bedrock-agentcore-control create-api-key-credential-provider \ --name api-key-credential-provider \ --api-key <API_KEY_VALUE>
Boto3
  1. import boto3 client = boto3.client("bedrock-agentcore-control") client.create_api_key_credential_provider( name="api-key-credential-provider", apiKey="<API_KEY_VALUE>" )