View a markdown version of this page

Resource-based Richtlinien für Amazon Bedrock AgentCore - Amazon Grundgestein AgentCore

Resource-based Richtlinien für Amazon Bedrock AgentCore

Resource-based Mit den Richtlinien in Amazon Bedrock AgentCore können Sie steuern, welche Principals (AWS Konten, IAM-Benutzer oder IAM-Rollen) Ihre Amazon AgentCore Bedrock-Ressourcen aufrufen und verwalten können (derzeit unterstützt für Runtime, Gateway und Memory). Sie können IAM-style Richtlinien direkt an Ihre Ressourcen anhängen, um Regeln dafür zu definieren, wer Runtime-Sitzungen starten, ein Gateway aufrufen, auf Speicher zugreifen oder andere Verwaltungs- und Aufrufaktionen ausführen kann.

Resource-based Richtlinien arbeiten mit identitätsbasierten IAM-Richtlinien zusammen, um die Zugriffskontrolle für Ihre Amazon Bedrock-Ressourcen zu ermöglichen. AgentCore Während identitätsbasierte Richtlinien an IAM-Identitäten angehängt werden und angeben, welche Aktionen sie ausführen können, werden ressourcenbasierte Richtlinien direkt mit Ressourcen verknüpft und geben an, wer darauf zugreifen kann.

Unterstützte Ressourcen

Amazon Bedrock AgentCore unterstützt ressourcenbasierte Richtlinien für die folgenden Ressourcen:

  • Agent Runtime und Agent Endpoints — Steuern Sie den Zugriff auf Agentenaufruf- und Verwaltungsvorgänge

  • Gateway — Steuern Sie den Zugriff auf Gateway-Aufrufvorgänge

  • Speicher — Steuert den Zugriff auf Speicheroperationen

Wie funktionieren ressourcenbasierte Richtlinien

Identity-based im Vergleich zu ressourcenbasierten Richtlinien

Aspekt Identity-Based Richtlinie Resource-Based Politik

Attachment

An IAM-Benutzer, -Rollen oder Gruppen angehängt

Direkt an Amazon AgentCore Bedrock-Ressourcen angehängt

Verwaltung

Wird über IAM AWS verwaltet

Verwaltet über Amazon Bedrock APIs AgentCore

Spezifiziert

Aktionen und Ressourcen (Principal ist implizit)

Prinzipien, Aktionen und Bedingungen (Ressource ist implizit)

Anwendungsfall

Definieren Sie, was eine Identität bewirken kann

Definieren Sie, wer auf eine Ressource zugreifen kann

Richtlinienevaluierung

Wenn eine Anfrage an eine Amazon AgentCore Bedrock-Ressource gestellt wird, werden sowohl identitäts- als auch ressourcenbasierte Richtlinien AWS bewertet. Die folgende Tabelle zeigt, wie sich verschiedene Richtlinienkombinationen auf den Zugriff auswirken:

IAM-Richtlinie Ressourcenrichtlinie Ergebnis

Gewährt Zugriff

Still

Zulässig

Gewährt Zugriff

Gewährt Zugriff

Zulässig

Gewährt Zugriff

Verweigert den Zugriff

Nicht zulässig

Still

Still

Nicht zulässig

Still

Gewährt Zugriff

Zulässig

Still

Verweigert den Zugriff

Nicht zulässig

Verweigert den Zugriff

Still

Nicht zulässig

Verweigert den Zugriff

Erlaubt den Zugriff

Nicht zulässig

Verweigert den Zugriff

Verweigert den Zugriff

Nicht zulässig

Die wichtigsten Prinzipien:

  • Explizite Ablehnung gewinnt immer: Wenn eine Richtlinie die Aktion ausdrücklich verweigert, wird der Zugriff unabhängig von anderen Richtlinien verweigert

  • Jede Richtlinie kann zulassen: Wenn entweder eine identitäts- oder eine ressourcenbasierte Richtlinie die Aktion zulässt (und keine Richtlinie sie verweigert), wird der Zugriff gewährt

  • Standardeinstellung verweigern: Wenn keine Richtlinie eine Aktion ausdrücklich zulässt, wird der Zugriff verweigert

Hierarchische Autorisierung für Agentenlaufzeit und Endpunkt

Agenten-Endpunkte sind adressierbare Zugriffspunkte für bestimmte Versionen einer Agenten-Laufzeit. Jeder Endpunkt verweist auf eine bestimmte Version der Laufzeitkonfiguration, wobei ein DEFAULT-Endpunkt automatisch zur neuesten Version weitergeleitet wird. Bei der Autorisierung von Runtime-API-Vorgängen wie InvokeAgentRuntime und InvokeAgentRuntimeCommand werden sowohl identitäts- als auch ressourcenbasierte Richtlinien sowohl für die Agent-Laufzeit als auch für den aufgerufenen Agenten-Endpunkt AWS ausgewertet.

Damit eine Anfrage autorisiert werden kann, müssen die folgenden Bedingungen erfüllt sein:

  • Die identitätsbasierten Richtlinien, die dem aufrufenden Prinzipal zugeordnet sind, müssen die Aktion sowohl für die Agent-Laufzeit als auch für die Agenten-Endpunktressourcen zulassen

  • Die ressourcenbasierte Richtlinie für die Agent-Laufzeit muss die Aktion zulassen (sofern eine Richtlinie vorhanden ist)

  • Die ressourcenbasierte Richtlinie auf dem Agenten-Endpunkt muss die Aktion zulassen (sofern eine Richtlinie vorhanden ist)

Wichtig

Um kontenübergreifenden Zugriff auf einen Prinzipal zu ermöglichen, müssen Sie ressourcenbasierte Richtlinien erstellen, die den Zugriff sowohl für die Agent-Laufzeit als auch für den Agenten-Endpunkt gewähren. Wenn eine der Ressourcen den Zugriff verweigert oder eine ausdrückliche Zulassungsanweisung fehlt, wird die Anfrage verweigert.

Beispiel: Um kontenübergreifenden Zugriff zu gewähren, sind Richtlinien für beide Ressourcen erforderlich:

// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }

Überlegungen zum Authentifizierungstyp

Die Art und Weise, wie Sie ressourcenbasierte Richtlinien schreiben, hängt vom Authentifizierungstyp ab, der für Ihre Agent-Runtime oder Ihr Gateway konfiguriert ist:

SigV4-Authentifizierung

Verwenden Sie bestimmte AWS Prinzipale (IAM-Benutzer, Rollen oder Konten) im Element. Principal Beispiel: "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"} . Die Richtlinie wird in Verbindung mit den IAM-Berechtigungen des Aufrufers bewertet. Ein Beispiel, das eine Laufzeit darauf beschränkt, nur von einem AgentCore Gateway aufgerufen zu werden, finden Sie unter Beschränken Sie den eingehenden IAM-Aufruf (SigV4) auf Ihr Gateway.

OAuth-Authentifizierung

In Richtlinienerklärungen muss der Platzhalterprinzipal („Principal“: „*“) verwendet werden. OAuth-Token werden vor der Richtlinienbewertung von AWS Identity Service validiert. Nur authentifizierte OAuth-Benutzer mit gültigen JWT-Token vom registrierten Identity Provider (IdP) können die Ressource aufrufen. Anonyme oder nicht authentifizierte Anfragen werden vor der Richtlinienbewertung abgelehnt. Verwenden Sie Bedingungsschlüssel, um den Zugriff einzuschränken (z. B.aws:SourceVpc,aws:SourceVpce).

Wichtig

Eine Agent-Runtime oder ein Gateway können zum Zeitpunkt der Erstellung nur entweder mit Sigv4- ODER OAuth-Authentifizierung konfiguriert werden, nicht mit beiden gleichzeitig. Das bedeutet, dass eine einzige ressourcenbasierte Richtlinie nur für einen Authentifizierungstyp gilt.

Richtlinienstruktur

Eine ressourcenbasierte Richtlinie ist ein JSON-Dokument mit der folgenden Struktur:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
Wichtig

Das Resource Feld im Richtliniendokument muss den genauen ARN der Ressource enthalten, an die die Richtlinie angehängt ist. Die Verwendung von „Resource“: „*“ wird nicht unterstützt und führt zu einem Validierungsfehler.

Unterstützte Aktionen

