AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する - AWS Identity and Access Management

AWS: AWS Data Exchange を除くアカウント外の Amazon S3 リソースへのアクセスを拒否する

この例では、AWS Data Exchange が通常のオペレーションに必要とするリソースを除いた、アカウントに属さない AWS のすべてのリソースへのアクセスを拒否する ID ベースのポリシーを作成する方法を示します。このポリシーを使用するには、サンプルポリシーのイタリック体のプレースホルダーテキストを独自の情報に置き換えます。次に、「ポリシーの作成またはポリシーの編集」の手順に従います。

条件キー aws:ResourceOrgPaths および aws:ResourceOrgID を使用して AWS Data Exchange 所有のリソースを考慮しながら、組織または組織単位内のリソースへのアクセスを制限するために、類似ポリシーを作成できます。

ご自分の環境で AWS Data Exchange を使用する場合、サービスはサービスアカウントが所有する Amazon S3 バケットなどのリソースを作成し、操作します。たとえば、AWS Data Exchange は、IAM プリンシパル (ユーザーまたはロール) に代わって AWS Data Exchange API を呼び出す AWS Data Exchange サービスが所有する Amazon S3 バケットに要求を送信します。その場合は、aws:ResourceAccountaws:ResourceOrgPathsaws:ResourceOrgID ポリシーを使用して、AWS Data Exchange が所有するリソースを考慮せず、サービスアカウントが所有するバケットへのアクセスを拒否します。

  • ステートメント DenyAllAwsResourcesOutsideAccountExceptS3 では、ステートメントにリスト表示されておらず、またリスト表示されたアカウントに属していないすべてのアクションへのアクセスを明確に拒否する効果を持つ NotAction 要素を使用します。NotAction 要素は、このステートメントの例外を示します。これらのアクションは、ステートメントの例外を示します。これは AWS Data Exchange によって作成されたリソースでアクションが実行されると、ポリシーによってアクションが拒否されるためです。

  • このステートメント DenyAllS3ResoucesOutsideAccountExceptDataExchange は、ResourceAccount および CalledVia の条件の組み合わせを使用して、前のステートメントで除外された 3 つの Amazon S3 アクションへのアクセスを拒否します。このステートメントは、そのリソースがリスト表示されたアカウントに属していない場合、そして呼び出しサービスが AWS Data Exchange でない場合にアクションを拒否します。このステートメントは、リソースがリスト表示されたアカウントに属しているか、リスト表示されているサービスプリンシパル dataexchange.amazonaws.com が操作を行う場合には、アクションを拒否しません。

重要

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

次の例は、必要な Amazon S3 バケットへのアクセスを許可するためにポリシーを設定する方法を示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllAwsReourcesOutsideAccountExceptAmazonS3", "Effect": "Deny", "NotAction": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] } } }, { "Sid": "DenyAllS3ResourcesOutsideAccountExceptDataExchange", "Effect": "Deny", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": [ "111122223333" ] }, "ForAllValues:StringNotEquals": { "aws:CalledVia": [ "dataexchange.amazonaws.com" ] } } } ] }