

# Funções do IAM para AgentCore pagamentos
<a name="payments-iam-roles"></a>

## Resumo da função
<a name="payments-iam-role-summary"></a>

AgentCore os pagamentos usam um modelo IAM de quatro funções que separa operações administrativas, gerenciais, de execução de agentes e de serviço. Configure as permissões do IAM com base na persona que corresponde à sua função.


| Perfil | Finalidade | 
| --- | --- | 
| Administrador (ControlPlaneRole) | Gerencia gerentes de pagamento, conectores e provedores de credenciais | 
| Agente desenvolvedor (ManagementRole) | Gerencia instrumentos e sessões de pagamento, não pode executar pagamentos | 
| Execução de pagamento (ProcessPaymentRole) | Executa transações de pagamento em nome de agentes | 
| Função de serviço (ResourceRetrievalRole) | Assumido por AgentCore pagamentos em tempo de execução para recuperar credenciais | 

**dica**  
Você pode automatizar as etapas nesta página com a habilidade AgentCore Pagamentos no kit de ferramentas do AWS agente. A habilidade faz parte do plug-in **aws-agents** e permite que um agente de codificação de IA crie seu gerenciador de pagamentos, conector, provedor de credenciais, instrumento de pagamento e sessão usando a `agentcore` CLI e adicione uma ferramenta de pagamento x402 ao seu agente. Para obter detalhes, consulte o [guia de início rápido](payments-getting-started.md) e o [kit de ferramentas do AWS agente](https://github.com/aws/agent-toolkit-for-aws/tree/main) em. GitHub

## Por que a separação de funções é importante
<a name="payments-iam-why-separation"></a>

Separar o gerenciamento de pagamentos da execução de pagamentos impede que uma única identidade comprometida crie sessões com orçamentos ilimitados e execute pagamentos em relação a essas sessões. O explícito `Deny` `ProcessPayment` na função de gerenciamento e o escopo restrito da função de execução impõem esse limite. Isso também garante que as trilhas de auditoria distingam claramente quem configurou os recursos de pagamento de quem executou as transações.

## Permissões de administrador (ControlPlaneRole)
<a name="payments-iam-admin"></a>

Para administradores que gerenciam gerentes de pagamento, conectores e provedores de credenciais:

```
{
    "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"
                }
            }
        }
    ]
}
```

## Permissões de desenvolvedor do agente (ManagementRole)
<a name="payments-iam-developer"></a>

Para o código deterministic/human -in-the-loop (HITL) que gerencia instrumentos e sessões de pagamento, mas não executa pagamentos diretamente:

```
{
    "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": "*"
        }
    ]
}
```

**nota**  
Esta política nega explicitamente `ProcessPayment` a separação de deveres entre as operações de gerenciamento e a execução do pagamento. Isso garante que somente caminhos de código determinísticos possam definir as operações do plano de controle, enquanto a execução agente só é capaz de processar o pagamento sem sobrepor orçamentos ou criar instrumentos de pagamento para contornar isso.

## Permissões de execução de pagamento (ProcessPaymentRole)
<a name="payments-iam-execution"></a>

Para caminhos de código determinísticos que executam transações de pagamento em nome de agentes:

```
{
    "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/*"
            ]
        }
    ]
}
```

**Importante**  
Não inclua permissões de PaymentSession *gravação* (por exemplo,`CreatePaymentSession`) e `ProcessPayment` na mesma função, ou o chamador pode ignorar os limites de pagamento criando novas sessões com orçamentos elevados.

## Permissões da função de serviço (ResourceRetrievalRole)
<a name="payments-iam-service-role"></a>

A função de serviço a seguir é assumida pelos AgentCore pagamentos em tempo de execução para recuperar credenciais e gerenciar identidades de carga de trabalho. Ele não é atribuído a usuários humanos.

### Política de confiança
<a name="payments-iam-service-role-trust"></a>

A função de serviço deve confiar no diretor do `bedrock-agentcore.amazonaws.com` serviço. A política de confiança a seguir define o escopo do acesso a uma conta específica e a um gerente de pagamentos:

```
{
    "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>-*"
                }
            }
        }
    ]
}
```

### Permissões básicas (anexadas na criação do Payment Manager)
<a name="payments-iam-service-role-base"></a>

Quando um gerente de pagamento é criado, as seguintes permissões são anexadas à função de serviço. Eles concedem ao Payment Manager acesso às operações de identidade da carga de trabalho e token de pagamento:

```
{
    "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 permissões
<a name="payments-iam-service-role-connector"></a>

Sempre que um conector de pagamento é adicionado ao Gerenciador de pagamentos, as seguintes permissões são anexadas à função de serviço. Eles concedem acesso ao provedor específico de credenciais de pagamento e seus segredos de apoio:

```
{
    "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>"
                }
            }
        }
    ]
}
```

## Usando uma função existente
<a name="payments-iam-existing-role"></a>

Se você optar por usar uma função de serviço existente em vez de criar uma nova, certifique-se de que a função tenha:

1. A política de confiança mostrada acima, tendo `bedrock-agentcore.amazonaws.com` como principal confiável.

1. As permissões básicas para identidade da carga de trabalho e acesso ao token de pagamento.

1. Per-connector permissões para cada provedor de credenciais de pagamento referenciado pelos conectores do Payment Manager.

**nota**  
As funções de administrador, agente, desenvolvedor e execução de pagamentos usam uma política de confiança de conta padrão que `arn:aws:iam::111122223333:root` permite assumi-las.

Por exemplo, políticas do IAM, consulte [Gerenciamento de identidade e acesso para o Amazon Bedrock AgentCore](security-iam.md).