

# S3 テーブルでのタグの使用
<a name="table-tagging"></a>

AWS タグは、リソースに関するメタデータを保持するキーと値のペアで、この場合は Amazon S3 テーブルです。S3 テーブルは、作成時にタグ付けしたり、既存のテーブルのタグを管理したりできます。タグに関する一般情報については、「[コスト配分または属性ベースのアクセス制御 (ABAC) のタグ付け](tagging.md)」を参照してください。

**注記**  
テーブルでタグを使用することによる追加料金は、標準の S3 API リクエスト料金を超えて発生しません。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

## テーブルでタグを使用する一般的な方法
<a name="common-ways-to-use-tags-table"></a>

S3 テーブルのタグを以下に使用します。

1. **コスト配分** – AWS Billing and Cost Management でテーブルタグ別にストレージコストを追跡します。詳細については、「[Using tags for cost allocation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-cost-allocation)」を参照してください。

1. **属性ベースのアクセス制御 (ABAC)** – アクセス許可をスケールし、タグに基づいて S3 テーブルへのアクセスを許可します。詳細については、「[Using tags for ABAC](https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging.html#using-tags-for-abac)」を参照してください。

**注記**  
コスト配分とアクセス制御の両方に同じタグを使用できます。

### S3 テーブル向けの ABAC
<a name="abac-for-tables"></a>

Amazon S3 テーブルは、タグを使用した属性ベースのアクセス制御 (ABAC) をサポートしています。AWS Organizations、AWS Identity and Access Management (IAM)、S3 テーブルポリシーでタグベースの条件キーを使用します。Amazon S3 の ABAC は複数の AWS アカウントにわたる認可をサポートしています。

IAM ポリシーでは、`s3tables:TableBucketTag/tag-key` 条件キーまたは [AWS グローバル条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)キー (`aws:ResourceTag/key-name`、`aws:RequestTag/key-name`、または `aws:TagKeys`) を使用して、テーブルのタグに基づいて S3 テーブルへのアクセスを制御できます。

#### aws:ResourceTag/key-name
<a name="table-condition-key-resource-tag"></a>

この条件キーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。例えば、テーブルに値 `Marketing` のタグキー `Department` がある場合にのみ、そのテーブルへのアクセスを許可するように要求することができます。

この条件キーは、Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、S3 API、または AWS SDK を使用して実行されるテーブルアクションに適用されます。

ポリシーの例については「[1.1 - タグを使用してテーブルのオペレーションを制限するためのテーブルポリシー](#example-policy-table-resource-tag)」を参照してください。

その他のポリシー例と詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[AWS リソースへのアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。

**注記**  
テーブルに対して実行されるアクションの場合、この条件キーは、テーブルに適用されるタグに作用し、テーブルを含むテーブルバケットに適用されるタグには作用しません。ABAC ポリシーでテーブルアクションを実行するときにテーブルバケットのタグを操作する場合は、代わりに `s3tables:TableBucketTag/tag-key` を使用します。

#### aws:RequestTag/key-name
<a name="table-condition-key-request-tag"></a>

この条件キーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。例えば、テーブルにタグを付けるリクエストに「`Department`」タグキーが含まれ、「`Accounting`」という値が含まれているかどうかを確認できます。

この条件キーは、タグキーが `TagResource` または `CreateTable` API オペレーションリクエストで渡された場合、Amazon S3 コンソール、AWS コマンドラインインターフェイス (CLI)、または AWS SDK を使用してタグ付きテーブルにタグを付けたり作成したりする場合に適用されます。

ポリシーの例については「[1.2 - 特定のタグを持つテーブルを作成または変更するための IAM ポリシー](#example-policy-table-request-tag)」を参照してください。

その他のポリシーの例と詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[AWS リクエスト時のアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)」を参照してください。

#### aws:TagKeys
<a name="table-condition-key-tag-keys"></a>

この条件キーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較し、アクセスが許可されるタグキーを定義します。例えば、`CreateTable` アクション中にタグ付けを許可するには、`s3tables:TagResource` アクションと `s3tables:CreateTable` アクションの両方を許可するポリシーを作成する必要があります。次に、`aws:TagKeys` 条件キーを使用して、`CreateTable` リクエストで特定のタグのみが使用されるように適用できます。

この条件キーは、`TagResource`、`UntagResource` または `CreateTable` API オペレーションでタグキーを渡す場合、AWS コマンドラインインターフェイス (CLI) または AWS SDK を使用してタグを付ける、タグを解除する、またはタグ付きテーブルを作成する場合に適用されます。

ポリシーの例については「[1.3 - タグ付け管理を維持しながら既存のリソースのタグの変更を制御するための IAM ポリシー](#example-policy-table-tag-keys)」を参照してください。

その他のサンプルポリシーおよび詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[タグキーに基づいたアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)」を参照してください。

#### s3tables:TableBucketTag/tag-key
<a name="table-bucket-tag-condition-key"></a>

この条件キーを使用して、タグを使用してテーブルバケット内の特定のデータに対するアクセス許可を付与します。この条件キーは、ほとんどの場合、すべての S3 テーブルアクションのテーブルバケットに割り当てられたタグに対して動作します。タグを使用してテーブルを作成する場合でも、この条件キーは、そのテーブルを含むテーブルバケットに適用されるタグに対して動作します。例外は次のとおりです。
+ タグを使用してテーブルバケットを作成すると、この条件キーはリクエスト内のタグに対して動作します。

ポリシーの例については「[1.4 - s3tables:TableBucketTag 条件キーを使用する](#example-policy-table-bucket-tag-tables)」を参照してください。

#### テーブルの ABAC ポリシーの例
<a name="example-table-abac-policies"></a>

Amazon S3 テーブルの次の ABAC ポリシーの例を参照してください。

**注記**  
プリンシパルタグに基づいて IAM ユーザーと IAM ロールを制限する IAM または S3 Tables リソースベースのポリシーがある場合は、Lake Formation が Amazon S3 データにアクセスするために使用する IAM ロール (LakeFormationDataAccessRole など) に同じプリンシパルタグをアタッチし、このロールに必要なアクセス許可を付与する必要があります。これは、タグベースのアクセスコントロールポリシーが S3 Tables 分析統合で正しく機能するために必要です。

##### 1.1 - タグを使用してテーブルのオペレーションを制限するためのテーブルポリシー
<a name="example-policy-table-resource-tag"></a>

このテーブルポリシーでは、指定された 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/my_example_tab;e",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        }
      }
    }
  ]
}
```

##### 1.2 - 特定のタグを持つテーブルを作成または変更するための IAM ポリシー
<a name="example-policy-table-request-tag"></a>

この IAM ポリシーでは、このポリシーを持つユーザーまたはロールは、テーブルの作成リクエストでタグキー `project` とタグ値 `Trinity` を使用してテーブルにタグを付ける場合にのみ、S3 テーブルを作成できます。また、`TagResource` リクエストにタグのキーと値のペア `project:Trinity` が含まれている限り、既存の S3 テーブルのタグを追加または変更できます。このポリシーは、テーブルまたはそのオブジェクトに対する読み取り、書き込み、または削除のアクセス許可を付与しません。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateTableWithTags",
      "Effect": "Allow",
      "Action": [
        "s3tables:CreateTable",
        "s3tables:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": [
            "Trinity"
          ]
        }
      }
    }
  ]
}
```

##### 1.3 - タグ付け管理を維持しながら既存のリソースのタグの変更を制御するための IAM ポリシー
<a name="example-policy-table-tag-keys"></a>

この 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/my_example_table",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

##### 1.4 - s3tables:TableBucketTag 条件キーを使用する
<a name="example-policy-table-bucket-tag-tables"></a>

この 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"
        }
      }
    }
  ]
}
```

## テーブルのタグの管理
<a name="table-working-with-tags"></a>

Amazon S3コンソール、AWS コマンドラインインターフェイス (CLI)、AWS SDK、または S3 API、[TagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_TagResource.html)、[UntagResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UntagResource.html)、[ListTagsForResource](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListTagsForResource.html) を使用して、S3 テーブルのタグを追加または管理できます。詳細については、以下を参照してください。

**Topics**
+ [テーブルでタグを使用する一般的な方法](#common-ways-to-use-tags-table)
+ [テーブルのタグの管理](#table-working-with-tags)
+ [タグ付きテーブルの作成](table-create-tag.md)
+ [テーブルへのタグの追加](table-tag-add.md)
+ [テーブルのタグの表示](table-tag-view.md)
+ [テーブルからタグを削除する](table-tag-delete.md)