Runtime-Aktionen des Agenten

  • bedrock-agentcore:InvokeAgentRuntime— Rufen Sie eine Agenten-Laufzeit auf

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Ruft einen Agenten-Runtime-Endpunkt mit Header auf X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:InvokeAgentRuntimeCommand- Führt einen Shell-Befehl in einer aktiven Runtime-Sitzung aus

  • bedrock-agentcore:InvokeAgentRuntimeCommandShell- Öffnet eine interaktive WebSocket Shell-Sitzung in einer aktiven Runtime-Sitzung

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Ruft eine Agenten-Laufzeit mit WebSocket Stream auf

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Ruft eine Agenten-Laufzeit mit WebSocket Stream mit Header auf X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:StopRuntimeSession- Stoppt eine aktive Runtime-Sitzung

  • bedrock-agentcore:GetAgentCard- Rufen Sie die Karteninformationen des Agenten ab

Gateway-Aktionen

  • bedrock-agentcore:InvokeGateway- Rufen Sie ein Gateway auf

Speicheraktionen

  • bedrock-agentcore:GetMemory- Ruft eine Speicherressource ab

  • bedrock-agentcore:UpdateMemory- Aktualisieren Sie eine Speicherressource

  • bedrock-agentcore:DeleteMemory- Löscht eine Speicherressource

  • bedrock-agentcore:CreateEvent- Erzeugt ein Ereignis in einer Speicherressource

  • bedrock-agentcore:GetEvent- Ruft ein Ereignis aus einer Speicherressource ab

  • bedrock-agentcore:DeleteEvent- Löscht ein Ereignis aus einer Speicherressource

  • bedrock-agentcore:ListEvents- Listet Ereignisse aus einer Speicherressource auf

  • bedrock-agentcore:ListActors- Listet Schauspieler aus einer Speicherressource auf

  • bedrock-agentcore:ListSessions- Listet Sitzungen aus einer Speicherressource auf

  • bedrock-agentcore:GetMemoryRecord- Ruft einen Speicherdatensatz aus einer Speicherressource ab

  • bedrock-agentcore:ListMemoryRecords- Listet Speicherdatensätze aus einer Speicherressource auf

  • bedrock-agentcore:RetrieveMemoryRecords- Sucht nach Speicherdatensätzen aus einer Speicherressource

  • bedrock-agentcore:DeleteMemoryRecord- Löscht einen Speicherdatensatz aus einer Speicherressource

  • bedrock-agentcore:BatchCreateMemoryRecords- Batch-Erstellung von Speicherdatensätzen in einer Speicherressource

  • bedrock-agentcore:BatchUpdateMemoryRecords- Batch-Aktualisierung von Speicherdatensätzen in einer Speicherressource

  • bedrock-agentcore:BatchDeleteMemoryRecords- Speicherdatensätze in einer Speicherressource stapelweise löschen

  • bedrock-agentcore:StartMemoryExtractionJob- Startet einen Extraktionsauftrag innerhalb einer Speicherressource

  • bedrock-agentcore:ListMemoryExtractionJobs- Listet Extraktionsaufträge innerhalb einer Speicherressource auf

Bedingungsschlüssel

Sie können Bedingungsschlüssel verwenden, um die Zugriffskontrolle in Ihren Richtlinien weiter zu verfeinern. Eine vollständige Liste der verfügbaren Bedingungsschlüssel finden Sie unter Bedrock AgentCore Condition Keys und AWS Global Condition Context Keys.

Allgemeine Anwendungsfälle und Beispiele

Dieser Abschnitt enthält praktische Beispiele für ressourcenbasierte Richtlinien für gängige Szenarien. Das Resource Feld in jedem Beispiel muss den genauen ARN der Ressource enthalten, an die die Richtlinie angehängt ist. Ersetzen Sie die Beispiel-ARNs durch Ihre tatsächlichen Ressourcen-ARNs.

Rollen in einem anderen zulassen AWS Konto

Gewähren Sie API-Zugriff auf bestimmte Rollen in einem anderen AWS Konto:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Datenverkehr basierend auf der Quell-IP-Adresse verweigern

Blockieren Sie eingehenden Datenverkehr aus bestimmten IP-Adressbereichen:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Traffic nur von einer bestimmten VPC zulassen

Beschränken Sie den Zugriff auf Anfragen von einer bestimmten VPC:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

OAuth-Authentifizierung mit VPC-Einschränkung

