S3 テーブルバケットでのタグの使用
AWS タグは、リソースに関するメタデータを保持するキーと値のペアで、この場合は、Amazon S3 テーブルバケットです。S3 テーブルバケットは、作成時にタグ付けしたり、既存のテーブルバケットのタグを管理したりできます。タグに関する一般情報については、「コスト配分または属性ベースのアクセス制御 (ABAC) のタグ付け」を参照してください。
注記
テーブルバケットでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「Amazon S3 の料金
テーブルバケットでタグを使用する一般的な方法
S3 テーブルバケットのタグを以下に使用します。
属性ベースのアクセス制御 (ABAC) – アクセス許可をスケールし、タグに基づいて S3 テーブルバケットへのアクセスを許可します。詳細については、「Using tags for ABAC」を参照してください。
S3 テーブルバケットの ABAC
Amazon S3 テーブルバケットは、タグを使用した属性ベースのアクセス制御 (ABAC) をサポートしています。AWS Organizations、AWS Identity and Access Management (IAM)、S3 テーブルバケットポリシーでタグベースの条件キーを使用します。Amazon S3 の ABAC は複数の AWS アカウントにわたる認可をサポートしています。
IAM ポリシーでは、s3tables:TableBucketTag/tag-key 条件キーまたは AWS グローバル条件キー (aws:ResourceTag/key-name、aws:RequestTag/key-name、または aws:TagKeys) を使用して、テーブルバケットのタグに基づいて S3 テーブルバケットへのアクセスを制御できます。
aws:ResourceTag/key-name
この条件キーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。例えば、テーブルバケットに値 Marketing のタグキー Department がある場合にのみ、そのテーブルバケットへのアクセスを許可するように要求することができます。
この条件キーは、CreateBucket API リクエストを除き、Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、S3 API、または AWS SDK を使用して実行されるすべてのテーブルバケットアクションに適用されます。
ポリシーの例については「1.1 - タグを使用してテーブルバケットのオペレーションを制限するためのテーブルバケットポリシー」を参照してください。
その他のポリシー例と詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS リソースへのアクセスの制御」を参照してください。
注記
テーブルに対して実行されるアクションの場合、この条件キーは、テーブルに適用されるタグに作用し、テーブルを含むテーブルバケットに適用されるタグには作用しません。ABAC ポリシーでテーブルアクションを実行するときにテーブルバケットのタグを操作する場合は、代わりに s3tables:TableBucketTag/tag-key を使用します。
aws:RequestTag/key-name
この条件キーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。例えば、テーブルバケットにタグを付けるリクエストに「Department」タグキーが含まれ、「Accounting」という値が含まれているかどうかを確認できます。
この条件キーは、タグキーが TagResource または CreateTableBucket API オペレーションリクエストで渡された場合、または Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、または AWS SDK を使用してタグ付きテーブルバケットにタグを付けたり作成したりする場合に適用されます。
ポリシーの例については「1.2 - 特定のタグを持つテーブルバケットを作成または変更するための IAM ポリシー」を参照してください。
その他のポリシーの例と詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS リクエスト時のアクセスの制御」を参照してください。
aws:TagKeys
この条件キーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較し、アクセスが許可されるタグキーを定義します。例えば、CreateTableBucket アクション中にタグ付けを許可するには、s3tables:TagResource アクションと s3tables:CreateTableBucket アクションの両方を許可するポリシーを作成する必要があります。次に、aws:TagKeys 条件キーを使用して、CreateTableBucket リクエストで特定のタグのみが使用されるように適用できます。
この条件キーは、タグキーが TagResource、UntagResource、または CreateTableBucket API オペレーションで渡された場合、または Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、または AWS SDK を使用してタグ付きテーブルバケットのタグ付け、タグ解除、または作成を行う場合に適用されます。
ポリシーの例については「1.3 - タグ付け管理を維持しながら既存のリソースのタグの変更を制御するための IAM ポリシー」を参照してください。
その他のサンプルポリシーおよび詳細については、「AWS Identity and Access Management ユーザーガイド」の「タグキーに基づいたアクセス制御」を参照してください。
s3tables:TableBucketTag/tag-key
この条件キーを使用して、タグを使用してテーブルバケット内の特定のデータに対するアクセス許可を付与します。この条件キーは、ほとんどの場合、すべての S3 テーブルアクションのテーブルバケットに割り当てられたタグに対して動作します。タグを使用してテーブルを作成する場合でも、この条件キーは、そのテーブルを含むテーブルバケットに適用されるタグに対して動作します。例外は次のとおりです。
タグを使用してテーブルバケットを作成すると、この条件キーはリクエスト内のタグに対して動作します。
ポリシーの例については「1.4 - s3tables:TableBucketTag 条件キーを使用する」を参照してください。
テーブルバケットの ABAC ポリシーの例
Amazon S3 テーブルバケットの次の ABAC ポリシーの例を参照してください。
注記
Lake Formation を使用して Amazon S3 Tables へのアクセスを管理し、プリンシパルタグに基づいて IAM ユーザーと IAM ロールを制限する IAM または S3 Tables リソースベースのポリシーがある場合は、Lake Formation が Amazon S3 データにアクセスするために使用する IAM ロール (LakeFormationDataAccessRole など) に同じプリンシパルタグをアタッチし、このロールに必要なアクセス許可を付与する必要があります。これは、タグベースのアクセスコントロールポリシーが S3 Tables 分析統合で正しく機能するために必要です。
1.1 - タグを使用してテーブルバケットのオペレーションを制限するためのテーブルバケットポリシー
このテーブルバケットポリシーでは、指定された IAM プリンシパル (ユーザーとロール) は、テーブルの project タグの値がプリンシパルの project タグの値と一致する場合にのみ、テーブルバケット内の任意のテーブルに対して GetTable アクションを実行できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetTable", "Effect": "Allow", "Principal": { "AWS": "111122223333" }, "Action": "s3tables:GetTable", "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }
1.2 - 特定のタグを持つテーブルバケットを作成または変更するための IAM ポリシー
注記
AWS Lake Formation を使用して Amazon S3 テーブルへのアクセスを管理し、Amazon S3 Tables テーブルで ABAC を使用している場合は、Lake Formation が必要なアクセスを引き受ける IAM ロールも付与してください。Lake Formation の IAM ロールの設定の詳細については、「AWS Lake Formation デベロッパーガイド」の「Amazon S3テーブルカタログをデータカタログおよび Lake Formation と統合するための前提条件」を参照してください。
この IAM ポリシーでは、このポリシーを持つユーザーまたはロールは、テーブルバケットの作成リクエストでタグキー project とタグ値 Trinity を使用してテーブルバケットにタグを付ける場合にのみ、S3 テーブルバケットを作成できます。また、TagResource リクエストにタグのキーと値のペア project:Trinity が含まれている限り、既存の S3 テーブルバケットのタグを追加または変更できます。このポリシーは、テーブルバケットまたはそのオブジェクトに対する読み取り、書き込み、または削除のアクセス許可を付与しません。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateTableBucketWithTags", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/project": [ "Trinity" ] } } } ] }
1.3 - タグ付け管理を維持しながら既存のリソースのタグの変更を制御するための IAM ポリシー
この IAM ポリシーでは、IAM プリンシパル (ユーザーまたはロール) は、テーブルバケットの project タグの値がプリンシパルの project タグの値と一致する場合にのみ、テーブルバケットのタグを変更できます。条件キー aws:TagKeys で指定された project、environment、owner、および cost-center の 4 つのタグのみが、これらのテーブルバケットに対して許可されます。これにより、タグガバナンスの適用、不正なタグ変更の防止、およびテーブルバケット間でのタグ付けスキーマの一貫性の維持が可能になります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceTaggingRulesOnModification", "Effect": "Allow", "Action": [ "s3tables:TagResource", "s3tables:UntagResource" ], "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "project", "environment", "owner", "cost-center" ] } } } ] }
1.4 - s3tables:TableBucketTag 条件キーを使用する
この IAM ポリシーでは、条件ステートメントは、テーブルバケットにタグキー Environment とタグ値 Production がある場合にのみ、テーブルバケットのデータへのアクセスを許可します。s3tables:TableBucketTag/<tag-key> は、タグに応じてテーブルバケットへのアクセスを制御するだけでなく、親テーブルバケットのタグに基づいてテーブルへのアクセスを制御することができるため、aws:ResourceTag/<tag-key> 条件キーとは異なります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToSpecificTables", "Effect": "Allow", "Action": "*", "Resource": "arn:aws::s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket/*", "Condition": { "StringEquals": { "s3tables:TableBucketTag/Environment": "Production" } } } ] }
テーブルバケットのタグの管理
Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、AWS SDK、または S3 API、TagResource、UntagResource、ListTagsForResource を使用して、S3 テーブルバケットのタグを追加または管理できます。詳細については次を参照してください: