Resource-based politiques pour Amazon Bedrock AgentCore
Resource-based les politiques d'Amazon Bedrock vous AgentCore permettent de contrôler quels principaux (AWS comptes, utilisateurs IAM ou rôles IAM) peuvent invoquer et gérer vos AgentCore ressources Amazon Bedrock (actuellement prises en charge pour Runtime, Gateway et Memory). Vous pouvez associer des IAM-style politiques directement à vos ressources afin de définir des règles concernant les personnes autorisées à démarrer des sessions d'exécution, à appeler une passerelle, à accéder à la mémoire ou à effectuer d'autres actions de gestion et d'invocation.
Resource-based les politiques fonctionnent conjointement avec les politiques IAM basées sur l'identité pour contrôler l'accès à vos ressources Amazon Bedrock. AgentCore Alors que les politiques basées sur l'identité sont associées aux identités IAM et spécifient les actions qu'elles peuvent effectuer, les politiques basées sur les ressources sont associées directement aux ressources et précisent qui peut y accéder.
Rubriques
Ressources prises en charge
Amazon Bedrock AgentCore prend en charge les politiques basées sur les ressources pour les ressources suivantes :
-
Exécution de l'agent et points de terminaison de l'agent : contrôlez l'accès aux opérations d'appel et de gestion des agents
-
Passerelle : contrôle de l'accès aux opérations d'invocation de la passerelle
-
Mémoire : contrôle de l'accès aux opérations de mémoire
Comment fonctionnent les politiques basées sur les ressources
Identity-based par rapport aux politiques basées sur les ressources
| Aspect | Identity-Based Politique | Resource-Based Politique |
|---|---|---|
|
Réseau de transit par passerelle |
Associé à des utilisateurs, à des rôles ou à des groupes IAM |
Rattaché directement aux ressources Amazon Bedrock AgentCore |
|
Gestion |
Géré via AWS IAM |
Géré via les API Amazon Bedrock AgentCore |
|
Spécifie |
Actions et ressources (le principal est implicite) |
Principes, actions et conditions (la ressource est implicite) |
|
Cas d’utilisation |
Définissez ce que peut faire une identité |
Définir qui peut accéder à une ressource |
Évaluation des politiques
Lorsqu'une demande est adressée à une AgentCore ressource Amazon Bedrock, AWS évalue à la fois les politiques basées sur l'identité et les ressources. Le tableau suivant montre comment les différentes combinaisons de politiques affectent l'accès :
| Stratégie IAM | Stratégie de ressources | Résultat |
|---|---|---|
|
Accorde l'accès |
Silencieux |
Autorisé |
|
Accorde l'accès |
Accorde l'accès |
Autorisé |
|
Accorde l'accès |
Refuse l'accès |
Refusé |
|
Silencieux |
Silencieux |
Refusé |
|
Silencieux |
Accorde l'accès |
Autorisé |
|
Silencieux |
Refuse l'accès |
Refusé |
|
Refuse l'accès |
Silencieux |
Refusé |
|
Refuse l'accès |
Permet l'accès |
Refusé |
|
Refuse l'accès |
Refuse l'accès |
Refusé |
Principes clés :
-
Le refus explicite gagne toujours : si une politique refuse explicitement l'action, l'accès est refusé quelles que soient les autres politiques
-
L'une ou l'autre des politiques peut autoriser : si une politique basée sur l'identité ou sur les ressources autorise l'action (et qu'aucune politique ne la refuse), l'accès est accordé
-
Refus par défaut : si aucune politique n'autorise explicitement une action, l'accès est refusé
Autorisation hiérarchique pour l'environnement d'exécution et le point de terminaison
Les points de terminaison d'un agent sont des points d'accès adressables à des versions spécifiques d'un environnement d'exécution d'agent. Chaque point de terminaison pointe vers une version particulière de la configuration d'exécution, un point de terminaison DEFAULT étant automatiquement acheminé vers la dernière version. Lors de l'autorisation d'opérations d'API d'exécution telles que InvokeAgentRuntime etInvokeAgentRuntimeCommand, AWS évalue les politiques basées sur l'identité et les ressources à la fois pour le runtime de l'agent et le point de terminaison de l'agent invoqué.
Pour qu'une demande soit autorisée, les conditions suivantes doivent être remplies :
-
Les politiques basées sur l'identité associées au principal appelant doivent autoriser l'action à la fois sur le runtime de l'agent et sur les ressources du point de terminaison de l'agent
-
La politique basée sur les ressources sur l'environnement d'exécution de l'agent doit autoriser l'action (s'il existe une politique)
-
La politique basée sur les ressources sur le point de terminaison de l'agent doit autoriser l'action (s'il existe une politique)
Important
Pour fournir un accès entre comptes à un mandant, vous devez créer des politiques basées sur les ressources accordant l'accès à la fois au runtime de l'agent et au point de terminaison de l'agent. Si l'une des ressources refuse l'accès ou ne dispose pas d'une instruction d'autorisation explicite, la demande sera refusée.
Exemple : l'octroi d'un accès entre comptes nécessite des politiques sur les deux ressources :
// 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" } ] }
Considérations relatives aux types d'authentification
La façon dont vous rédigez des politiques basées sur les ressources dépend du type d'authentification configuré pour votre Agent Runtime ou Gateway :
- Authentification SigV4
-
Utilisez des AWS principes spécifiques (utilisateurs, rôles ou comptes IAM) dans l'
Principalélément. Par exemple :"Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. La politique est évaluée conjointement avec les autorisations IAM de l'appelant. Pour un exemple qui limite un environnement d'exécution à être invoqué uniquement par une AgentCore passerelle, voir Restreindre l'appel entrant IAM (SigV4) à votre passerelle. - Authentification OAuth
-
Doit utiliser un caractère générique (« Principal » : « * ») dans les déclarations de politique. Les jetons OAuth sont validés par AWS Identity Service avant l'évaluation des politiques. Seuls les utilisateurs OAuth authentifiés avec des jetons JWT valides provenant du fournisseur d'identité (IdP) enregistré peuvent invoquer la ressource. Les demandes anonymes ou non authentifiées sont rejetées avant l'évaluation de la politique. Utilisez les touches de condition pour restreindre l'accès (par exemple
aws:SourceVpc,,aws:SourceVpce).
Important
Un environnement d'exécution ou une passerelle d'agent ne peuvent être configurés qu'avec l'authentification Sigv4 OU OAuth au moment de la création, et non les deux simultanément. Cela signifie qu'une seule politique basée sur les ressources ne s'applique qu'à un seul type d'authentification.
Structure d’une politique
Une politique basée sur les ressources est un document JSON dont la structure est la suivante :
{ "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" } } } ] }
Important
Le Resource champ du document de politique doit contenir l'ARN exact de la ressource à laquelle la politique est attachée. L'utilisation de « Resource » : « * » n'est pas prise en charge et entraînera une erreur de validation.
Actions prises en charge
Actions d'exécution de l'agent
-
bedrock-agentcore:InvokeAgentRuntime- Invoque un environnement d'exécution d'agent -
bedrock-agentcore:InvokeAgentRuntimeForUser- Invoque un point de terminaison d'exécution d'un agent avec X-Amzn-Bedrock-AgentCore-Runtime-User-Id en-tête -
bedrock-agentcore:InvokeAgentRuntimeCommand- Exécute une commande shell dans une session d'exécution active -
bedrock-agentcore:InvokeAgentRuntimeCommandShell- Ouvre une session WebSocket shell interactive dans une session d'exécution active -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Invoque un environnement d'exécution d'agent avec WebSocket stream -
bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Invoque un environnement d'exécution d'agent avec un WebSocket flux avec X-Amzn-Bedrock-AgentCore-Runtime-User-Id en-tête -
bedrock-agentcore:StopRuntimeSession- Arrête une session d'exécution active -
bedrock-agentcore:GetAgentCard- Récupérez les informations de la carte d'agent
Actions relatives à la passerelle
-
bedrock-agentcore:InvokeGateway- Invoquer une passerelle
Actions liées à la mémoire
-
bedrock-agentcore:GetMemory- Récupère une ressource mémoire -
bedrock-agentcore:UpdateMemory- Mettre à jour une ressource mémoire -
bedrock-agentcore:DeleteMemory- Supprimer une ressource mémoire -
bedrock-agentcore:CreateEvent- Création d'un événement dans une ressource de mémoire -
bedrock-agentcore:GetEvent- Récupère un événement depuis une ressource de mémoire -
bedrock-agentcore:DeleteEvent- Supprimer un événement d'une ressource de mémoire -
bedrock-agentcore:ListEvents- Lister les événements à partir d'une ressource de mémoire -
bedrock-agentcore:ListActors- Lister les acteurs à partir d'une ressource de mémoire -
bedrock-agentcore:ListSessions- Lister les sessions à partir d'une ressource de mémoire -
bedrock-agentcore:GetMemoryRecord- Obtenir un enregistrement mémoire à partir d'une ressource mémoire -
bedrock-agentcore:ListMemoryRecords- Liste les enregistrements de mémoire à partir d'une ressource de mémoire -
bedrock-agentcore:RetrieveMemoryRecords- Rechercher des enregistrements de mémoire à partir d'une ressource de mémoire -
bedrock-agentcore:DeleteMemoryRecord- Supprimer un enregistrement mémoire d'une ressource mémoire -
bedrock-agentcore:BatchCreateMemoryRecords- Création par lots d'enregistrements de mémoire dans une ressource de mémoire -
bedrock-agentcore:BatchUpdateMemoryRecords- Mise à jour par lots des enregistrements de mémoire dans une ressource mémoire -
bedrock-agentcore:BatchDeleteMemoryRecords- Suppression par lots d'enregistrements de mémoire dans une ressource de mémoire -
bedrock-agentcore:StartMemoryExtractionJob- Lancer une tâche d'extraction dans une ressource mémoire -
bedrock-agentcore:ListMemoryExtractionJobs- Lister les tâches d'extraction dans une ressource de mémoire
Clés de condition
Vous pouvez utiliser les clés de condition pour affiner davantage le contrôle d'accès dans vos politiques. Pour une liste complète des clés de condition disponibles, voir Clés de AgentCore condition Bedrock et Clés contextuelles de condition AWS globale.
Cas d'utilisation courants et exemples
Cette section fournit des exemples pratiques de politiques basées sur les ressources pour des scénarios courants. Le Resource champ de chaque exemple doit contenir l'ARN exact de la ressource à laquelle la politique est attachée. Remplacez les exemples d'ARN par les ARN de vos ressources réelles.
Autoriser les rôles dans un autre AWS compte
Accordez l'accès à l'API à des rôles spécifiques dans un autre AWS compte :
// 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" } ] }
Refuser le trafic en fonction de l'adresse IP source
Bloquez le trafic entrant provenant de plages d'adresses IP spécifiques :
// 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" ] } } } ] }
Autoriser le trafic uniquement en provenance d'un VPC spécifique
Limitez l'accès aux demandes provenant d'un VPC spécifique :
// 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" } } } ] }
Authentification OAuth avec restriction VPC
Lorsque votre Agent Runtime ou Gateway est configuré avec l'authentification OAuth, vous devez utiliser un caractère générique principal. Cet exemple limite les OAuth-authenticated demandes à un VPC spécifique :
// 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" } } } ] }
Important
Le caractère générique principal (« Principal » : « * ») est requis pour l'authentification OAuth. Les jetons OAuth sont validés par AWS Identity Service avant l'évaluation des politiques. Seuls les utilisateurs possédant des jetons JWT valides fournis par votre fournisseur d'identité enregistré peuvent accéder à la ressource. Les demandes anonymes ou non authentifiées sont rejetées avant l'évaluation de la politique. Utilisez des touches de condition (commeaws:SourceVpc,aws:SourceVpce) pour restreindre davantage l'accès
Gestion des politiques relatives aux ressources
Sélectionnez l'une des méthodes suivantes :
Exemple
Bonnes pratiques de sécurité
Accorder le moindre privilège
Accordez uniquement les autorisations minimales nécessaires à votre cas d'utilisation :
// 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" } ] }
Prévenir la confusion chez le député
Utilisez toujours des clés de condition lorsque vous accordez l'accès aux AWS services :
// 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" } } } ] }
Utiliser le refus explicite pour les contrôles critiques
Utilisez des déclarations de refus explicites pour les restrictions critiques en matière de sécurité :
// 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" } } } ] }
Résolution des problèmes
Erreurs d’accès refusé
Si vous recevez un message d'erreur « Accès refusé » :
-
Vérifiez les deux politiques : vérifiez à la fois les politiques basées sur l'identité et les ressources
-
Recherchez les refus explicites : un refus explicite dans une politique remplace toutes les autorisations
-
Vérifier l'ARN principal : assurez-vous que l'ARN principal de la politique correspond à celui de l'appelant
-
Vérifier les conditions : vérifier que toutes les clés de condition sont validées
-
Révision des SCP : les politiques de contrôle des services de l'organisation peuvent remplacer les politiques relatives aux ressources
Erreurs de validation des politiques
Erreurs courantes de validation des politiques :
-
JSON non valide : assurez-vous que votre politique est un JSON valide
-
Format d'ARN non valide : vérifiez que tous les ARN suivent le format correct
-
Actions non prises en charge : vérifiez que toutes les actions sont prises en charge pour le type de ressource
-
Éléments obligatoires manquants : Assurez-vous que la version, la déclaration, l'effet, le principal et l'action sont présents