使用客户 KMS 密钥对 EMR WAL 服务进行静态加密 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用客户 KMS 密钥对 EMR WAL 服务进行静态加密

EMR 预写日志 (WAL) 为客户 KMS 密钥提供支持。 encryption-at-rest以下详细介绍了 Amazon EMR WAL 如何与 Amazon KMS集成:

EMR 预写日志 (WAL) 在以下操作 Amazon 期间与之交互:CreateWAL、、、、、、、、AppendEditArchiveWALCheckPointCompleteWALFlushDeleteWALGetCurrentWALTimeReplayEditsTrimWAL默认情况下,当调用先前列出的任何操作时,EMR WAL 会Decrypt根据 KMS 密钥生成和违反 KMS 密钥。EMR_EC2_DefaultRole GenerateDataKey

注意事项

在 EMR WAL 中使用 Amazon KMS 基于基础的加密时,请考虑以下几点:

  • 创建 EMR WAL 后,无法更改加密配置。

  • 当您将 KMS 加密与自己的 KMS 密钥结合使用时,密钥必须与您的 Amazon EMR 集群位于同一区域中。

  • 您有责任维护所有必需的 IAM 权限,建议在 WAL 生命周期内不要撤销所需的权限。否则,它将导致意想不到的故障情况,例如不能删除 EMR WAL,因为关联的加密密钥不存在。

  • 使用 Amazon KMS 密钥会产生一定的费用。有关更多信息,请参阅Amazon Key Management Service 定价

所需的 IAM 权限

要使用您的客户 KMS 密钥对 EMR WAL 进行静态加密,您需要确保为 EMR WAL 客户端角色和 EMR WAL 服务主体 emrwal.amazonaws.com 设置适当的权限。

EMR WAL 客户端角色的权限

下面是 EMR WALS 客户端角色所需的 IAM 策略:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": [ "*" ], "Sid": "AllowKMSDecrypt" } ] }

默认情况下,EMR 集群上的 EMR WAL 客户端将使用 EMR_EC2_DefaultRole。如果您对 EMR 集群中的实例配置文件使用不同的角色,请确保每个角色都具有适当的权限。

有关管理角色策略的更多信息,请参阅添加和删除 IAM 身份权限

KMS 密钥策略的权限

您需要在 KMS 策略中向 EMR WAL 客户端角色和 EMR WAL 服务授予 DecryptGenerateDataKey* 权限。有关密钥策略管理的更多信息,请参阅 KMS 密钥策略

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:*:123456789012:key/*" ], "Sid": "AllowKMSDecrypt" } ] }

如果您更改默认角色,则代码片段中指定的角色也会随之更改。

监控 Amazon EMR WAL 与之的互动 Amazon KMS

Amazon EMR WAL 加密上下文

加密上下文是一组包含任意非机密数据的键值对。当您在加密数据的请求中包含加密上下文时,会以加密 Amazon KMS 方式将加密上下文绑定到加密数据。要解密数据,您必须传入相同的加密上下文。

在对的请求GenerateDataKey解密请求中, Amazon KMS Amazon EMR WAL 使用具有一个标识 EMR WAL 名称的名称值对的加密上下文。

"encryptionContext": { "aws:emrwal:walname": "111222333444555-testworkspace-emrwalclustertest-emrwaltestwalname" }

您可以使用加密上下文在审计记录和日志(例如和 Amazon CloudWatch Logs)中识别这些加密操作,并作为策略和授权中的授权条件。 Amazon CloudTrail