翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サービス間の混乱した代理の防止
混乱した代理問題とは、アクションを実行する許可を持たないエンティティが、より高い特権を持つエンティティにそのアクションの実行を強制できるというセキュリティ問題です。AWS では、サービス間でのなりすましが、混乱した代理問題を生じさせることがあります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別の顧客のリソースに対する処理を実行するように操作される場合があります。これを防ぐために AWS では、顧客のすべてのサービスのデータを保護するのに役立つツールを提供しています。これには、アカウントのリソースへのアクセス許可が付与されたサービスプリンシパルを使用します。
リソースポリシー内では aws:SourceArn
および aws:SourceAccount
のグローバル条件コンテキストキーを使用して、Amazon EventBridge が別のサービスに付与する、リソースへのアクセス許可を制限することをお勧めします。クロスサービスのアクセスにリソースを 1 つだけ関連付けたい場合は、aws:SourceArn
を使用します。クロスサービスが使用できるように、アカウント内の任意のリソースを関連づけたい場合は、aws:SourceAccount
を使用します。
混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定しながら、aws:SourceArn
グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、グローバルコンテキスト条件キー aws:SourceArn
で、ARN の未知部分を示すためにワイルドカード文字 (*
) を使用します。例えば、arn:aws:
です。servicename
:*:123456789012
:*
aws:SourceArn
の値に Amazon S3 バケット ARN などのアカウント ID が含まれていない場合は、両方のグローバル条件コンテキストキーを使用して、アクセス許可を制限する必要があります。
イベントバス
EventBridge のイベントバスルールターゲットの場合は、aws:SourceArn
の値がルール ARN でなければなりません。
次の例では、EventBridge の aws:SourceArn
と aws:SourceAccount
グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。この例は、EventBridge ルールで使用されるロールのロール信頼ポリシーで使用するためのものです。
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:events:*:123456789012:rule/myRule" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }
EventBridge Pipes
EventBridge Pipes の場合、aws:SourceArn
の値がパイプ ARN でなければなりません。
次の例では、EventBridge の aws:SourceArn
と aws:SourceAccount
グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。この例は、EventBridge Pipes で使用されるロールのロール信頼ポリシーで使用するためのものです。
{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:pipe:*:123456789012::pipe/example" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }