

# テーブルとテーブルバケットでの SSE-KMS の適用とスコープ設定
<a name="tables-require-kms"></a>

S3 Tables のリソースベースのポリシー、KMS キーポリシー、IAM アイデンティティベースのポリシー、またはこれらの任意の組み合わせを使用して、S3 テーブルとテーブルバケットでの SSE-KMS の使用を設定できます。テーブルのアイデンティティおよびリソースポリシーの詳細については、「[S3 Tables のアクセス管理](s3-tables-setting-up.md)」を参照してください。キーポリシーの作成方法については、「*AWS Key Management Service Developer Guide*」の「[Key policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。以下の例は、ポリシーを使用して SSE-KMS を適用する方法を示しています。

## テーブルバケットポリシーを使用してすべてのテーブルに SSE-KMS を適用する
<a name="w2aac20c35c15b3c11b5b1"></a>

このテーブルバケットポリシーの例では、ユーザーが特定の AWS KMS キーでテーブルを暗号化しない限り、特定のテーブルバケット内にテーブルを作成できないようにします。このポリシーを使用するには、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

------
#### [ JSON ]

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnforceKMSEncryptionAlgorithm",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3tables:CreateTable"
      ],
      "Resource": [
        "arn:aws:s3tables:us-west-2:111122223333:bucket/example-table-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "s3tables:sseAlgorithm": "aws:kms"
        }
      }
    },
    {
      "Sid": "EnforceKMSEncryptionKey",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3tables:CreateTable"
      ],
      "Resource": [
        "arn:aws:s3tables:us-west-2:111122223333:bucket/example-table-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "s3tables:kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      }
    }
  ]
}
```

------

## IAM ポリシーで SSE-KMS 暗号化を使用するようにユーザーに要求する
<a name="w2aac20c35c15b3c11b7b1"></a>

この IAM ID ポリシーでは、S3 Tables リソースを作成または設定するときに、特定の AWS KMS キーを暗号化に使用することをユーザーに要求します。このポリシーを使用するには、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RequireSSEKMSOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:sseAlgorithm": "aws:kms"
        }
      }
    },
    {
      "Sid": "RequireKMSKeyOnTables",
      "Action": [
          "s3tables:CreateTableBucket",
          "s3tables:PutTableBucketEncryption",
          "s3tables:CreateTable"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
            "s3tables:kmsKeyArn": "<key_arn>"
        }
      }
    }
  ]
}
```

## KMS キーポリシーを使用してキーの使用を特定のテーブルバケットに制限する
<a name="w2aac20c35c15b3c11b9b1"></a>

この KMS キーポリシーの例では、特定のテーブルバケットの暗号化オペレーションにのみキーを使用することを特定のユーザーに許可します。このタイプのポリシーは、クロスアカウントシナリオでキーへのアクセスを制限するのに役立ちます。このポリシーを使用するには、*ユーザー入力用プレースホルダー*を独自の情報に置き換えます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Id",
  "Statement": [
    {
      "Sid": "AllowPermissionsToKMS",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:s3:arn": "<table-bucket-arn>/*"
        }
      }
    }
  ]
}
```

------