

# AgentCore 付款的 IAM 角色
<a name="payments-iam-roles"></a>

## 角色摘要
<a name="payments-iam-role-summary"></a>

AgentCore 付款使用四角色 IAM 模型來分隔管理、管理、代理程式執行和服務操作。根據符合您角色的角色來設定 IAM 許可。


| Role | 用途 | 
| --- | --- | 
| 管理員 (ControlPlaneRole) | 管理付款管理員、連接器和登入資料提供者 | 
| 代理程式開發人員 (ManagementRole) | 管理付款工具和工作階段，無法執行付款 | 
| 付款執行 (ProcessPaymentRole) | 代表客服人員執行付款交易 | 
| 服務角色 (ResourceRetrievalRole) | 在執行時間由 AgentCore 付款擔任以擷取登入資料 | 

**提示**  
您可以使用 AWS 客服人員工具組中的 AgentCore Payments 技能來自動化此頁面上的步驟。技能是 **aws-agents** 外掛程式的一部分，可讓 AI 編碼代理程式使用 CLI `agentcore` 建立您的 Payment Manager、連接器、登入資料提供者、付款工具及工作階段，並將 x402 付款工具新增至您的代理程式。如需詳細資訊，請參閱 GitHub 上的[快速入門](payments-getting-started.md)和客服人員工具組。 [AWS GitHub](https://github.com/aws/agent-toolkit-for-aws/tree/main)

## 為什麼角色分離很重要
<a name="payments-iam-why-separation"></a>

將付款管理與付款執行分開可防止單一洩露的身分建立具有無限預算的工作階段，以及對這些工作階段執行付款。管理角色`Deny``ProcessPayment`中的明確 和執行角色的縮小範圍會強制執行此界限。這也可確保稽核線索清楚區分誰設定了付款資源，以及誰執行了交易。

## 管理員許可 (ControlPlaneRole)
<a name="payments-iam-admin"></a>

對於管理付款管理員、連接器和憑證提供者的管理員：

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

## 代理程式開發人員許可 (ManagementRole)
<a name="payments-iam-developer"></a>

對於管理付款工具和工作階段但不直接執行付款的確定性/human-in-the-loop(HITL) 程式碼：

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

**注意**  
此政策明確拒絕`ProcessPayment`在管理操作和付款執行之間強制執行職責分離。這可確保只有確定性程式碼路徑可以設定控制平面操作，而代理程式執行只能處理付款，而不會覆寫預算或建立付款工具來解決此問題。

## 付款執行許可 (ProcessPaymentRole)
<a name="payments-iam-execution"></a>

對於代表代理程式執行付款交易的確定性程式碼路徑：

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

**重要**  
請勿在相同角色`ProcessPayment`中包含 PaymentSession *寫入*許可 （例如 `CreatePaymentSession`) 和 ，否則發起人可以透過建立具有較高預算的新工作階段來略過付款限制。

## 服務角色許可 (ResourceRetrievalRole)
<a name="payments-iam-service-role"></a>

AgentCore 付款會在執行時間擔任下列服務角色，以擷取登入資料和管理工作負載身分。它不會指派給人類使用者。

### 信任政策
<a name="payments-iam-service-role-trust"></a>

服務角色必須信任`bedrock-agentcore.amazonaws.com`服務委託人。下列信任政策會限制對特定帳戶和 Payment Manager 的存取：

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

### 基本許可 （附加在 Payment Manager 建立上）
<a name="payments-iam-service-role-base"></a>

建立 Payment Manager 時，下列許可會連接至服務角色。這些會授予 Payment Manager 對工作負載身分和付款字符操作的存取權：

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

### 每個連接器許可
<a name="payments-iam-service-role-connector"></a>

每次將付款連接器新增至 Payment Manager 時，下列許可都會附加至服務角色。這些會授予特定付款憑證提供者及其備份秘密的存取權：

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

## 使用現有角色
<a name="payments-iam-existing-role"></a>

如果您選擇使用現有的服務角色，而不是建立新的服務角色，請確定該角色具有：

1. 上面顯示的信任政策，以 `bedrock-agentcore.amazonaws.com`做為信任的委託人。

1. 工作負載身分和付款字符存取的基本許可。

1. Payment Manager 連接器參考的每個付款憑證提供者的每個連接器許可。

**注意**  
管理員、客服人員開發人員和付款執行角色使用允許 `arn:aws:iam::111122223333:root` 採用的標準帳戶信任政策。

如需 IAM 政策範例，請參閱 [Amazon Bedrock AgentCore 的 Identity and Access Management](security-iam.md)。