Amazon EMR 的加密选项 - Amazon EMR

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

Amazon EMR 的加密选项

在 Amazon EMR 4.8.0 及更高版本中,您可以使用安全配置来指定对静态数据和/或传输中数据进行加密的设置。当启用静态数据加密时,您可以选择加密 Amazon S3 中的 EMRFS 数据和/或本地磁盘中的数据。您创建的每个安全配置都存储在 Amazon EMR 中而不是集群配置中,因此无论何时创建集群,您都可以轻松地重复使用某个配置来指定数据加密设置。有关更多信息,请参阅使用 Amazon EMR 控制台或使用 AWS CLI

下图显示了安全配置可用的不同数据加密选项。

Amazon EMR 提供了多种传输中和静态加密选项。

以下加密选项也可用,并且不是使用安全配置来配置的:

注意

从 Amazon EMR 5.24.0 版本开始,当您指定 AWS KMS 为密钥提供商时,您可以使用安全配置选项对 EBS 根设备和存储卷进行加密。有关更多信息,请参阅 本地磁盘加密

数据加密需要密钥和凭证。安全配置使您可以灵活地从多个选项中进行选择,包括由管理的密钥 AWS Key Management Service、由 Amazon S3 管理的密钥以及您提供的自定义提供商提供的密钥和证书。 AWS KMS 用作密钥提供商时,加密密钥的存储和使用将产生费用。有关更多信息,请参阅AWS KMS 定价

在指定加密选项前,要确定所用的密钥和凭证管理系统,因此您可以先创建密钥和凭证或您在加密设置中指定的自定义提供程序。

Amazon S3 中 EMRFS 数据的静态加密

Amazon S3 加密适用于从/在 Amazon S3 中读取/写入的 EMR 文件系统(EMRFS)对象。在您启用静态加密时,请指定 Amazon S3 服务器端加密(SSE)或客户端加密(CSE)作为默认加密模式。(可选)您可以使用 Per bucket encryption overrides (每存储桶加密覆盖) 为单个存储桶指定不同的加密方法。无论是否启用了 Amazon S3 加密,传输层安全性(TLS)都会对 EMR 集群节点和 Amazon S3 之间正在传输的 EMRFS 对象进行加密。有关 Amazon S3 加密的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用加密保护数据

注意

使用时 AWS KMS,加密密钥的存储和使用将产生费用。有关更多信息,请参阅AWS KMS 定价

Amazon S3 服务器端加密

设置 Amazon S3 服务器端加密时,Amazon S3 在向磁盘写入数据时会在对象级别加密数据,并在访问数据时对数据进行解密。有关 SSE 的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用服务器端加密保护数据

在 Amazon EMR 中指定 SSE 时,可以在两个不同的密钥管理系统之间进行选择:

  • SSE-S3 – Amazon S3 为您管理密钥。

  • SSE-KMS — 您可以使用 AWS KMS key 来设置适用于 Amazon EMR 的策略。有关 Amazon EMR 密钥要求的更多信息,请参阅AWS KMS keys 用于加密。

客户提供密钥的 SSE(SSE-C)不能用于 Amazon EMR。

Amazon S3 客户端加密

对于 Amazon S3 客户端加密,Amazon S3 加密和解密过程在您的 EMR 集群上的 EMRFS 客户端中进行。在对象上载到 Amazon S3 之前对其进行加密,并在下载后对其进行解密。您指定的提供程序会提供客户端使用的加密密钥。客户端可以使用 AWS KMS 提供的密钥(CSE-KMS)或提供客户端根密钥(CSE-C)的自定义 Java 类。CSE-KMS 和 CSE-C 之间的加密细节略有不同,具体取决于指定的提供程序以及正在解密或加密对象的元数据。有关这些区别的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用客户端加密保护数据

注意

Amazon S3 CSE 仅确保与 Amazon S3 交换的 EMRFS 数据已加密;不确保集群实例卷上的所有数据都已加密。此外,由于 Hue 不使用 EMRFS,因此 Hue S3 文件浏览器写入 Amazon S3 的对象没有加密。

Amazon EMR WAL 中数据的静态加密

当您为预写日志(WAL)设置服务器端加密(SSE)时,Amazon EMR 会加密静态数据。在 Amazon EMR 中指定 SSE 时,您可以从两种不同的密钥管理系统中选择:

SSE-EMR-WAL

Amazon EMR 管理您的密钥。默认情况下,亚马逊 EMR 会使用以下方式加密您存储在 Amazon EMR WAL 中的数据 SSE-EMR-WAL.

SSE-KMS-WAL

您可以使用 AWS KMS 密钥来设置适用于 Amazon EMR WAL 的政策。有关 Amazon EMR 密钥要求的更多信息,请参阅AWS KMS keys 用于加密

当使用 Amazon EMR 启用 WAL 时,您不能在 SSE 中使用自己的密钥。有关更多信息,请参阅 Amazon EMR 的预写日志(WAL)

本地磁盘加密

在您使用 Amazon EMR 安全配置启用本地磁盘加密时,以下机制协同工作来加密本地磁盘。

开源 HDFS 加密

在分布式处理期间,HDFS 在集群实例之间交换数据。它还从实例存储卷以及附加到实例的 EBS 卷中读写数据。启用本地磁盘加密会激活以下开源 Hadoop 加密选项:

