

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 預防跨服務混淆代理人
<a name="iam-cross-service-confused-deputy-prevention"></a>

在 中 AWS，當一個服務 （呼叫服務） 呼叫另一個服務 （呼叫的服務） 時，可能會發生跨服務模擬。可以操縱呼叫服務來對其他客戶的資源採取操作，即使該服務不應有適當的許可，導致混淆代理人的問題。

為了防止混淆代理人， AWS 提供工具，協助您使用可存取您帳戶中資源的服務主體來保護所有 服務的資料。本節重點介紹特定於 Managed Service for Apache Flink 的防範跨服務混淆代理人；但是，您可以在《IAM 使用者指南》**的[混淆代理人問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)一節，了解此主題的更多資訊。

在 Managed Service for Apache Flink 環境中，我們建議在角色信任政策中使用 [aws: SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件環境索引鍵，以將角色的存取權限制為僅由預期資源產生的請求。

如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

`aws:SourceArn` 的值必須是 Managed Service for Apache Flink 所使用之資源的 ARN，其格式指定如下：`arn:aws:kinesisanalytics:region:account:resource`。

防範混淆代理人問題的建議方法是使用 `aws:SourceArn` 全域條件內容索引鍵以及資源的完整 ARN。

如果不知道資源的完整 ARN，或指定了多個資源，請使用 `aws:SourceArn` 索引鍵搭配萬用字元 (\$1) 來表示 ARN 的未知部分。例如：`arn:aws:kinesisanalytics::111122223333:*`。

您提供給 Managed Service for Apache Flink 的角色政策，以及為您產生之角色的信任政策，都可以使用這些索引鍵。

請執行下列步驟以防範混淆代理人問題：

**如要防範混淆代理人問題**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 選擇**角色**，然後選擇您要修改的角色。

1. 選擇**編輯信任政策**。

1. 在**編輯信任政策**頁面上，將預設 JSON 政策取代為使用一個或兩個 `aws:SourceArn` 與 `aws:SourceAccount` 全域條件內容金鑰的政策。請參閱以下政策範例：

1. 選擇 **更新政策**。

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"kinesisanalytics.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"Account ID"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:kinesisanalytics:us-east-1:123456789012:application/my-app"
               }
            }
         }
      ]
   }
   ```

------