S3 Tables の SSE-KMS 暗号化のアクセス許可要件 - Amazon Simple Storage Service

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:GenerateDataKeykms: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 キーポリシーを通じてアクセスを許可する方法を示しています。

IAM policy

このインラインポリシーを IAM ロールにアタッチして、KMS キーへのアクセスを許可します。このポリシーを使用するには、入力用プレースホルダ値を独自の KMS キー arn に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "<kms-key-arn>" } ] }
KMS key policy

このインラインポリシーを KMS キーにアタッチして、指定した AWS KMS ロールに対してキーの使用を許可します。このポリシーを使用するには、入力用プレースホルダー値を独自の IAM ロールに置き換えます。

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<catalog-account-id>:role/<role-name>" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", ], "Resource": "*" }

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>/*" } } } ] }