

# テーブルバケットでの AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の指定
<a name="s3-tables-kms-specify"></a>

すべての Amazon S3 テーブルバケットにはデフォルトで暗号化が設定され、テーブルバケットに作成したすべての新しいテーブルは保管中に自動的に暗号化されます。Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) は、すべてのディレクトリバケットのデフォルトの暗号化設定です。別の暗号化タイプを指定する場合は、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用できます。

 `CreateTableBucket` または `CreateTable` リクエストで SSE-KMS 暗号化を指定することも、`PutTableBucketEncryption` リクエストでテーブルバケットのデフォルトの暗号化設定を指定することもできます。

**重要**  
SSE-KMS で暗号化したテーブルとテーブルバケットの自動メンテナンスを許可するには、KMS キーを使用するアクセス許可を maintenance.s3tables.amazonaws.com サービスプリンシパルに付与する必要があります。詳細については、「[S3 Tables の SSE-KMS 暗号化のアクセス許可要件](s3-tables-kms-permissions.md)」を参照してください。

## テーブルバケットの暗号化の指定
<a name="specify-kms-table-bucket"></a>

新しいテーブルバケットを作成するときに、デフォルトの暗号化タイプとして SSE-KMS を指定できます。例については、「[テーブルバケットの作成](s3-tables-buckets-create.md)」を参照してください。テーブルバケットを作成したら、REST API オペレーション、AWS SDK、AWS Command Line Interface (AWS CLI) を使用して、デフォルトの暗号化設定として SSE-KMS の使用を指定できます。

**注記**  
 デフォルトの暗号化タイプとして SSE-KMS を指定する場合、暗号化に使用するキーは S3 Tables のメンテナンスサービスプリンシパルに対してアクセスを許可する必要があります。メンテナンスサービスプリンシパルにアクセス権がない場合、そのテーブルバケットにテーブルを作成することはできません。詳細については、「[S3 Tables メンテナンスサービスプリンシパルに KMS キーへのアクセス許可を付与する](s3-tables-kms-permissions.md#tables-kms-maintenance-permissions)」を参照してください。

### AWS CLI の使用
<a name="w2aac20c35c15b3c17b9b9b1"></a>

次の AWS CLI コマンド例を使用するには、{{ユーザー入力用プレースホルダー}}を独自の情報に置き換えます。

```
aws s3tables put-table-bucket-encryption \
    --table-bucket-arn arn:aws:s3tables:{{us-east-1}}:{{111122223333}}:bucket/{{amzn-s3-demo-table-bucket}}; \
    --encryption-configuration '{
        "sseAlgorithm": "aws:kms",
        "kmsKeyArn": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
    }' \
    --region us-east-1
```

テーブルバケットのデフォルトの暗号化設定を削除するには、[DeleteTableBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_DeleteTableBucketEncryption.html) API オペレーションを使用できます。暗号化設定を削除すると、テーブルバケットに作成した新しいテーブルでは、デフォルトの SSE-S3 暗号化が使用されます。

## テーブルの暗号化の指定
<a name="specify-kms-table"></a>

SSE-KMS 暗号化は、クエリエンジン、REST API オペレーション、AWS SDK、AWS Command Line Interface (AWS CLI) を使用して新しいテーブルを作成するときに適用できます。テーブルの作成時に指定した暗号化設定は、テーブルバケットのデフォルトの暗号化設定よりも優先されます。

**注記**  
テーブルに SSE-KMS 暗号化を使用する場合、暗号化に使用するキーでは、S3 Tables メンテナンスサービスプリンシパルにアクセスを許可する必要があります。メンテナンスサービスプリンシパルにアクセス権がない場合、テーブルを作成することはできません。詳細については、「[S3 Tables メンテナンスサービスプリンシパルに KMS キーへのアクセス許可を付与する](s3-tables-kms-permissions.md#tables-kms-maintenance-permissions)」を参照してください。

****必要な アクセス許可****

暗号化されたテーブルを作成するには、以下のアクセス許可が必要です。
+ `s3tables:CreateTable`
+ `s3tables:PutTableEncryption`

## の使用AWS CLI
<a name="w2aac20c35c15b3c17c13b1"></a>

次の AWS CLI の例では、基本スキーマを使用して新しいテーブルを作成し、カスタマーマネージド AWS KMS キーを使用してテーブルを暗号化します。このコマンドを使用するには、{{ユーザー入力用プレースホルダー}}を独自の情報に置き換えます。

```
aws s3tables create-table \
  --table-bucket-arn "arn:aws:s3tables:{{Region}}:{{ownerAccountId}}:bucket/{{amzn-s3-demo-table-bucket}}" \
  --namespace "mydataset" \
  --name "orders" \
  --format "ICEBERG" \
  --encryption-configuration '{
    "sseAlgorithm": "aws:kms",
    "kmsKeyArn": "arn:aws:kms:{{Region}}:{{111122223333}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
  }' {{\
  --metadata '{
    "iceberg": {
      "schema": {
        "fields": [
          {
            "name": "order_id",
            "type": "string",
            "required": true
          },
          {
            "name": "order_date",
            "type": "timestamp",
            "required": true
          },
          {
            "name": "total_amount",
            "type": "decimal(10,2)",
            "required": true
          }
        ]
      }
    }
  }'}}
```