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

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

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

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

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

注意事项

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

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

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

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

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

所需的 IAM 权限

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

EMR WAL 客户端角色的权限

以下是 EMR WAL 客户端角色所需的 IAM 策略:

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

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

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

KMS 密钥策略的权限

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountID:role/EMR_EC2_DefaultRole" ], "Service": [ "emrwal.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": [ "*" ] } ] }

如果您更改默认角色,则代码段中指定的角色可能会更改。

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

亚马逊 EMR WAL 加密上下文

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

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

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

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