S3 ディレクトリバケットでのタグの使用
AWS タグは、リソースに関するメタデータを保持するキーと値のペアで、この場合は、Amazon S3 ディレクトリバケットです。S3 ディレクトリバケットは、作成時にタグ付けしたり、既存のディレクトリバケットのタグを管理したりできます。ディレクトリバケットでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「Amazon S3 の料金
タグの仕組み
Amazon S3 ディレクトリバケットは、次の 2 種類のタグをサポートしています。
-
AWS 生成したタグ: AWS はこれらのタグを自動的に適用し、変更または削除することはできません。AWS 生成タグの詳細については、「AWS 生成タグの使用」を参照してください。
-
ユーザー定義タグ: これらのタグを S3 ディレクトリバケットまたは他のリソースに適用して管理します。
ユーザー定義タグ
ユーザー定義タグは、リソースのラベル付けに使用するタグのキーと値のペアです。ユーザー定義タグは、必須のキーとオプションの値で構成されます。ユーザー定義タグの主要なコンポーネントは次のとおりです。
タグキー
タグキーは、必須のタグ名です。例えば、project
は、次のタグキーと値のペアのタグキーです。
キー | 値 |
---|---|
project |
Trinity |
タグキーは大文字小文字を区別する文字列で、1~128 個の Unicode 文字が含まれている必要があります。
タグ値
タグ値は、オプションの文字列です。例えば、Trinity
は、このタグキーと値のペアのタグ値です。
キー | 値 |
---|---|
project |
Trinity |
タグ値は大文字小文字を区別する文字列で、0~256 個の Unicode 文字を含めることができます。
ユーザー定義タグで使用できる文字や他の制限の詳細については、「AWS Billing and Cost Management ユーザーガイド」の「ユーザー定義タグの制限」を参照してください。
タグセット
各 S3 ディレクトリバケットには、そのバケットに割り当てられたすべてのタグキーと値のペアを含むタグセットが 1 つあります。タグセットには最大 50 個のユーザー定義タグを含めることができ、空にすることもできます。
各キーはタグセット内で一意である必要がありますが、同じ値を複数回使用できます。例えば、次の 2 つのタグキーに対して同じ値、Trinity
を持つことができます。
キー | 値 |
---|---|
project |
Trinity |
cost-center |
Trinity |
既存のタグと同じキーを持つタグをバケットに追加した場合、古い値は新しい値によって上書きされます。
AWS はタグに意味論的意味を適用しません。単なる文字列としてタグを解釈します。
タグを追加、一覧表示、変更、削除するには、Amazon S3 コンソール、AWS コマンドラインインターフェイス (AWS CLI)、または Amazon S3 API を使用します。
タグを使用する一般的な方法
S3 ディレクトリバケットのタグを以下に使用します。
-
コスト配分 – AWS Billing and Cost Management でバケットタグ別にストレージコストを追跡します。
-
属性ベースのアクセス制御 (ABAC) – アクセス許可をスケーリングし、タグに基づいて S3 ディレクトリバケットへのアクセスを許可します。
注記
コスト配分とアクセスコントロールの両方に同じタグを使用できます。
コスト配分のタグを使用する
Amazon S3 ストレージコストを追跡するには、S3 ディレクトリバケットにタグを適用し、これらのタグをコスト配分用に有効にします。
コストの追跡を開始するには。
-
S3 ディレクトリバケットにタグを追加するか、既存のタグを使用します。ディレクトリバケットにユーザー定義タグを追加する方法の詳細については、「タグの操作」を参照してください。例えば、プロジェクトまたはプロジェクトのグループを識別するタグを使用してバケットにラベルを付けることができます。
-
AWS Billing and Cost Management コンソールでコスト配分のタグを有効にします。「AWS Billing and Cost Management ユーザーガイド」の「ユーザー定義のコスト配分タグのアクティブ化」を参照してください。ユーザー定義タグまたは AWS 生成タグをアクティブ化できます。詳細については、「AWS コスト配分タグを使用したコストの整理と追跡」を参照してください。
AWS は、アクティブ化されたタグを使用して、次のようなさまざまな請求およびコスト管理ツールでリソースコストを整理します。
-
コスト配分レポート
アクティブ化されたタグ別に整理されたコストの概要を表示します。詳細については、「AWS 請求ユーザーガイド」の「毎月のコスト配分レポートの使用」を参照してください。
-
コストと使用状況レポート (CUR)
タグベースのコスト内訳を含む、AWS コストと使用状況データの最も詳細なセットを提供します。詳細については、「AWS データエクスポートユーザーガイド」の「AWS コストと使用状況レポートとは?」を参照してください。
タグの属性ベースのアクセス制御 (ABAC) を使用する
属性ベースのアクセス制御 (ABAC) は、属性すなわちタグに基づいてアクセス許可を定義する認可戦略です。AWS Identity and Access Management (IAM) エンティティ (ユーザーまたはロール) および Amazon S3 ディレクトリバケットなどの AWS リソースにタグをアタッチできます。次に、アクセスコントロールポリシーのタグベースの条件を使用してこれらのリソースへのアクセス許可を制御し、これらの条件が満たされたときにオペレーションを許可または拒否します。
S3 ディレクトリバケットの ABAC
Amazon S3 ディレクトリバケットは、タグを使用した属性ベースのアクセス制御 (ABAC) をサポートしています。AWS 組織、IAM、S3 ディレクトリバケットポリシーでタグベースの条件キーを使用します。エンタープライズの場合、Amazon S3 の ABAC は複数の AWS アカウントにわたる認可をサポートしています。
IAM ポリシーでは、次のグローバル条件キーを使用して、バケットのタグに基づいて S3 ディレクトリバケットへのアクセスを制御できます。
-
aws:ResourceTag/key-name
-
このキーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。たとえば、リソースに値
Marketing
の付いたタグキーDept
がアタッチされている場合にのみ、そのリソースへのアクセスを許可するように要求することができます。詳細については、「AWS のリソースに対するアクセスの制御」を参照してください。
-
-
aws:RequestTag/key-name
-
このキーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。たとえば、リクエストに「
Dept
」タグキーが含まれ、「Accounting
」という値が含まれているかどうかを確認できます。詳細については、「AWS リクエスト時のアクセスの制御」を参照してください。この条件キーを使用して、TagResource
およびCreateBucket
API オペレーション中に渡すことができるタグキーと値のペアを制限できます。
-
-
aws:TagKeys
-
このキーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較します。ポリシーでタグを使用してアクセスを制御する場合は、
aws:TagKeys
条件キーを使用して、許可されるタグキーを定義することをお勧めします。サンプルポリシーおよび詳細については、「タグキーに基づいたアクセスの制御」を参照してください。タグを使用して S3 ディレクトリバケットを作成できます。CreateBucket
API オペレーション中にタグ付けを許可するには、s3express:TagResource
とs3express:CreateBucket
アクションの両方を含むポリシーを作成する必要があります。次に、aws:TagKeys
条件キーを使用して、CreateBucket
リクエストで特定のタグキーを使用して適用できます。
-
-
s3express:BucketTag/tag-key
-
この条件キーを使用して、タグを使用してディレクトリバケット内の特定のデータにアクセス許可を付与します。アクセスポイントを使用してディレクトリバケットにアクセスする場合、この条件キーは、アクセスポイントとディレクトリバケットの両方に対して承認する際に、ディレクトリバケットのタグを参照します。一方、
aws:ResourceTag/tag-key
は、承認対象のリソースのタグのみを参照します。
-
ポリシーの例
Amazon S3 ディレクトリバケットの次の ABAC ポリシーの例を参照してください。
1.1 - 特定のタグを持つバケットを作成または変更する IAM ポリシー
この IAM ポリシーでは、このポリシーを持つユーザーまたはロールは、バケットの作成リクエストでタグキー project
とタグ値 Trinity
を使用してバケットにタグを付ける場合にのみ、S3 ディレクトリバケットを作成できます。また、TagResource
リクエストにタグのキーと値のペア project:Trinity
が含まれている限り、既存の S3 ディレクトリバケットのタグを追加または変更できます。このポリシーは、バケットまたはそのオブジェクトに対する読み取り、書き込み、または削除のアクセス許可を付与しません。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateBucketWithTags", "Effect": "Allow", "Action": [ "s3express:CreateBucket", "s3express:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/project": [ "
Trinity
" ] } } } ] }
1.2 - タグを使用してバケットのオペレーションを制限するバケットポリシー
このバケットポリシーでは、IAM プリンシパル (ユーザーとロール) は、バケットの project
タグの値がプリンシパルの project
タグの値と一致する場合にのみ、バケットの CreateSession
アクションを使用してオペレーションを実行できます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowObjectOperations", "Effect": "Allow", "Principal": { "AWS": "
111122223333
" }, "Action": "s3express:CreateSession", "Resource": "arn:aws:s3express:us-west-2
:111122223333
:bucket/", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }
amzn-s3-demo-bucket--usw2-az1--x-s3
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": [ "s3express:TagResource" ], "Resource": "arn:aws:s3express:*:*:bucket/*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "
project
", "environment
", "owner
", "cost-center
" ] } } } ] }
1.4 - s3express:BucketTag 条件キーを使用する
この IAM ポリシーでは、条件ステートメントは、バケットにタグキー Environment
とタグ値 Production
がある場合にのみ、バケットのデータへのアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToSpecificAccessPoint", "Effect": "Allow", "Action": "*", "Resource": "arn:aws:s3express:*:*:accesspoint/*", "Condition": { "StringEquals": { "s3express:BucketTag/Environment": "Production" } } } ] }
タグの操作
Amazon S3コンソール、AWS コマンドラインインターフェイス (CLI)、AWS SDK、または S3 API、TagResource、UntagResource、ListTagsForResource を使用して、S3 ディレクトリバケットのタグを追加または管理できます。詳細については、以下を参照してください。