S3 Tables の SSE-KMS 暗号化のアクセス許可要件
S3 テーブルバケット内のテーブルで AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用する場合は、アカウント内のさまざまな ID にアクセス許可を付与する必要があります。少なくとも、アクセスアイデンティティと S3 Tables メンテナンスプリンシパルには、キーへのアクセス権が必要です。ユースケースに応じて他のアクセス許可が必要になります。
- 必要なアクセス許可
KMS キーで暗号化されたテーブルにアクセスするには、そのキーに対する以下のアクセス許可が必要です。
kms:GenerateDataKey
kms:Decrypt
重要
テーブルで SSE-KMS を使用する場合、Amazon S3 Tables メンテナンスサービスプリンシパル (
maintenance.s3tables.amazonaws.com
) には、キーへのアクセス許可としてkms:GenerateDataKey
とkms:Decrypt
が必要です。- 追加のアクセス許可
-
ユースケースに応じて、以下の追加のアクセス許可が必要です。
AWS 分析サービス統合のアクセス許可 – AWS 分析サービスで SSE-KMS で暗号化されたテーブルを使用する場合、統合ロールには KMS キーを使用するアクセス許可が必要です。
直接アクセスのアクセス許可 – Amazon S3 Tables の Iceberg REST エンドポイントまたは Apache Iceberg の Amazon S3 Tables カタログなどの方法で SSE-KMS で暗号化されたテーブルを直接使用する場合は、クライアントが使用する IAM ロールにキーへのアクセス許可が必要です。
S3 メタデータテーブルのアクセス許可 – S3 メタデータテーブルで SSE-KMS 暗号化を使用する場合は、S3 メタデータサービスプリンシパル (
metadata.s3.amazonaws.com
) に KMS キーへのアクセス許可が必要です。これにより、S3 メタデータは暗号化されたテーブルを更新して、最新のデータ変更を反映できます。
注記
クロスアカウント KMS キーの場合、IAM ロールには、キーポリシーでのキーアクセス許可と明示的な認可の両方が必要です。KMS キーのクロスアカウントアクセス許可の詳細については、「AWS Key Management Service Service Developer Guide」の「Allowing external AWS accounts to use a KMS key」を参照してください。
トピック
S3 Tables メンテナンスサービスプリンシパルに KMS キーへのアクセス許可を付与する
このアクセス許可は、SSE-KMS で暗号化されたテーブルを作成して、暗号化されたテーブルに対する圧縮、スナップショット管理、参照されていないファイルの削除などの自動テーブルメンテナンスを許可するために必要です。
注記
SSE-KMS で暗号化されたテーブルの作成をリクエストするたびに、S3 Tables は maintenance.s3tables.amazonaws.com
プリンシパルが KMS キーにアクセスできることを確認します。この確認を行うために、テーブルバケットに 0 バイトのオブジェクトが一時的に作成されます。このオブジェクトは、参照されていないファイルの削除メンテナンスオペレーションによって自動的に削除されます。暗号化に指定した KMS キーにメンテナンスアクセス権がない場合、createTable オペレーションは失敗します。
SSE-KMS で暗号化されたテーブルへのメンテナンスアクセスを許可するには、次のキーポリシーの例を使用できます。このポリシーでは、maintenance.s3tables.amazonaws.com
サービスプリンシパルに対して、特定のテーブルバケット内のテーブルを暗号化および復号するための特定の KMS キーを使用するアクセス許可が付与されます。ポリシーを使用するには、ユーザー入力用プレースホルダー
を独自の情報に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>
/*" } } } ] }
統合された AWS 分析サービスにおいて暗号化されたテーブルを使用するアクセス許可を IAM プリンシパルに付与する
AWS 分析サービスで S3 テーブルを使用するには、テーブルバケットを Amazon SageMaker Lakehouse と統合します。この統合により、AWS 分析サービスはテーブルデータを自動的に検出してアクセスできるようになります。統合の詳細については、「AWS 分析サービスで Amazon S3 Tables を使用する」を参照してください。
これらのサービスで SSE-KMS で暗号化されたテーブルを使用する場合、使用するロールには、暗号化オペレーションで AWS KMS キーを使用するアクセス許可が必要です。これらのアクセス許可は、統合中に作成した S3TablesRoleForLakeFormation
ロール、または独自の IAM ロールに適用できます。
次のインライン IAM ポリシーの例を使用して、アカウント内の特定の KMS キーを暗号化オペレーションに使用するアクセス許可を S3TablesRoleForLakeFormation
サービスロールに付与できます。ポリシーを使用するには、入力用プレースホルダー値
を独自の値に置き換えます。
{ "Sid": "AllowTableRoleAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:role/service-role/S3TablesRoleForLakeFormation" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "<kms-key-arn>
" }
暗号化されたテーブルを直接使用するアクセス許可を IAM プリンシパルに付与する
サードパーティーまたは直接アクセス方式を使用して暗号化されたテーブルを使用する場合は、使用するロールに対して KMS キーへのアクセスを許可する必要があります。以下の例は、IAM ポリシーまたは KMS キーポリシーを通じてアクセスを許可する方法を示しています。
S3 メタデータサービスプリンシパルに KMS キーを使用するアクセス許可を付与する
Amazon S3 に対して SSE-KMS で暗号化されたメタデータテーブルを更新し、これらのメタデータテーブルのメンテナンスを実行することを許可するには、次のキーポリシーの例を使用できます。このポリシーでは、metadata.s3.amazonaws.com
および maintenance.s3tables.amazonaws.com
サービスプリンシパルに対して、特定のキーを使用して特定のテーブルバケット内のテーブルを暗号化および復号することを許可します。ポリシーを使用するには、ユーザー入力用プレースホルダー
を独自の情報に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": [ "maintenance.s3tables.amazonaws.com", "metadata.s3.amazonaws.com" ] }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "
<kms-key-arn>
", "Condition": { "StringLike ": { "kms:EncryptionContext:aws:s3:arn": "<table-or-table-bucket-arn>
/*" } } } ] }