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

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

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

リソースポリシーで「aws:SourceArn」および「aws:SourceAccount」のグローバル条件コンテキストキーを使用し、AWS CloudFormation が CloudFormation 拡張機能などの特定リソースに別のサービスを付与する許可を制限することをお勧めします。クロスサービスアクセスにリソースを 1 つだけ関連付けたい場合は、aws:SourceArn を使用します。そのアカウント内のリソースをクロスサービスの使用に関連付けることを許可する場合は、aws:SourceAccount を使用します。

aws:SourceArn の値は CloudFormation が保存するリソースの ARN であることを確認します。

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

aws:SourceArn の値にアカウント ID が含まれていない場合、両方のグローバル条件コンテキストキーを使用して許可を制限する必要があります。

次の例では、CloudFormation で aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用し、混乱した代理の問題を回避する方法が示されています。

aws:SourceArn および aws:SourceAccount 条件キーを使用する信頼ポリシーの例

レジストリサービスの場合、CloudFormation は AWS Security Token Service (AWS STS) を呼び出してアカウントでのサービスロールを引き受けます。このロールは、RegisterType 操作で ExecutionRoleArn に構成され、LoggingConfig 操作で LogRoleArn に設定されます。詳細については、「IAM アクセス許可とパブリック拡張アクセスの信頼ポリシーを使用して実行ロールを設定する」を参照してください。

このロールの信頼ポリシーの例では、条件文を使用して、サービスロールの AssumeRole 機能を、指定されたアカウントの指定された CloudFormation 拡張機能に対するアクションのみに制限します。aws:SourceArn および aws:SourceAccount の条件は個別に評価されます。サービスロールを使用するリクエストでは、両方の条件が満たされている必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "resources.cloudformation.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:us-east-1:123456789012:type/resource/Organization-Service-Resource/*" } } } ] }

追加情報

StackSets で使用されるサービスロールの aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用するポリシーの例については、「混乱した代理問題を軽減するためにグローバルキーを設定する」を参照してください。

詳細については、「IAM ユーザーガイド」の「ロールの信頼ポリシーの変更」を参照してください。