View a markdown version of this page

Resource-based politiques pour Amazon Bedrock AgentCore - Amazon Bedrock AgentCore

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.

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 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 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
AWS CLI
  1. ====== Création ou mise à jour d'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

    Obtenez 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 de 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

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