使用客户 KMS 密钥对 EMR WAL 服务进行静态加密
EMR 预写日志 (WAL) 为客户提供 KMS 密钥静态加密支持。以下详细介绍了 Amazon EMR WAL 如何与 Amazon KMS 集成:
默认情况下,在以下操作期间,EMR 写入日志 (WAL) 通过 EMR_EC2_DefaultRole 与 Amazon 进行交互:CreateWAL、AppendEdit、ArchiveWALCheckPoint、CompleteWALFlush、DeleteWAL、GetCurrentWALTime、ReplayEdits、TrimWAL。当调用先前列出的任何操作时,EMR WAL 会根据 KMS 密钥进行 Decrypt 和 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 策略:
默认情况下,EMR 集群上的 EMR WAL 客户端将使用 EMR_EC2_DefaultRole。如果您对 EMR 集群中的实例配置文件使用不同的角色,请确保每个角色都具有适当的权限。
有关管理角色策略的更多信息,请参阅添加和删除 IAM 身份权限。
KMS 密钥策略的权限
您需要在 KMS 策略中向 EMR WAL 客户端角色和 EMR WAL 服务授予 Decrypt 和 GenerateDataKey* 权限。有关密钥策略管理的更多信息,请参阅 KMS 密钥策略。
如果您更改默认角色,则代码片段中指定的角色也会随之更改。
监控 Amazon EMR WAL 与 Amazon KMS 的交互
Amazon EMR WAL 加密上下文
加密上下文是一组包含任意非机密数据的键值对。在请求中包含加密上下文以加密数据时,Amazon KMS 以加密方式将加密上下文绑定到加密的数据。要解密数据,您必须传入相同的加密上下文。
在向 Amazon KMS 发送 GenerateDataKey 和 Decrypt 请求时,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),并将加密上下文用作在策略和授权中进行授权的条件。