タグ付けとアクセスコントロールポリシー - 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: 特定のタグが設定されたオブジェクトの読み取りのみをユーザーに許可する

次のアクセス許可ポリシーは、オブジェクトの読み取り専用権限をユーザーに許可しますが、条件によって、その読み取り権限は次のタグキーと値を持つオブジェクトのみに限定されます。

security : public

このポリシーではキーと値を指定するために Amazon S3 条件キー s3:ExistingObjectTag/<tag-key> を使用することに注意してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::awsexamplebucket1/*", "Principal": "*", "Condition": { "StringEquals": {"s3:ExistingObjectTag/security": "public" } } } ] }

例 2: 許可されるタグキーを制限してオブジェクトタグの追加をユーザーに許可する

次のアクセス許可ポリシーは、s3:PutObjectTagging アクションを実行する権限をユーザーに許可します (ユーザーが既存のオブジェクトにタグを付けることができます)。条件によって、ユーザーが使用できるタグキーが制限されます。この条件は s3:RequestObjectTagKeys 条件キーを使用して、一連のタグキーを指定します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "CanonicalUser":[ "64-digit-alphanumeric-value" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

このポリシーにより、タグセットがリクエストに指定された場合に、指定のキーを含むことが保証されます。このポリシーによって認められているため、ユーザーは PutObjectTagging で空のタグセットを送信できます (リクエストに空のタグセットを指定すると、オブジェクトの既存のタグが削除されます)。ユーザーがタグセットを削除しないようにするには、ユーザーが少なくとも 1 つの値を指定するように別の条件を追加できます。条件の ForAnyValue によって、指定した値の少なくとも 1 つがリクエストに存在することが保証されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "ForAllValues:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] }, "ForAnyValue:StringLike": { "s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

詳細については、IAM ユーザーガイドの「複数のキーまたは値による条件の作成 (オペレーションの設定)」を参照してください。

例 3: 特定のタグキーと値を含むオブジェクトタグの追加をユーザーに許可する

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::awsexamplebucket1/*" ], "Principal":{ "AWS":[ "arn:aws:iam::account-number-without-hyphens:user/username" ] }, "Condition": { "StringEquals": { "s3:RequestObjectTag/Project": "X" } } } ] }