S3 Tables SSE-KMS 加密的許可要求 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

S3 Tables SSE-KMS 加密的許可要求

當您對 S3 資料表儲存貯體中的資料表使用伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 時,您需要授予帳戶中不同身分的許可。至少您的存取身分和 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 TablesIceberg REST 端點或 Amazon S3 Tables Catalog 等方法來直接使用 SSE-KMS 加密資料表Apache Iceberg,則需要授予用戶端使用存取金鑰的 IAM 角色。

  • S3 中繼資料表的許可 – 如果您針對 S3 中繼資料表使用 S3-KMS 加密,您需要提供 S3 中繼資料服務主體 (metadata.s3.amazonaws.com) 存取您的 KMS 金鑰。這可讓 S3 Metadata 更新加密的資料表,以便它們反映您最新的資料變更。

注意

對於跨帳戶 KMS 金鑰,您的 IAM 角色需要金鑰存取許可和金鑰政策中的明確授權。如需 KMS 金鑰跨帳戶許可的詳細資訊,請參閱AWS Key Management Service 《服務開發人員指南》中的允許外部 AWS 帳戶使用 KMS 金鑰

將 S3 Tables 維護服務主體許可授予 KMS 金鑰

需要此許可才能建立 SSE-KMS 加密資料表,並允許自動資料表維護,例如壓縮、快照管理和加密資料表上未參考的檔案移除。

注意

每當您提出建立 SSE-KMS 加密資料表的請求時,S3 Tables 都會檢查以確保maintenance.s3tables.amazonaws.com委託人可以存取您的 KMS 金鑰。若要執行此檢查,資料表儲存貯體中會暫時建立零位元組物件,未參考的檔案移除維護操作會自動移除此物件。如果您為加密指定的 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>/*" } } } ] }

授予 IAM 主體在整合 AWS 分析服務中使用加密資料表的許可

若要在 AWS 分析服務中使用 S3 資料表,您可以將資料表儲存貯體與 Amazon SageMaker Lakehouse 整合。此整合可讓 AWS 分析服務自動探索和存取資料表資料。如需整合的詳細資訊,請參閱 搭配使用 Amazon S3 Tables 與 AWS 分析服務

當您在這些服務中使用 SSE-KMS 加密資料表時,您使用的角色需要具有許可,才能將 AWS KMS 金鑰用於加密操作。您可以將這些許可套用至在整合期間建立S3TablesRoleForLakeFormation的角色,或您自己的 IAM 角色。

下列內嵌 IAM 政策範例可用來授予S3TablesRoleForLakeFormation服務角色許可,以使用帳戶中的特定 KMS 金鑰進行加密操作。若要使用政策,請以您自己的值取代輸入預留位置值

{ "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 Metadata 服務主體許可,以使用您的 KMS 金鑰

若要允許 Amazon S3 更新 SSE-KMS 加密中繼資料表,並對這些中繼資料表執行維護,您可以使用下列範例金鑰政策。在此政策中,您可以允許 metadata.s3.amazonaws.com.rproxy.govskope.camaintenance.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>/*" } } } ] }