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 Tables Iceberg REST 端點或 Amazon S3 Tables Catalog for Apache Iceberg 等方法來直接使用 SSE-KMS 加密資料表,您需要授予您的用戶端所使用的 IAM 角色存取金鑰的權限。

  • S3 Metadata 資料表的權限 – 如果您針對 S3 Metadata 資料表使用 SSE-KMS 加密,您需要提供 S3 Metadata 服務主體 (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 金鑰來加密和解密特定資料表儲存貯體中資料表。若要使用該政策,請以您自己的資訊取代使用者輸入預留位置

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }

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

若要在 AWS 分析服務中使用 S3 資料表,您可以將資料表儲存貯體與 Amazon SageMaker 資料湖倉整合。這個整合可讓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 金鑰存取權。若要使用此範例,請以您自己的值取代輸入預留位置值

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowKMSKeyUsage", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
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 服務主體使用特定金鑰來加密和解密特定資料表儲存貯體中的資料表。若要使用該政策,請以您自己的資訊取代使用者輸入預留位置

JSON
{ "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": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }