

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

# 使用客户 KMS 密钥对 EMR WAL 服务进行静态加密
<a name="encryption-at-rest-kms"></a>

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

在以下操作 AWS 期间，EMR 写入日志 (WAL) 会与之交互：`CreateWAL`、、、、、、、`AppendEdit``ArchiveWALCheckPoint``CompleteWALFlush``DeleteWAL``GetCurrentWALTime``ReplayEdits`、`TrimWAL`默认情况下，当调用先前列出的任何操作时，EMR WAL 会`Decrypt`根据 KMS 密钥生成和违反 KMS 密钥。`EMR_EC2_DefaultRole` `GenerateDataKey`

## 注意事项
<a name="encryption-at-rest-considerations"></a>

在 EMR WAL 中使用 AWS KMS 基于基础的加密时，请考虑以下几点：
+ 创建 EMR WAL 后，无法更改加密配置。
+ 当您将 KMS 加密与自己的 KMS 密钥结合使用时，密钥必须与您的 Amazon EMR 集群位于同一区域中。
+ 您有责任维护所有必需的 IAM 权限，建议在 WAL 生命周期内不要撤销所需的权限。否则，它将导致意想不到的故障情况，例如不能删除 EMR WAL，因为关联的加密密钥不存在。
+ 使用 AWS KMS 密钥会产生一定的费用。有关更多信息，请参阅[AWS Key Management Service 定价](https://aws.amazon.com/kms/pricing/)。

## 所需的 IAM 权限
<a name="encryption-at-rest-required-iam-permissions"></a>

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

### EMR WAL 客户端角色的权限
<a name="encryption-at-rest-permissions-client-role"></a>

下面是 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 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

### KMS 密钥策略的权限
<a name="encryption-at-rest-permissions-kms-key-policy"></a>

您需要在 KMS 策略中向 EMR WAL 客户端角色和 EMR WAL 服务授予 `Decrypt` 和 `GenerateDataKey*` 权限。有关密钥策略管理的更多信息，请参阅 [KMS 密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

------
#### [ JSON ]

****  

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

------

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

## 监控 Amazon EMR WAL 与之的互动 AWS KMS
<a name="encryption-at-rest-monitoring-emr-wal-kms"></a>

### Amazon EMR WAL 加密上下文
<a name="encryption-at-rest-encryption-context"></a>

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

在对的请求[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)和[解密](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)请求中， AWS KMS Amazon EMR WAL 使用具有一个标识 EMR WAL 名称的名称值对的加密上下文。

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

您可以使用加密上下文在审计记录和日志（例如和 [Amazon CloudWatch ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) Logs）中识别这些加密操作，并作为策略和授权中的授权条件。 AWS CloudTrail 