Rôles IAM pour les paiements AgentCore
Résumé des rôles
AgentCore payments utilise un modèle IAM à quatre rôles qui sépare les opérations d'administration, de gestion, d'exécution des agents et de service. Configurez les autorisations IAM en fonction du personnage correspondant à votre rôle.
| Role | Objectif |
|---|---|
|
Administrateur (ControlPlaneRole) |
Gère les gestionnaires de paiement, les connecteurs et les fournisseurs d'identifiants |
|
Agent développeur (ManagementRole) |
Gère les instruments de paiement et les sessions, ne peut pas exécuter les paiements |
|
Exécution du paiement (ProcessPaymentRole) |
Exécute les transactions de paiement pour le compte des agents |
|
Rôle de service (ResourceRetrievalRole) |
Supposé par AgentCore les paiements au moment de l'exécution pour récupérer les informations d'identification |
Astuce
Vous pouvez automatiser les étapes de cette page à l'aide de la compétence AgentCore Paiements de la boîte à outils de l' AWS agent. Cette compétence fait partie du plugin aws-agents et permet à un agent de codage basé sur l'IA de créer votre gestionnaire de paiement, votre connecteur, votre fournisseur d'informations d'identification, votre instrument de paiement et votre session à l'aide de la agentcore CLI, et d'ajouter un outil de paiement x402 à votre agent. Pour plus de détails, consultez le guide de démarrage rapide et le kit d'outils de l'AWS agent sur GitHub
Pourquoi la séparation des rôles est importante
Séparer la gestion des paiements de l'exécution des paiements empêche une seule identité compromise de créer des sessions avec des budgets illimités et d'exécuter des paiements sur ces sessions. L'importance explicite Deny ProcessPayment du rôle de gestion et la portée étroite du rôle d'exécution renforcent cette limite. Cela garantit également que les pistes d'audit distinguent clairement qui a configuré les ressources de paiement de celui qui a exécuté les transactions.
Autorisations d'administrateur (ControlPlaneRole)
Pour les administrateurs qui gèrent les gestionnaires de paiements, les connecteurs et les fournisseurs d'identifiants :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPaymentManagerOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentManager", "bedrock-agentcore:GetPaymentManager", "bedrock-agentcore:ListPaymentManagers", "bedrock-agentcore:DeletePaymentManager", "bedrock-agentcore:UpdatePaymentManager" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*" ] }, { "Sid": "AllowPaymentConnectorOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentConnector", "bedrock-agentcore:GetPaymentConnector", "bedrock-agentcore:ListPaymentConnectors", "bedrock-agentcore:DeletePaymentConnector", "bedrock-agentcore:UpdatePaymentConnector" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/connector/*" ] }, { "Sid": "AllowCredentialProviderOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentCredentialProvider", "bedrock-agentcore:GetPaymentCredentialProvider", "bedrock-agentcore:ListPaymentCredentialProviders", "bedrock-agentcore:DeletePaymentCredentialProvider", "bedrock-agentcore:UpdatePaymentCredentialProvider" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:token-vault/*/paymentcredentialprovider/*" ] }, { "Sid": "AllowVendedLogDelivery", "Effect": "Allow", "Action": [ "bedrock-agentcore:AllowVendedLogDeliveryForResource" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*" ] }, { "Sid": "AllowPassResourceRetrievalRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/AgentCorePaymentsResourceRetrievalRole", "Condition": { "StringEquals": { "iam:PassedToService": "bedrock-agentcore.amazonaws.com" } } } ] }
Autorisations de développeur de l'agent (ManagementRole)
Pour le code deterministic/human -in-the-loop (HITL) qui gère les instruments de paiement et les sessions mais n'exécute pas les paiements directement :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPaymentManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePaymentInstrument", "bedrock-agentcore:GetPaymentInstrument", "bedrock-agentcore:ListPaymentInstruments", "bedrock-agentcore:DeletePaymentInstrument", "bedrock-agentcore:CreatePaymentSession", "bedrock-agentcore:GetPaymentSession", "bedrock-agentcore:ListPaymentSessions", "bedrock-agentcore:DeletePaymentSession" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/instrument/*", "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] }, { "Sid": "DenyProcessPayment", "Effect": "Deny", "Action": "bedrock-agentcore:ProcessPayment", "Resource": "*" } ] }
Note
Cette politique interdit explicitement ProcessPayment d'appliquer la séparation des tâches entre les opérations de gestion et l'exécution des paiements. Cela garantit que seuls les chemins de code déterministes peuvent définir les opérations du plan de contrôle, tandis que l'exécution agentique est uniquement en mesure de traiter les paiements sans modifier les budgets ou créer des instruments de paiement pour contourner ce problème.
Autorisations d'exécution des paiements (ProcessPaymentRole)
Pour les chemins de code déterministes qui exécutent des transactions de paiement pour le compte des agents :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowProcessPayment", "Effect": "Allow", "Action": "bedrock-agentcore:ProcessPayment", "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] }, { "Sid": "AllowPaymentReadOperations", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetPaymentInstrument", "bedrock-agentcore:GetPaymentInstrumentBalance", "bedrock-agentcore:GetPaymentSession" ], "Resource": [ "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/instrument/*", "arn:aws:bedrock-agentcore:*:111122223333:payment-manager/*/session/*" ] } ] }
Important
N'incluez pas d'autorisations d' PaymentSession écriture (par exemple,CreatePaymentSession) et ProcessPayment dans le même rôle, sinon l'appelant peut contourner les limites de paiement en créant de nouvelles sessions avec des budgets élevés.
Autorisations relatives aux rôles de service (ResourceRetrievalRole)
Le rôle de service suivant est assumé par AgentCore Payments au moment de l'exécution pour récupérer les informations d'identification et gérer les identités des charges de travail. Il n'est pas attribué à des utilisateurs humains.
Politique d’approbation
Le rôle de service doit faire confiance au principal du bedrock-agentcore.amazonaws.com service. La politique de confiance suivante définit l'accès à un compte et à un gestionnaire de paiement spécifiques :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<account>" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:<region>:<account>:payment-manager/<payment-manager-name>-*" } } } ] }
Autorisations de base (jointes lors de la création de Payment Manager)
Lorsqu'un gestionnaire de paiement est créé, les autorisations suivantes sont associées au rôle de service. Ils permettent au responsable des paiements d'accéder à l'identité de la charge de travail et aux opérations relatives aux jetons de paiement :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "WorkloadIdentityManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateWorkloadIdentity", "bedrock-agentcore:DeleteWorkloadIdentity" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/*" ] }, { "Sid": "WorkloadIdentityAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/<payment-manager-name>-*" ] }, { "Sid": "PaymentTokenBaseAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourcePaymentToken" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<account>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<account>:workload-identity-directory/default/workload-identity/<payment-manager-name>-*" ] } ] }
Per-connector autorisations
Chaque fois qu'un connecteur de paiement est ajouté au gestionnaire de paiements, les autorisations suivantes sont ajoutées au rôle de service. Ils donnent accès au fournisseur d'identifiants de paiement spécifique et à ses secrets sous-jacents :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PaymentTokenAccess", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetResourcePaymentToken" ], "Resource": [ "<payment-credential-provider-arn>" ] }, { "Sid": "SecretsManagerAccess", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "<secret-arns>" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "<account>" } } } ] }
Utilisation d'un rôle existant
Si vous choisissez d'utiliser un rôle de service existant au lieu d'en créer un nouveau, assurez-vous que le rôle possède les caractéristiques suivantes :
-
La politique de confiance indiquée ci-dessus, avec
bedrock-agentcore.amazonaws.comcomme principe de confiance. -
Les autorisations de base pour l'identité de la charge de travail et l'accès aux jetons de paiement.
-
Per-connector autorisations pour chaque fournisseur d'informations de paiement référencé par les connecteurs du Payment Manager.
Note
Les rôles d'administrateur, de développeur d'agents et d'exécution des paiements utilisent une politique de confiance de compte standard leur arn:aws:iam::111122223333:root permettant de les assumer.
Par exemple, les politiques IAM, voir Gestion des identités et des accès pour Amazon AgentCore Bedrock.