タグ付けとアクセスコントロールポリシー - Amazon Simple Storage Service

タグ付けとアクセスコントロールポリシー

アクセス許可ポリシー (バケットポリシーとユーザーポリシー) を使用して、オブジェクトのタグ付けに関連するアクセス許可を管理することもできます。ポリシーアクションについては次のトピックを参照してください。

オブジェクトのタグを使用して、アクセス許可を管理するためのきめ細かいアクセスコントロールが可能になります。オブジェクトタグに基づいて条件付きアクセス許可を与えることができます。Amazon S3 でサポートされる次の条件キーを使用すると、オブジェクトタグに基づいて条件付きアクセス許可を付与できます。

  • s3:ExistingObjectTag/<tag-key> – この条件キーを使用して、既存のオブジェクトタグに特定のタグキーと値があることを確認します。

    注記

    PUT Object オペレーションおよび DELETE Object オペレーションのアクセス許可を与える場合、この条件キーはサポートされません。つまり、オブジェクトをその既存のタグに基づいて削除または上書きするアクセス許可を、ユーザーに許可または拒否するポリシーは作成できません。

  • s3:RequestObjectTagKeys – この条件キーを使用して、オブジェクトに指定できるタグキーを制限します。これが役立つのは、PutObjectTagging、PutObject および POST Object リクエストを使用してオブジェクトにタグを付けるときです。

  • s3:RequestObjectTag/<tag-key> – この条件キーを使用して、オブジェクトに指定できるタグキーと値を制限します。これが役立つのは、PutObjectTagging、PutObject、および POST Bucket リクエストを使用してオブジェクトにタグを付けるときです。

Amazon S3 サービス固有の条件キーの詳細なリストについては、「Amazon S3 条件キーの例」を参照してください。次のアクセス許可ポリシーを使用して、オブジェクトのタグ付けによってきめ細かいアクセス許可管理がどのように実現するかを説明します。

例 1: 特定のタグキーと値を持つオブジェクトの読み取りのみをユーザーに許可する

以下のアクセス許可ポリシーでは、environment: production タグキーと値を持つオブジェクトのみを読み取れるように制限しています。このポリシーは s3:ExistingObjectTag 条件キーを使用してタグキーと値を指定します。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": ["s3:GetObject", "s3:GetObjectVersion"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/environment": "production"} } } ] }
例 2: ユーザーが追加できるオブジェクトタグキーを制限する

次のアクセス許可ポリシーは、s3:PutObjectTagging アクションを実行する権限をユーザーに許可します (ユーザーが既存のオブジェクトにタグを付けることができます)。この条件は s3:RequestObjectTagKeys 条件キーを使用して、OwnerCreationDate などの許可されたタグキーを指定します。詳細については、「IAM ユーザーガイド」の「複数のキーの値をテストする条件の作成」を参照してください。

このポリシーは、リクエストで指定されたすべてのタグキーが承認されたタグキーであることを保証します。条件の ForAnyValue 修飾子によって、指定したキーの少なくとも 1 つがリクエストに存在することが保証されます。

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
例 3: ユーザーにオブジェクトタグの追加を許可する場合は特定のタグキーと値が必要

次のポリシーの例では、s3:PutObjectTagging アクションを実行するアクセス許可をユーザーに付与します (ユーザーが既存のオブジェクトにタグを追加することができます)。この条件により、値が X に設定された特定のタグキー (Project など) をユーザーが含めることが求められます。

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X" } } } ] }