

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サービス間の混乱した代理の防止
<a name="cross-service-confused-deputy-prevention"></a>

混乱した代理問題は、アクションを実行する許可を持たないエンティティが、より特権のあるエンティティにアクションを実行するように強制できるセキュリティの問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (*呼び出し元サービス*) が、別のサービス (*呼び出し対象サービス*) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 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) のグローバル条件コンテキストキーを使用して、 AWSClean Rooms が別のサービスに付与するアクセス許可をそのリソースに制限することをお勧めします。クロスサービスのアクセスにリソースを 1 つだけ関連付けたい場合は、`aws:SourceArn` を使用します。

混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定して `aws:SourceArn` グローバル条件コンテキストキーを使用することです。では AWS Clean Rooms、 `sts:ExternalId`条件キーと比較する必要があります。

`aws:SourceArn` の値は、引き受けられたロールのメンバーシップの ARN に設定する必要があります。

次の例では、 AWSClean Rooms で `aws:SourceArn` グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。

**注記**  
サンプルポリシーは、 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>"
                    ]
                }
            }
        }
    ]
}
```

------