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

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

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

默认情况下,在以下操作期间,EMR 写入日志 (WAL) 通过 EMR_EC2_DefaultRole 与 Amazon 进行交互:CreateWALAppendEditArchiveWALCheckPointCompleteWALFlushDeleteWALGetCurrentWALTimeReplayEditsTrimWAL。当调用先前列出的任何操作时,EMR WAL 会根据 KMS 密钥进行 DecryptGenerateDataKey

注意事项

在对 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 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。

在向 Amazon KMS 发送 GenerateDataKeyDecrypt 请求时,Amazon EMR WAL 使用加密上下文,其中包含一个标识 EMR WAL 名称的名称-值对。

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

您可以使用加密上下文在审计记录和日志中标识这些加密操作(例如 Amazon CloudTrailhttps://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-user-guide.html 和 Amazon CloudWatch Logs),并将加密上下文用作在策略和授权中进行授权的条件。