AWS: CloudFormation を除くアカウント外の Amazon SNS リソースへのアクセスを拒否します - AWS Identity and Access Management

AWS: CloudFormation を除くアカウント外の Amazon SNS リソースへのアクセスを拒否します

aws:ResourceAccount ID ベースポリシーの条件キーを使用すると、ユーザーまたはロールでサービスが所有するアカウント内のリソースとのやり取りを要求する AWS サービスを利用する機能に影響を与える可能性があります。

この例では、CloudFormation が通常の操作に必要とするリソースを除いた、アカウントに属さない AWS のすべてのリソースへのアクセスを拒否する IAM ポリシーを作成する方法を示します。ご使用の環境で CloudFormation スタックセットを使用している場合、スタックセットは、スタックセット API を呼び出す IAM プリンシパル (ユーザーまたはロール) に代わって CloudFormation が所有する Amazon SNS トピックにリクエストを送信します。その場合、aws:ResourceAccount 条件キーを使用するポリシーは、CloudFormation が所有するリソースを考慮せずに、サービスアカウントが所有する Amazon SNS トピックへのアクセスを拒否します。

このポリシーを使用するには、イタリック体のプレースホルダーテキストをお客様の情報と置き換えます。

AWS CloudFormation スタックセット API によるアカウントのリソースへのアクセスを許可するには、リソースポリシーの次のステートメントを使用します。

  • この DenyAllAwsResourcesOutsideAccountExceptSNS ステートメントではステートメントにリスト表示されておらず、またリスト表示されたアカウントに属していないすべてのアクションへのアクセスを明確に拒否する Deny 効果を持つ NotAction 要素を使用します。

    この NotAction 要素は、このステートメントのアクションの例外を示します。これは CloudFormation によって作成されたリソースでアクションが実行されると、ポリシーによってアクションが拒否されるためです。

  • この DenyAllSNSResourcesOutsideAccountExceptCloudFormation ステートメントは aws:ResourceAccountCalledVia 条件キーを使用して前のステートメントで除外された Amazon SNS アクションへのアクセスを拒否します。このステートメントは、リソースがリスト表示されたアカウントに属していない場合、そして呼び出しサービスが CloudFormation でない場合にアクションを拒否します。このステートメントは、リソースがリスト表示されたアカウントに属しているか、リスト表示されているサービスプリンシパルが操作を行う場合に、アクションを許可します。

重要

このポリシーでは、アクションを許可しません。それは、リスト表示されたアカウントに属さないステートメントでリスト表示された、すべてのリソースへのアクセスを明確に拒否する Deny の効果を使用します。特定のリソースへのアクセスを許可する他のポリシーと組み合わせてこのポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllAwsResourcesOutsideAccountExceptSNS", "Effect": "Deny", "NotAction": [ "sns:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] } } }, { "Sid": "DenyAllSNSResourcesOutsideAccountExceptCloudFormation", "Effect": "Deny", "Action": [ "sns:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] }, "ForAllValues:StringNotEquals": { "aws:CalledVia": [ "cloudformation.amazonaws.com" ] } } } ] }