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.
Themen
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.
PrincipalBeispiel:"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
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