S3 表类数据存储服务 SSE-KMS 加密的权限要求
当您对 S3 表存储桶中的表使用具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)时,您需要为账户中的不同身份授予权限。您的访问身份和 S3 表类数据存储服务维护主体至少需要具有访问您的密钥的权限,所需的其它权限取决于您的应用场景。
- 所需权限
要访问使用 KMS 密钥加密的表,您需要对该密钥具有以下权限:
kms:GenerateDataKeykms:Decrypt
重要
要对表使用 SSE-KMS,Amazon S3 表类数据存储服务维护服务主体 (
maintenance.s3tables.amazonaws.com) 需要对密钥具有kms:GenerateDataKey和kms:Decrypt权限。- 其他权限
-
根据您的应用场景,需要以下附加权限:
AWS 分析服务的权限与直接访问:如果您通过 AWS 分析服务或直接访问 S3 表的第三方引擎来处理使用 SSE-KMS 加密的表,则您使用的 IAM 角色需要具有使用 KMS 密钥的权限。
启用 Lake Formation 时的权限:如果您选择加入 AWS Lake Formation 来进行访问控制,那么 Lake Formation 服务角色需要具有使用您的 KMS 密钥的权限。
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 表类数据存储服务维护服务主体授予对 KMS 密钥的权限
需要此权限才能创建通过 SSE-KMS 加密的表,并支持对加密的表进行自动表维护,例如压缩、快照管理和未引用文件移除。
注意
每当您发出请求来创建通过 SSE-KMS 加密的表时,S3 表类数据存储服务都会进行检查,以确保 maintenance.s3tables.amazonaws.com 主体有权访问您的 KMS 密钥。要执行此检查,需要在表存储桶中临时创建一个零字节对象,而未引用文件移除维护操作将自动移除该对象。如果您为加密指定的 KMS 密钥没有维护访问权限,则 createTable 操作将失败。
要授予对通过 SSE-KMS 加密的表的维护访问权限,您可以使用以下示例密钥策略。在此策略中,向 maintenance.s3tables.amazonaws.com 服务主体授予使用特定 KMS 密钥对特定表存储桶中的表进行加密和解密的权限。要使用此策略,请将用户输入占位符替换为您自己的信息:
向 IAM 主体授予在集成的 AWS 分析服务中使用加密表的权限
要在 AWS 分析服务中使用 S3 表,可以将表存储桶与 AWS Glue Data Catalog 集成。这种集成支持 AWS 分析服务自动发现和访问表数据。有关集成的更多信息,请参阅将 Amazon S3 表类数据存储服务与 AWS 分析服务集成。
当您通过 AWS 分析服务或直接访问 S3 表的第三方和开源引擎来处理使用 SSE-KMS 加密的表时,您使用的 IAM 角色需要具有使用 AWS KMS 密钥进行加密操作的权限。
您可以通过附加到您的角色的 IAM 策略或 KMS 密钥策略来授予 KMS 密钥访问权限。
当启用 Lake Formation 时向 IAM 主体授予使用加密表的权限
如果您已选择加入 AWS Lake Formation 以实现对 S3 表类数据存储服务集成的访问控制,那么 Lake Formation 服务角色需要具有使用 AWS KMS 密钥进行加密操作的权限。Lake Formation 使用此角色代表访问表的主体提供凭证。
以下 KMS 密钥策略示例向 Lake Formation 服务角色授予权限,以便在您的账户中使用特定的 KMS 密钥进行加密操作。请将占位符值替换为您自己的值。
{ "Sid": "AllowTableRoleAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "<kms-key-arn>" }
向 S3 元数据服务主体授予使用您的 KMS 密钥的权限
要支持 Amazon S3 更新通过 SSE-KMS 加密的元数据表并对这些元数据表执行维护,您可以使用以下示例密钥策略。在此策略中,您可以让 metadata.s3.amazonaws.com 和 maintenance.s3tables.amazonaws.com 服务主体使用特定密钥对特定表存储桶中的表进行加密和解密。要使用此策略,请将用户输入占位符替换为您自己的信息: