

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

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

混淆代理人問題屬於安全性議題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況， AWS 提供的工具可協助您保護所有服務的資料，而這些服務主體已獲得您帳戶中資源的存取權。

我們建議在資源政策中使用[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)全域條件內容索引鍵，以限制將另一個服務提供給資源的許可 AWS Clean Rooms。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。在 中 AWS Clean Rooms，您也必須將 與 `sts:ExternalId` 條件索引鍵進行比較。

的值`aws:SourceArn`必須設定為擔任角色成員資格的 ARN。

下列範例示範如何在 中使用`aws:SourceArn` AWS Clean Rooms全域條件內容索引鍵，以防止混淆代理人問題。

**注意**  
此範例政策適用於 服務角色的信任政策，該角色 AWS Clean Rooms 使用 來存取已設定資料表的資料和中繼資料。  
*<query-runner-membership-id>* 的值需要設定為查詢執行器的成員 ID。  
協同合作的所有成員都可以檢視設定的資料表中繼資料，因此每個成員資格 ARN 都必須包含在成員資格 ARNs清單中。

**注意**  
透過 AWS Clean Rooms 主控台建立服務角色時，協作的所有目前成員預設都會包含在混淆代理人條件中。  
如果您要將新成員新增至已設定與其相關聯的資料表的協同合作，請務必使用新成員的成員 ARN 更新服務角色的混淆代理人條件。  
如果您在新增新成員後未更新服務角色的混淆代理人條件，則該新成員將無法存取使用該角色擷取 AWS Clean Rooms 的 中的資訊。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIfExternalIdMatches",
            "Effect": "Allow",
            "Principal": {
                "Service": "cleanrooms.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringLike": {
                    "sts:ExternalId": "arn:aws:*:us-east-1:*:dbuser:*/<query-runner-membership-id>*"
                }
            }
        },
        {
            "Sid": "AllowIfSourceArnMatches",
            "Effect": "Allow",
            "Principal": {
                "Service": "cleanrooms.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "ForAnyValue:ArnEquals": {
                    "aws:SourceArn": [
                        "arn:aws:cleanrooms:us-east-1:111122223333:membership/<member-1-membership-id>",
                        "arn:aws:cleanrooms:us-east-1:444455556666:membership/<member-2-membership-id>"
                    ]
                }
            }
        }
    ]
}
```

------