

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

**Topics**
+ [テーブルとテーブルバケットでの SSE-KMS の仕組み](#kms-tables-how)
+ [テーブルとテーブルバケットでの SSE-KMS の適用とスコープ設定](tables-require-kms.md)
+ [テーブルとテーブルバケットの SSE-KMS 暗号化のモニタリングと監査](#kms-tables-audit)
+ [S3 Tables の SSE-KMS 暗号化のアクセス許可要件](s3-tables-kms-permissions.md)
+ [テーブルバケットでの AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の指定](s3-tables-kms-specify.md)

すべてのテーブルバケットには、デフォルトの暗号化設定があり、テーブルは Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3) を使用して自動的に暗号化されます。この暗号化は、S3 テーブルバケット内のすべてのテーブルに適用され、費用はかかりません。

キーローテーションやアクセスポリシー付与を管理するなど、暗号化キーをより細かく制御する必要がある場合は、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用するようにテーブルバケットを設定できます。AWS KMS のセキュリティ制御は、暗号化関連のコンプライアンス要件を満たすのに役立ちます。SSE-KMS に関する詳細は、「[AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用](UsingKMSEncryption.md)」を参照してください。

## テーブルとテーブルバケットでの SSE-KMS の仕組み
<a name="kms-tables-how"></a>

ディレクトリバケットでの SSE-KMS は、以下の点で汎用バケットでの SSE-KMS とは異なります。
+ テーブルバケットと個々のテーブルの暗号化設定を指定できます。
+ SSE-KMS では、カスタマーマネージドキーのみを使用できます。AWS マネージドキーはサポートされていません。
+ AWS KMS キーにアクセスするには、特定のロールと AWS サービスプリンシパルにアクセス許可を付与する必要があります。詳細については、「[S3 Tables の SSE-KMS 暗号化のアクセス許可要件](s3-tables-kms-permissions.md)」を参照してください。これには、以下へのアクセスの許可が含まれます。
  + S3 メンテナンスプリンシパル – 暗号化されたテーブルでテーブルメンテナンスを実行
  + S3 Tables 統合ロール – AWS 分析サービスで暗号化されたテーブルを使用
  + クライアントアクセスロール – Apache Iceberg クライアントから暗号化されたテーブルに直接アクセス
  + S3 メタデータプリンシパル – 暗号化された S3 メタデータテーブルを更新
+ 暗号化されたテーブルは、テーブルレベルのキーを使用して AWS KMS へのリクエスト数を最小限に抑え、SSE-KMS で暗号化されたテーブルの操作をよりコスト効率の高いものにします。

**テーブルバケットの SSE-KMS 暗号化**  
テーブルバケットを作成するときは、デフォルトの暗号化タイプとして SSE-KMS を選択し、暗号化に使用する特定の KMS キーを指定できます。テーブルバケット内に作成したすべてのテーブルは、テーブルバケットから暗号化設定を自動的に継承します。テーブルバケットのデフォルトの暗号化設定は、AWS CLI、S3 API、または AWS SDK を使用していつでも変更または削除できます。テーブルバケットの暗号化設定を変更すると、変更後の設定はバケット内に作成した新しいテーブルにのみ適用されます。既存のテーブルの暗号化設定は変更されません。詳細については、「[テーブルバケットの暗号化の指定](s3-tables-kms-specify.md#specify-kms-table-bucket)」を参照してください。

**テーブルの SSE-KMS 暗号化**  
バケットのデフォルトの暗号化設定に関係なく、個別のテーブルを別の KMS キーで暗号化することもできます。個別のテーブルの暗号化を設定するには、目的の暗号化キーをテーブルの作成時に指定する必要があります。既存のテーブルの暗号化を変更する場合は、目的のキーを使用してテーブルを作成し、古いテーブルから新しいテーブルにデータをコピーする必要があります。詳細については、「[テーブルの暗号化の指定](s3-tables-kms-specify.md#specify-kms-table)」を参照してください。

AWS KMS 暗号化を使用する場合、S3 Tables は、テーブルレベルの一意のデータキーを自動的に作成して各テーブルに関連する新しいオブジェクトを暗号化します。これらのキーの使用期間は限定され、暗号化オペレーション中の追加の AWS KMS リクエストの必要性を最小限に抑え、暗号化のコストを削減します。これは [SSE−KMS の S3 バケットキー](bucket-key.md#bucket-key-overview) に似ています。

## テーブルとテーブルバケットの SSE-KMS 暗号化のモニタリングと監査
<a name="kms-tables-audit"></a>

SSE-KMS で暗号化されたデータの AWS KMS キーの使用状況を監査するには、AWS CloudTrail ログを使用します。`GenerateDataKey` や `Decrypt` などの[暗号化オペレーション](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations)に関するインサイトを得ることができます。CloudTrail は、イベント名、ユーザー名、イベントソースなど、検索をフィルタリングするための多数の[属性値](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html)をサポートしています。

CloudTrail イベントを使用して、Amazon S3 のテーブルとテーブルバケットへの暗号化設定リクエストを追跡できます。CloudTrail ログでは、以下の API イベント名が使用されます。
+ `s3tables:PutTableBucketEncryption`
+ `s3tables:GetTableBucketEncryption`
+ `s3tables:DeleteTableBucketEncryption`
+ `s3tables:GetTableEncryption`
+ `s3tables:CreateTable`
+ `s3tables:CreateTableBucket`

**注記**  
EventBridge はテーブルバケットではサポートされていません。