

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

# 数据保护
<a name="data-protection"></a>

[责任 Amazon 共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)适用于 Amazon EMR Serverless 中的数据保护。如本模型所述 Amazon ，负责保护运行所有 Amazon 云的全球基础架构。您负责维护对托管在此基础结构上的内容的控制。此内容包括您使用的 Amazon 服务的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://www.amazonaws.cn/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 Amazon 安全博客[上的 Amazon 分担责任模型和GDPR](https://www.amazonaws.cn/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。

出于数据保护目的，我们建议您使用 Amazon 身份和访问管理 (IAM) 和 IAM保护 Amazon 账户凭证并设置个人账户。这仅向每个用户授予履行其工作职责所需的权限。我们还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 Amazon 资源通信。建议使用 TLS 1.2 或更高版本。
+ 使用设置 API 和用户活动日志 Amazon CloudTrail。
+ 使用 Amazon 加密解决方案以及 Amazon 服务中的所有默认安全控制。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的个人数据。
+ 使用 Amazon EMR Serverless 加密选项对静态数据和传输中数据进行加密。
+ 如果您在 Amazon 通过命令行界面或 API 进行访问时需要经过 FIPS 140-2 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅[美国联邦信息处理标准 (FIPS) 第 140-2 版](https://www.amazonaws.cn/compliance/fips/)。

我们强烈建议您切勿将敏感的可识别信息（例如您客户的账号）放入自由格式字段（例如**名称**字段）。这包括您使用控制台、API 或使用 Amazon EMR Serverless 或其他 Amazon 服务时。 Amazon CLI Amazon SDKs您输入 Amazon EMR Serverless 或其他服务的任何数据都可能被采集到诊断日志中。当您向外部服务器提供网址时，请勿在网址中包含凭证信息来验证您对该服务器的请求。

## 静态加密
<a name="encryption-at-rest"></a>

数据加密有助于防止未经授权的用户在集群和关联的数据存储系统中读取数据。这包括保存到持久性媒体的数据（称为静态数据）和在网络中传输时可能被拦截的数据（称为传输中的数据）。

数据加密需要密钥和凭证。您可以从多个选项中进行选择，包括由管理的密钥 Amazon Key Management Service、由 Amazon S3 管理的密钥以及您提供的自定义提供商提供的密钥和证书。 Amazon KMS 用作密钥提供商时，加密密钥的存储和使用将产生费用。有关更多信息，请参阅 [Amazon KMS 定价](https://www.amazonaws.cn/kms/pricing/)。

在指定加密选项前，确定要使用的密钥和凭证管理系统。然后，针对您指定为加密设置一部分的自定义提供程序，来创建密钥和凭证。

### Amazon S3 中 EMRFS 数据的静态加密
<a name="encryption-emrfs"></a>

每个 EMR Serverless 应用程序都使用特定的发行版，其中包括 EMRFS（EMR 文件系统）。Amazon S3 加密适用于在 Amazon S3 中读取和写入的 EMR 文件系统（EMRFS）对象。启用静态加密时，您可以指定 Amazon S3 服务器端加密（SSE）或客户端加密（CSE）作为**默认加密模式**。（可选）使用**每存储桶加密覆盖**为单个存储桶指定不同的加密方法。无论是否启用了 Amazon S3 加密，传输层安全性（TLS）都会对 EMR 集群节点和 Amazon S3 之间正在传输的 EMRFS 对象进行加密。如果使用带有客户管理密钥的 Amazon S3 CSE，则在 EMR Serverless 应用程序中运行作业的执行角色必须有权访问密钥。有关 Amazon S3 加密的详细信息，请参阅《Amazon Simple Storage Service 开发人员指南》中的[使用加密保护数据](https://docs.amazonaws.cn/AmazonS3/latest/dev/UsingEncryption.html)。

**注意**  
使用时 Amazon KMS，会收取加密密钥的存储和使用费用。有关更多信息，请参阅 [Amazon KMS 定价](https://www.amazonaws.cn/kms/pricing/)。

### Amazon S3 服务器端加密
<a name="encryption-server-side"></a>

默认情况下，所有 Amazon S3 存储桶都配置了加密，所有上传到 S3 存储桶的新对象都会自动静态加密，Amazon S3 在向磁盘写入数据时会在对象级别对数据进行加密，并在访问数据时对其进行解密。有关 SSE 的更多信息，请参阅《Amazon Simple Storage Service 开发人员指南》中的[使用服务器端加密保护数据](https://docs.amazonaws.cn/AmazonS3/latest/dev/serv-side-encryption.html)。

在 Amazon EMR Serverless 中指定 SSE 时，可选择两个不同的密钥管理系统：
+ **SSE-S3** - Amazon S3 为您管理密钥。无需在 EMR Serverless 上进行额外设置。
+ **SSE-KMS**-您可以使用 Amazon KMS key 来设置适用于 EMR Serverless 的策略。无需在 EMR Serverless 上进行额外设置。

要对写入 Amazon S3 的数据使用 Amazon KMS 加密，在使用 `StartJobRun` API 时有两种选择。您可以对写入 Amazon S3 的所有内容启用加密，也可以对写入特定存储桶的数据启用加密。有关 `StartJobRun` API 的更多信息，请参阅 [EMR Serverless API 参考](https://docs.amazonaws.cn/emr-serverless/latest/APIReference/API_StartJobRun.html)。

要对写入 Amazon S3 的所有数据启用 Amazon KMS 加密，请在调用 `StartJobRun` API 时使用以下命令。

```
--conf spark.hadoop.fs.s3.enableServerSideEncryption=true 
--conf spark.hadoop.fs.s3.serverSideEncryption.kms.keyId={{<kms_id>}}
```

要对写入特定存储桶的数据启用 Amazon KMS 加密，请在调用 `StartJobRun` API 时使用以下命令。

```
--conf spark.hadoop.fs.s3.bucket.{{<amzn-s3-demo-bucket1>}}.enableServerSideEncryption=true
--conf spark.hadoop.fs.s3.bucket.{{<amzn-s3-demo-bucket1>}}.serverSideEncryption.kms.keyId={{<kms-id>}}
```

使用客户提供密钥的 SSE（SSE-C）不能与 EMR Serverless 一起使用。

### Amazon S3 客户端加密
<a name="encryption-client-side"></a>

对于 Amazon S3 客户端加密，在每个 Amazon EMR 发行版上提供的 EMRFS 客户端中进行 Amazon S3 加密和解密。在对象上载到 Amazon S3 之前对其进行加密，并在下载后对其进行解密。您指定的提供程序会提供客户端使用的加密密钥。客户端可以使用 Amazon KMS 提供的密钥（CSE-KMS）或提供客户端根密钥（CSE-C）的自定义 Java 类。CSE-KMS 和 CSE-C 之间的加密细节略有不同，具体取决于指定的提供程序以及正在解密或加密对象的元数据。如果使用带有客户管理密钥的 Amazon S3 CSE，则在 EMR Serverless 应用程序中运行作业的执行角色必须有权访问密钥。可能会收取额外的 KMS 费用。有关这些差异的更多信息，请参阅《Amazon Simple Storage Service 开发人员指南》中的[使用客户端加密保护数据](https://docs.amazonaws.cn/AmazonS3/latest/dev/UsingClientSideEncryption.html)。

### 本地磁盘加密
<a name="local-disk-encryption"></a>

临时存储中的数据使用行业标准 AES-256 加密算法通过服务自有的密钥加密。

### 密钥管理
<a name="key-management"></a>

您可以将 KMS 配置为自动轮换 KMS 密钥。这会每年转动一次密钥，同时无限期地保存旧密钥，以便您的数据仍然可以被解密。有关更多信息，请参阅 [Rotating customer-managed keys](https://docs.amazonaws.cn/kms/latest/developerguide/rotate-keys.html)。

## 传输中加密
<a name="encryption-in-trasit"></a>

Amazon EMR Serverless 提供以下特定于应用程序的加密功能：
+ Spark
  + 默认情况下，Spark 驱动程序和执行程序之间的通信是经过身份验证的内部通信。驱动程序和执行程序之间的 RPC 通信是加密的。
+ Hive
  +  Amazon Glue 元数据仓和 EMR 无服务器应用程序之间的通信通过 TLS 进行。

您应该仅允许使用 Amazon S3 存储桶 IAM 策略上的 a [ws: SecureTransport 条件通过 HTTPS](https://docs.amazonaws.cn//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) (TLS) 进行加密连接。