注意

您也可以通过启用传输中加密激活其他 Apache Hadoop 加密。有关更多信息,请参阅 传输中加密。这些加密设置不会激活 HDFS 透明加密,您可以手动配置透明加密。有关更多信息,请参阅《Amazon EMR 版本指南》中的 Amazon EMR 上的 HDFS 中的透明加密

实例存储加密

对于使用 bas NVMe ed SSDs 作为 EC2 实例存储卷的实例类型,不管 Amazon EMR NVMe 加密设置如何,都将使用加密。有关更多信息,请参阅 Amazon EC2 用户指南中的 NVMe SSD 卷。对于其它实例存储卷,在启用了本地磁盘加密时,Amazon EMR 使用 LUKS 加密实例存储卷,而不论使用 EBS 加密还是 LUKS 加密了 EBS 卷。

EBS 卷加密

如果您在默认情况下为您的账户启用 Amazon EBS 卷 EC2 加密的区域创建集群,则即使未启用本地磁盘加密,也会对 EBS 卷进行加密。有关更多信息,请参阅 Amazon EC2 用户指南中的默认加密。在安全配置中启用本地磁盘加密后,Amazon EMR 设置优先于集群实例 EC2 的 Amazon EC2 encryption-by-default 设置。

利用以下选项,可以使用安全配置加密 EBS 卷:

  • EBS 加密 – 从 Amazon EMR 版本 5.24.0 开始,您可以选择启用 EBS 加密。EBS 加密选项加密 EBS 根设备卷以及附加的存储卷。仅当您指定 AWS Key Management Service 为密钥提供程序时,EBS 加密选项才可用。我们建议使用 EBS 加密。

  • LUKS 加密 – 如果您为 Amazon EBS 卷选择使用 LUKS 加密,LUKS 加密仅应用于附加的存储卷,而不应用于根设备卷。有关 LUKS 加密的更多信息,请参阅 LUKS 磁盘规格

    对于您的密钥提供商,您可以使用适用于 Amazon EMR 的策略设置一个 AWS KMS key ,也可以设置一个提供加密工件的自定义 Java 类。使用时 AWS KMS,加密密钥的存储和使用将产生费用。有关更多信息,请参阅AWS KMS 定价

注意

要检查您的集群上是否启用了 EBS 加密,建议您使用 DescribeVolumes API 调用。有关更多信息,请参阅 DescribeVolumes。在集群上运行 lsblk 只会检查 LUKS 加密的状态,而不检查 EBS 加密。

传输中加密

传输中加密会启用几种加密机制。这些是特定于应用程序的开源功能,可能因 Amazon EMR 发行版而异。要启用传输中加密,请在 Amazon EMR 中使用 使用 Amazon EMR 控制台或使用 AWS CLI。对于启用了传输中加密的 EMR 集群,Amazon EMR 会自动配置开源应用程序配置以启用传输中加密。对于高级用例,您可以直接配置开源应用程序配置,以覆盖 Amazon EMR 中的默认行为。有关更多信息,请参阅传输中加密支持矩阵配置应用程序

请参阅以下内容,了解与传输中加密相关的开源应用程序的更多具体细节:

  • 使用安全配置启用传输中加密时,Amazon EMR 会为所有支持传输中加密的开源应用程序端点启用传输中加密。不同应用程序端点对传输中加密的支持因 Amazon EMR 发行版本而异。有关更多信息,请参阅传输中加密支持矩阵

  • 您可以覆盖开源配置,从而执行以下操作:

    • 如果用户提供的 TLS 证书不符合要求,则禁用 TLS 主机名验证

    • 根据性能和兼容性要求,对某些端点禁用传输中加密

    • 控制要使用的 TLS 版本和密码套件。

    有关特定于应用程序的配置的更多详细信息,请参阅传输中加密支持矩阵

  • 除了使用安全配置启用传输中加密之外,某些通信通道还需要额外的安全配置才能启用传输中加密。例如,一些开源应用程序端点使用简单身份验证和安全层(SASL)进行传输中加密,这就要求在 EMR 集群的安全配置中启用 Kerberos 身份验证。要了解有关这些端点的更多信息,请参阅传输中加密支持矩阵

  • 建议您使用支持 TLS v1.2 或更高版本的软件。Amazon EMR 上提供了 EC2 默认的 Corretto JDK 发行版,它决定了在 Java 上运行的开源网络允许哪些 TLS 版本、密码套件和密钥大小。目前,对于 Amazon EMR 7.0.0 及更高版本,大多数开源框架都执行 TLS v1.2 或更高版本。这是因为大多数开源框架在适用于 Amazon EMR 7.0.0 及更高版本的 Java 17 上运行。较早的 Amazon EMR 发行版可能支持 TLS v1.0 和 v1.1,因为其使用的是较早的 Java 版本,但 Corretto JDK 可能会更改 Java 支持的 TLS 版本,这可能会影响现有的 Amazon EMR 发行版。

您可以通过两种方式指定用于传输中加密的加密构件:一种是提供上载到 Amazon S3 的凭证的压缩文件,另一种是引用提供加密构件的自定义 Java 类。有关更多信息,请参阅 为通过 Amazon EMR 加密来加密传输中的数据提供凭证