アクセスポイントを使用するための IAM ポリシーの設定 - Amazon Simple Storage Service

アクセスポイントを使用するための IAM ポリシーの設定

Amazon S3 アクセスポイントは AWS Identity and Access Management (IAM) リソースポリシーをサポートしています。これにより、リソース、ユーザー、その他の条件別にアクセスポイントの使用を制御できます。アプリケーションやユーザーがアクセスポイントを介してオブジェクトにアクセスできるようにするには、アクセスポイントと基になるバケットの両方でリクエストを許可する必要があります。

重要

S3 アクセスポイントをバケットに追加しても、既存のバケット名や ARN でアクセスしたときのバケットの動作は変わりません。バケットに対する既存のすべてのオペレーションは、以前と同じように動作します。アクセスポイントポリシーに含めた制限は、そのアクセスポイントを介したリクエストにのみ適用されます。

条件キー

S3 アクセスポイントは、IAM ポリシーでリソースへのアクセスを制御するために使用できる新しい条件キーとして次の 3 つを導入しています。

s3:DataAccessPointArn

これは、アクセスポイントの ARN の照合に使用できる文字列です。次の例では、リージョン us-west-2 の AWS アカウント 123456789012 のすべてのアクセスポイントを照合します。

"Condition" : { "StringLike": { "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*" } }
s3:DataAccessPointAccount

これは、アクセスポイントの所有者のアカウント ID を照合するために使用できる文字列演算子です。次の例では、AWS アカウント 123456789012 が所有するすべてのアクセスポイントを照合します。

"Condition" : { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } }
s3:AccessPointNetworkOrigin

これは、ネットワークオリジン (Internet または VPC) の照合に使用できる文字列演算子です。次の例では、VPC オリジンを持つアクセスポイントのみを照合します。

"Condition" : { "StringEquals": { "s3:AccessPointNetworkOrigin": "VPC" } }

Amazon S3 における条件キーの使用の詳細については、「Amazon S3 のアクション、リソース、条件キー」を参照してください。

アクセスポイントへのアクセスコントロールの委任

バケットのアクセスコントロールをバケットのアクセスポイントに委任できます。以下のバケットポリシーの例では、バケット所有者のアカウントが所有するすべてのアクセスポイントへのフルアクセスを許可しています。したがって、このバケットへのすべてのアクセスは、そのアクセスポイントにアタッチされているポリシーによってコントロールされます。バケットへの直接アクセスを必要としないすべてのユースケースでは、この方法でバケットを設定することをお勧めします。

例 アクセスコントロールをアクセスポイントに委任するバケットポリシー

{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

アクセスポイントポリシーの例

以下の例は、アクセスポイントを介したリクエストを制御するための IAM ポリシーの作成方法を示しています。

注記

アクセスポイントポリシーで付与されるアクセス許可は、基になるバケットでも同じアクセスが許可される場合にのみ有効です。このためには以下の 2 つの方法があります。

  1. (推奨) 「アクセスポイントへのアクセスコントロールの委任」の説明に従って、バケットからアクセスポイントにアクセスコントロールを委任します。

  2. アクセスポイントポリシーに含まれているものと同じアクセス許可を、基になるバケットのポリシーに追加します。最初のアクセスポイントポリシーの例は、必要なアクセスを許可するように基になるバケットポリシーを変更する方法を示しています。

例 アクセスポイントポリシーによる付与

以下のアクセスポイントポリシーは、アカウント Alice の IAM ユーザー 123456789012 に、アカウント GET のアクセスポイント PUT を介して、オブジェクト (プレフィックスが Alice/ であるオブジェクト) を my-access-point および 123456789012 するアクセス許可を付与します。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Alice/*" }] }
注記

アクセスポイントポリシーで Alice に対して効果的にアクセスを許可するには、基になるバケットでも Alice に対して同じアクセスを許可する必要があります。「アクセスポイントへのアクセスコントロールの委任」で説明しているように、バケットからアクセスポイントにアクセスコントロールを委任できます。または、基になるバケットに以下のポリシーを追加して、Alice に必要なアクセス許可を付与できます。Resource エントリはアクセスポイントとバケットのポリシーでは異なります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Alice" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::awsexamplebucket1/Alice/*" }] }

例 タグ条件付きのアクセスポイントポリシー

以下のアクセスポイントポリシーは、アカウント 123456789012 の IAM ユーザー Bob に、アカウント 123456789012 のアクセスポイント my-access-point を介して、オブジェクト (タグキーが data、値が finance であるオブジェクト) を GET するアクセス許可を付与します。

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal" : { "AWS": "arn:aws:iam::123456789012:user/Bob" }, "Action":"s3:GetObject", "Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*", "Condition" : { "StringEquals": { "s3:ExistingObjectTag/data": "finance" } } }] }

例 バケットのリスト取得を許可するアクセスポイントポリシー

以下のアクセスポイントポリシーでは、アカウント 123456789012 の IAM ユーザー Charles に、アカウント 123456789012 のアクセスポイント my-access-point の基になるバケットに含まれるオブジェクトを表示するアクセス許可を付与します。

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Charles" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point" }] }

例 サービスコントロールポリシー

次のサービスコントロールポリシーは、すべての新しいアクセスポイントを VPC ネットワークオリジンで作成することを要求します。このポリシーを適用すると、組織内のユーザーは、インターネットからアクセス可能なアクセスポイントを新規に作成できなくなります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } }] }

例 S3 オペレーションを VPC ネットワークオリジンに制限するバケットポリシー

次のバケットポリシーは、すべての S3 オペレーションからバケット examplebucket へのアクセスを、VPC をネットワークオリジンとするアクセスポイントに制限します。

重要

この例のようなステートメントを使用する前に、アクセスポイントでサポートされない機能 (クロスリージョンレプリケーションなど) が不要であることを確認してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:AbortMultipartUpload", "s3:BypassGovernanceRetention", "s3:DeleteObject", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:DeleteObjectVersionTagging", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectLegalHold", "s3:GetObjectRetention", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionAcl", "s3:PutObjectVersionTagging", "s3:RestoreObject" ], "Resource": "arn:aws:s3:::examplebucket/*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } } ] }