

# Amazon Bedrock AgentCore 付款的安全性
<a name="payments-security-best-practices"></a>

下列最佳實務可協助您在使用 Amazon Bedrock AgentCore 付款時避免安全事件。預防性控制會在不安全的動作發生之前停止。Detective 會控制非預期的活動，以便您可以回應。

## 預防性控制
<a name="payments-security-preventative"></a>

使用這些控制項來限制您的代理程式可以執行的操作，並防止敏感材料接觸。

### 使用四角色 IAM 模式強制執行最低權限
<a name="payments-security-least-privilege"></a>

AgentCore 付款會使用不同的 IAM 角色，將控制平面與資料平面分開。根據符合每個角色的角色來設定 IAM 許可。使用此模式，沒有任何單一角色可以同時提高預算並對其支出。


| \# | Role | 用途 | 
| --- | --- | --- | 
| 1 |  `ControlPlaneRole`  | 管理 服務。 | 
| 2 |  `ManagementRole`  | 設定工作階段。明確拒絕此角色 `ProcessPayment`。 | 
| 3 |  `ProcessPaymentRole`  | 執行付款。 | 
| 4 |  `ResourceRetrievalRole`  | 服務假設。擷取工作階段和登入資料狀態。 | 

如需詳細資訊，請參閱 [ AgentCore 付款的 IAM 角色](payments-iam-roles.md)。

### 將登入資料儲存在 AgentCore Identity 中
<a name="payments-security-credentials"></a>

切勿在客服人員程式碼或環境變數中嵌入錢包供應商登入資料。
+ 在 AgentCore Identity `PaymentCredentialProvider`中將 Coinbase CDP 或 Stripe (Privy) 登入資料儲存為 。
+ 服務會在執行時間使用 擷取它們`ResourceRetrievalRole`。
+ 依照錢包供應商建議的排程輪換憑證。如果登入資料遭到洩漏，請立即將其撤銷。

如需詳細資訊，請參閱 [AgentCore Identity](identity.md)。

### 正確設定 UserId 標頭
<a name="payments-security-userid-header"></a>

在 IAM 設定的傳入授權付款管理員上，您的後端會宣告 `X-Amzn-Bedrock-AgentCore-Payments-User-Id`標頭，而 AgentCore 付款**不會**驗證它。您需負責正確設定此值。

AgentCore 付款會驗證 IAM 發起人和 JWT （使用 OAuth 時），但 API 呼叫的 `UserId`標頭正確性由您負責。請勿讓最終使用者或客服人員直接影響此標頭。

### 保護多租戶部署
<a name="payments-security-multi-tenant"></a>

對於為多個最終使用者提供服務的多租戶部署，請使用付款管理員中的 `CUSTOM_JWT`(OAuth) 授權類型。這為服務提供了已驗證的最終使用者身分。使用 IAM 設定的付款管理員，AgentCore 付款不會驗證最終使用者身分。

### 需要明確的最終使用者同意和委派
<a name="payments-security-consent"></a>

資金和委派是兩個獨立的最終使用者決策，兩者都是從代理程式進行out-of-band決策：
+  **資金** – 最終使用者透過錢包供應商入口網站存放資金。代理程式沒有資金的 API 存取權，絕不能提示它或自動啟動它。
+  **委派** – 最終使用者透過 Coinbase Spend Permissions 或 Privy 委派動作授予許可。請勿假設委派是永久的，因為使用者可以隨時撤銷委派。正常處理撤銷的委派。

### 保持代理程式與付款工具的隔離
<a name="payments-security-isolation"></a>

客服人員絕不能存取卡號、CVV 值、銀行詳細資訊或錢包私有金鑰。客服人員的檢視會停止在「從使用者擁有的錢包支出的許可」。
+ 錢包金鑰由供應商自管，而不是由 AWS 或開發人員持有。
+ 切勿透過提示、工具輸入或內容視窗傳遞付款工具詳細資訊。

### AgentCore 中具有政策的範圍工具存取
<a name="payments-security-policy"></a>

如需工具層級授權，請透過 Amazon Bedrock AgentCore Gateway 公開付費端點。AgentCore 是一種以 Cedar 為基礎的引擎，可評估請求，包括客服人員的身分、工具名稱和參數，並決定是否允許它，透過 Gateway 進行的每個呼叫都會被 政策攔截。

政策和付款工作階段涵蓋不同的決策：
+  **政策**會控制*使用**哪些參數*呼叫*哪些工具*的人員。
+  **付款工作階段**控制可以花費*多少以及**花費多久*。

它們共同為您提供工具存取和支出金額的正交控制桿。
+ 撰寫依代理程式身分、使用者群組和請求參數範圍的 Cedar 政策。
+ 拒絕存取不需要的高成本工具給客服人員。
+ 當您的工具目錄變更時，請定期檢閱和稽核政策。

如需詳細資訊，請參閱 [ AgentCore 中的政策](policy.md)。

### 使用具有預算限制和 TTL 的付款工作階段
<a name="payments-security-sessions"></a>

每個付款都會在具有最高花費金額和到期時間的付款工作階段內執行。基礎設施層會強制執行這些限制，因此提示注入和模型非確定性無法覆寫它們。
+ 將 `maxSpendAmount`設定為任務所需的最小值，並設定短 TTL。
+ 從保守預算開始，並只在客服人員證明可靠時提高預算。
+ 失敗的簽署會自動轉返預算扣除。

如需詳細資訊，請參閱[建立付款工作階段](payments-create-session.md)。

### 驗證和限制 payTo 地址
<a name="payments-security-payto"></a>

`payTo` 地址指定收件人錢包。AgentCore 付款不會強制執行伺服器端`payTo`的限制，因此您的應用程式必須在呼叫 `ProcessPayment` API 之前驗證地址。
+  **維護預先驗證商家地址的允許清單**，並拒絕未知地址。
+  **切勿讓模型產生 payTo 地址。**它們必須來自信任的來源，例如 x402 付款請求或已驗證的登錄檔。
+  處理 x402 回應時**，對預期的商家進行驗證**。
+  **偏好 AgentCore Gateway** 進行端點探索，因為它透過 x402 Bazaar 提供已驗證`payTo`的地址。
+  **套用 Cedar 政策**來限制代理程式可以支付哪些地址。
+  **不要跨工作階段快取地址。**一律使用目前商家提供的地址，並根據允許清單進行驗證。

### 安全的網路存取
<a name="payments-security-network"></a>
+ 使用 VPC 端點來防止流量流離公有網際網路。
+ 套用端點政策和 IAM 條件 (`aws:sourceVpc`、`aws:sourceVpce`) 來限制原始伺服器。
+ 為所有 AgentCore 付款 API 呼叫啟用 AWS CloudTrail。

### 設計付款失敗和轉返
<a name="payments-security-failure"></a>
+ 實作冪等性，以防止重試時重複付款。
+ 以明確的備用行為處理付款失敗。請勿無限期重試。
+ 監控部分故障並實作補償交易。

## 偵測性控制
<a name="payments-security-detective"></a>

使用這些控制項來觀察付款活動和表面異常，以便您可以回應。

### 啟用可觀測性和稽核記錄
<a name="payments-security-observability"></a>

AgentCore 付款透過 Amazon CloudWatch 提供自動可觀測性：
+  **已取代的日誌** – 會記錄每個資料平面呼叫 （對象、內容、數量和對象）。
+  **修改範圍** – AWS X-Ray 中提供完整的付款生命週期追蹤。
+ 設定異常支出模式的警示，例如未列出的地址付款、異常大量的不同收件人，或已知商家的地址突然變更。
+ 根據您的合規要求保留日誌。
+ 請勿依賴客服人員程式碼來記錄自己的動作。

如需詳細資訊，請參閱[使用 Amazon CloudWatch 的可觀測性](payments-observability.md)。

### 定期檢閱組態
<a name="payments-security-review"></a>
+ 稽核預算並減少低成本客服人員的限制。
+ 每季檢閱 Cedar 政策和 IAM 角色。
+ 監控錢包供應商儀表板是否有非預期的委派或資金活動。