View a markdown version of this page

Resource-based politiques relatives à Amazon Bedrock AgentCore - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Resource-based politiques relatives à 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 pour définir des règles permettant de démarrer des sessions d'exécution, d'appeler une passerelle, d'accéder à la mémoire ou d'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 fournir un contrôle d'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 directement associées aux ressources et spécifient qui peut y accéder.

Ressources prises en charge

Amazon Bedrock AgentCore prend en charge des 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 à l'appel de l'agent et aux opérations de gestion

  • Passerelle - Contrôlez l'accès aux opérations d'invocation de la passerelle

  • Mémoire - Contrôlez l'accès aux opérations de mémoire

Comment fonctionnent les politiques fondé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

Attaché à des utilisateurs, des rôles ou des groupes IAM

Connecté 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éfinir ce que peut faire une identité

Définissez 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

Accès aux subventions

Silencieux

Autorisé

Accès aux subventions

Accès aux subventions

Autorisé

Accès aux subventions

Refuse l'accès

Refusé

Silencieux

Silencieux

Refusé

Silencieux

Accès aux subventions

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é indépendamment des autres politiques

  • L'une ou l'autre des politiques peut autoriser  : si une stratégie 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'exécution de l'agent et le terminal

Les points de terminaison des agents sont des points d'accès adressables à des versions spécifiques de l'environnement d'exécution d'un agent. Chaque point de terminaison pointe vers une version particulière de la configuration d'exécution, un point de terminaison DEFAULT acheminant automatiquement vers la dernière version. Lors de l'autorisation d'opérations d'API d'exécution telles que InvokeAgentRuntime etInvokeAgentRuntimeCommand, AWS évalue à la fois les politiques basées sur l'identité et les ressources pour l'exécution 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 l'exécution de l'agent et sur les ressources de 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 (si une politique existe)

  • La politique basée sur les ressources sur le terminal de l'agent doit autoriser l'action (si une politique existe)

Important

Pour fournir un accès intercomptes à un principal, 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 contient pas de déclaration d'autorisation explicite, la demande sera refusée.

Exemple : L'octroi d'un accès entre comptes nécessite des politiques relatives aux 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 au type 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 principals 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 l'appel d'un environnement d'exécution uniquement par une AgentCore passerelle, consultez Restreindre l'invocation entrante IAM (Sigv4) vers votre passerelle.

Authentification OAuth

Doit utiliser un caractère générique principal (« Principal » : « * ») dans les déclarations de politique. Les jetons OAuth sont validés par AWS Identity Service avant l'évaluation de la politique. 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 exempleaws: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 s'applique à 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 stratégie est attachée. Utiliser « Ressource » : « * » n'est pas pris en charge et entraînera une erreur de validation.

Actions prises en charge

Actions d'exécution de l'agent

  • bedrock-agentcore:InvokeAgentRuntime- Invoquer un moteur d'exécution d'un agent

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Invoque le point de terminaison d'exécution d'un agent avec X-Amzn-Bedrock-AgentCore-Runtime-User-Id un en-tête

  • bedrock-agentcore:InvokeAgentRuntimeCommand- Exécute une commande shell dans une session d'exécution active

  • bedrock-agentcore:InvokeAgentRuntimeCommandShell- Ouvrez une session WebSocket shell interactive dans une session d'exécution active

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Invoquer un environnement d'exécution d'un agent avec stream WebSocket

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Invoquer un environnement d'exécution d'un agent avec un WebSocket flux avec en-tête X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • 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 de mémoire

  • bedrock-agentcore:GetMemory- Récupérer 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éer un événement dans une ressource de mémoire

  • bedrock-agentcore:GetEvent- Récupérer un événement à partir d'une ressource mémoire

  • bedrock-agentcore:DeleteEvent- Supprimer un événement d'une ressource de mémoire

  • bedrock-agentcore:ListEvents- Répertorier les événements à partir d'une ressource de mémoire

  • bedrock-agentcore:ListActors- Répertorier les acteurs à partir d'une ressource de mémoire

  • bedrock-agentcore:ListSessions- Répertorier les sessions à partir d'une ressource mémoire

  • bedrock-agentcore:GetMemoryRecord- Obtenir un enregistrement mémoire à partir d'une ressource mémoire

  • bedrock-agentcore:ListMemoryRecords- Répertorier les enregistrements de mémoire à partir d'une ressource 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 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 mémoire

  • bedrock-agentcore:StartMemoryExtractionJob- Lancer une tâche d'extraction dans une ressource mémoire

  • bedrock-agentcore:ListMemoryExtractionJobs- Répertorier les tâches d'extraction dans une ressource mémoire

Clés de condition

Vous pouvez utiliser des clés de condition pour affiner le contrôle d'accès dans vos politiques. Pour une liste complète des clés de condition disponibles, consultez les sections Clés de AgentCore condition du socle et Clés contextuelles de la condition AWS globale.

Exemples et cas d'utilisation courants

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 provenant uniquement d'un VPC spécifique

Restreignez 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 principal joker. 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 principal joker (« Principal » : « * ») est requis pour l'authentification OAuth. Les jetons OAuth sont validés par AWS Identity Service avant l'évaluation de la politique. Seuls les utilisateurs possédant des jetons JWT valides provenant de 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 les 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
AWS CLI
  1. ====== Créer ou mettre à jour une politique de ressources

    Utilisez la commande put-resource-policy :

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

    Obtenir une politique en matière de ressources

    Utilisez la commande get-resource-policy :

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

    Supprimer une politique de ressources

    Utilisez la commande delete-resource-policy :

    aws bedrock-agentcore-control delete-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID
Python (Boto3)
  1. Les exemples suivants montrent comment gérer les politiques relatives aux ressources à l'aide du SDK AWS Python (Boto3) :

    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' )

Bonnes pratiques de sécurité

Accorder le moindre privilège

N'accordez que 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 les députés

Utilisez toujours les clés de condition pour autoriser 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 un refus explicite pour les contrôles critiques

Utilisez des instructions 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 le message d'erreur « Accès refusé » s'affiche :

  • Vérifiez les deux politiques  : vérifiez à la fois les politiques basées sur l'identité et les politiques basées sur les ressources

  • Recherchez les refus explicites  : un refus explicite dans n'importe quelle politique remplace toutes les autorisations

  • Vérifier l'ARN principal  : assurez-vous que l'ARN principal de la politique correspond à l'appelant

  • Vérifiez les conditions  : vérifiez que toutes les clés de condition sont considérées comme vraies

  • 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 bon format

  • 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