Wenn Ihre Agent-Runtime oder Ihr Gateway mit der OAuth-Authentifizierung konfiguriert sind, müssen Sie einen Platzhalterprinzipal verwenden. In diesem Beispiel werden OAuth-authenticated Anfragen auf eine bestimmte VPC beschränkt:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
Wichtig

Der Platzhalterprinzipal („Principal“: „*“) ist für die OAuth-Authentifizierung erforderlich. OAuth-Token werden vor der Richtlinienbewertung von AWS Identity Service validiert. Nur Benutzer mit gültigen JWT-Token von Ihrem registrierten Identity Provider können auf die Ressource zugreifen. Anonyme oder nicht authentifizierte Anfragen werden abgelehnt, bevor die Richtlinie bewertet wird. Verwenden Sie Bedingungsschlüssel (wieaws:SourceVpc,aws:SourceVpce), um den Zugriff weiter einzuschränken

Verwaltung von Ressourcenrichtlinien

Wählen Sie eine der folgenden Methoden aus:

Beispiel
AWS CLI
  1. ====== Erstellen oder aktualisieren Sie eine Ressourcenrichtlinie

    Verwenden Sie den put-resource-policy-Befehl:

    aws bedrock-agentcore-control put-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID \ --policy file://policy.json

    Holen Sie sich eine Ressourcenrichtlinie

    Verwenden Sie den get-resource-policy-Befehl:

    aws bedrock-agentcore-control get-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID

    Löschen Sie eine Ressourcenrichtlinie

    Verwenden Sie den delete-resource-policy-Befehl:

    aws bedrock-agentcore-control delete-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID
Python (Boto3)
  1. Die folgenden Beispiele zeigen, wie Ressourcenrichtlinien mit dem AWS Python SDK (Boto3) verwaltet werden:

    import boto3 import json client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') # Define the resource ARN resource_arn = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' # Put resource policy # Note: The Resource field must match the resource ARN to which the policy is attached policy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": resource_arn } ] } response = client.put_resource_policy( resourceArn=resource_arn, policy=json.dumps(policy) ) # Get resource policy response = client.get_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' ) print(response['policy']) # Delete resource policy response = client.delete_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' )

Bewährte Methoden für die Gewährleistung der Sicherheit

Gewähren der geringsten Berechtigung

Gewähren Sie nur die Mindestberechtigungen, die für Ihren Anwendungsfall erforderlich sind:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Vermeiden Sie einen verwirrten Stellvertreter

Verwenden Sie immer Bedingungsschlüssel, wenn Sie Zugriff auf AWS Dienste gewähren:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }

Verwenden Sie „Explizite Ablehnung“ für kritische Kontrollen

Verwenden Sie explizite Ablehnungsbefehle für sicherheitskritische Einschränkungen:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }

Fehlerbehebung

Fehler aufgrund einer Zugriffsverweigerung

Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten:

  • Überprüfen Sie beide Richtlinien: Überprüfen Sie sowohl identitätsbasierte als auch ressourcenbasierte Richtlinien

  • Suchen Sie nach expliziten Ablehnungen: Eine ausdrückliche Ablehnung in einer Richtlinie hat Vorrang vor allen erlaubten

  • Prinzipal-ARN überprüfen: Stellen Sie sicher, dass der Prinzipal-ARN in der Richtlinie mit dem Anrufer übereinstimmt

  • Bedingungen überprüfen: Stellen Sie sicher, dass alle Bedingungsschlüssel als wahr bewertet werden

  • SCPs überprüfen: Dienststeuerungsrichtlinien von Organisationen können Ressourcenrichtlinien außer Kraft setzen

Fehler bei der Richtlinienvalidierung

Häufige Fehler bei der Überprüfung von Richtlinien:

  • Ungültiges JSON: Stellen Sie sicher, dass Ihre Richtlinie ein gültiges JSON ist

  • Ungültiges ARN-Format: Stellen Sie sicher, dass alle ARNs dem richtigen Format entsprechen

  • Nicht unterstützte Aktionen: Stellen Sie sicher, dass alle Aktionen für den Ressourcentyp unterstützt werden

  • Fehlende erforderliche Elemente: Stellen Sie sicher, dass Version, Aussage, Wirkung, Prinzipal und Aktion vorhanden sind