サービス間の混乱した代理の防止 - AWS Amplifyホストする

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

サービス間の混乱した代理の防止

混乱した代理問題とは、アクションを実行する許可を持たないエンティティが、より高い特権を持つエンティティにそのアクションの実行を強制できるというセキュリティ問題です。AWS では、サービス間でのなりすましが、混乱した代理問題を生じさせることがあります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別の顧客のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、AWS では、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールを提供しています。

リソースポリシーで aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用して、AWS Amplify が別のサービスに付与する許可をそのリソースに制限することをお勧めします。両方のグローバル条件コンテキストキーを使用しており、それらが同じポリシーステートメントで使用されるときは、aws:SourceAccount 値と、aws:SourceArn 値のアカウントが同じアカウント ID を使用する必要があります。

の値は Amplify アプリのブランチ ARNaws:SourceArn でなければなりません。arn:Partition:amplify:Region:Account:apps/AppId/branches/BranchNameこの値は形式で指定してください。

混乱した代理問題から保護するための最も効果的な方法は、リソースの完全な ARN を指定しながら、aws:SourceArn グローバル条件コンテキストキーを使用することです。リソースの完全な ARN が不明な場合や、複数のリソースを指定する場合には、グローバルコンテキスト条件キー aws:SourceArn で、ARN の未知部分を示すためにワイルドカード (*) を使用します。例えば、arn:aws:servicename::123456789012:* です。

以下の例は、アカウント内のあらゆる Amplify アプリへのアクセスを制限し、混乱を招くような代理問題を防ぐために適用できるロール信頼ポリシーを示しています。このポリシーを使用するには、ポリシー例の赤い斜体テキストを独自の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": [ "amplify.me-south-1.amazonaws.com", "amplify.eu-south-1.amazonaws.com", "amplify.ap-east-1.amazonaws.com", "amplifybackend.amazonaws.com", "amplify.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:amplify:us-east-1:123456789012:apps/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }

次の例は、アカウント内の特定の Amplify アプリへのアクセスを制限し、混乱を招くような代理問題を防ぐために適用できるロール信頼ポリシーを示しています。このポリシーを使用するには、ポリシー例の赤い斜体テキストを独自の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": [ "amplify.me-south-1.amazonaws.com", "amplify.eu-south-1.amazonaws.com", "amplify.ap-east-1.amazonaws.com", "amplifybackend.amazonaws.com", "amplify.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:amplify:us-east-1:123456789012:apps/d123456789/branches/*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } }