

# S3 汎用バケットでタグを使用する
<a name="buckets-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-bucket"></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)」を参照してください。
**注記**  
汎用バケットの場合、ABAC はデフォルトでは有効になっていません。汎用バケットの ABAC を有効にするには、「[汎用バケットでの ABAC の有効化](buckets-tagging-enable-abac.md)」を参照してください。アクセスポイントやディレクトリバケットなどの Amazon S3 リソースの場合、ABAC はデフォルトで有効になっています。コスト配分とアクセス制御の両方に同じタグを使用できます。

### S3 汎用バケットの ABAC
<a name="abac-for-buckets"></a>

Amazon S3 汎用バケットは、タグを使用した属性ベースのアクセス制御 (ABAC) をサポートしています。AWS Organizations、IAM、S3 バケットポリシーでタグベースの条件キーを使用します。エンタープライズの場合、Amazon S3 の ABAC は複数の AWS アカウントにわたる認可をサポートしています。

IAM ポリシーでは、次の[グローバル条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)を使用して、バケットのタグに基づいて S3 バケットへのアクセスを制御できます。
+ `aws:ResourceTag/key-name`
  + この条件キーを使用して、ポリシーで指定したタグキーバリューのペアと、リソースにアタッチされているキーバリューのペアを比較します。S3 は、バケットで ABAC を有効にした後にのみ、この条件キーを評価します。たとえば、リソースに値 `Dept` の付いたタグキー `Marketing` がアタッチされている場合にのみ、そのリソースへのアクセスを許可するように要求することができます。詳細については、「[AWS のリソースに対するアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。
+ `aws:RequestTag/key-name`
  + この条件キーを使用して、リクエストで渡されたタグキーバリューのペアと、ポリシーで指定したタグペアを比較します。たとえば、リクエストに「`Dept`」タグキーが含まれ、「`Accounting`」という値が含まれているかどうかを確認できます。詳細については、「[AWS リクエスト時のアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests)」を参照してください。この条件キーを使用して、`TagResource` および `CreateBucket` API オペレーション中に渡すことができるタグのキーと値のペアを制限できます。
+ `aws:TagKeys`
  + この条件キーを使用して、リクエスト内のタグキーとポリシーで指定したキーを比較します。ポリシーでタグを使用してアクセスを制御する場合は、`aws:TagKeys` 条件キーを使用して、許可されるタグキーを定義することをお勧めします。サンプルポリシーおよび詳細については、「[タグキーに基づいたアクセスの制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys)」を参照してください。
+ `s3:BucketTag/tag-key`
  + この条件キーを使用して、タグを使用してバケット内の特定のデータに対するアクセス許可を付与します。この条件キーは、バケットで ABAC が有効になっている場合にのみ適用されます。アクセスポイントを使用してバケットにアクセスする場合、`aws:ResourceTag/tag-key` 条件キーは、アクセスポイントとバケットの両方に対して承認する際に、バケットのタグを参照します。`s3:BucketTag/tag-key` は、承認対象のバケットのタグのみを参照します。

**注記**  
タグを使用してバケットを作成する場合、aws:ResourceTag および s3:BucketTag 条件キーを使用してバケットにアクセスするためのタグベースの条件は、バケットで ABAC を有効にした後にのみ適用されることに注意してください。詳細については[汎用バケットでの ABAC の有効化](buckets-tagging-enable-abac.md)を参照してください。

### バケットの ABAC ポリシーの例
<a name="example-buckets-abac-policies"></a>

Amazon S3 バケットの次の ABAC ポリシーの例を参照してください。

#### 1.1 - 特定のタグを持つバケットを作成または変更するための IAM ポリシー
<a name="example-user-policy-request-tag"></a>

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

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

#### 1.2 - オペレーションを制限するバケットポリシー
<a name="example-user-policy-resource-tag"></a>

このバケットポリシーでは、バケットの `project ` タグの値がプリンシパルの `project` タグの値と一致する場合にのみ、IAM プリンシパル (ユーザーとロール) のバケットに対する `s3:ListBucket`、`s3:GetObject`、および `s3:PutObject` アクションが拒否されます。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyObjectOperations",
            "Effect": "Deny",
            "Principal": "*",
            "Action": ["s3:ListBucket",
                       "s3:GetObject",
                       "s3:PutObject"],
            "Resource": "arn:aws:s3:::aws-s3-demo/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
                }
            }
        }
    ]
}
```

#### 1.3 - 既存リソースのタグを変更するための IAM ポリシー
<a name="example-user-policy-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": [
        "s3:TagResource",
        "s3:CreateBucket"
      ],
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "project",
            "environment",
            "owner",
            "cost-center"
          ]
        }
      }
    }
  ]
}
```

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

この IAM ポリシーでは、条件ステートメントは、バケットにタグキー `Environment` とタグ値 `Production` がある場合にのみ、`aws-s3-demo` バケットのデータへのアクセスを許可します。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAccessViaSpecificBucket",
      "Effect": "Allow",
      "Action": "*",
      "Resource": ["arn:aws:s3:::aws-s3-demo","arn:aws:s3:::aws-s3-demo/*"],
      "Condition": {
        "StringEquals": {
          "s3:BucketTag/Environment": "Production"
        }
      }
    }
  ]
}
```

## 汎用バケットのタグの管理
<a name="managing-tags-general-buckets"></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**