使用EMRFS属性指定 Amazon S3 加密 - Amazon EMR

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

使用EMRFS属性指定 Amazon S3 加密

重要

从 Amazon EMR 发行版 4.8.0 开始,您可以使用安全配置更轻松地应用加密设置,并提供更多选项。建议您使用安全配置。有关更多信息,请参阅配置数据加密。此部分中所述的控制台说明适用于 4.8.0 之前的版本。如果您使用在 AWS CLI 集群配置和后续版本的安全配置中配置 Amazon S3 加密,则安全配置将覆盖集群配置。

创建集群时,您可以使用控制台或通过或使用emrfs-site分类属性为 Amazon S3 中的EMRFS数据指定服务器端加密 (CSE) 或客户端加密 ()。SSE AWS CLI EMR SDKAmazon S3 SSE 和CSE是互斥的;您可以选择其中一个,但不能两者兼而有之。

有关 AWS CLI 说明,请参阅下面与您的加密类型对应的部分。

要指定EMRFS加密选项,请使用 AWS Management Console
  1. 导航到新的 Amazon EMR 控制台,然后从侧面导航栏中选择 “切换到旧主机”。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console

  2. 依次选择 Create cluster (创建集群)Go to advanced options (转到高级选项)

  3. 选择 Release (版本) 4.7.2 或更早版本。

  4. Software and Steps (软件和步骤) 选择适用于您的应用程序的其它选项,然后选择 Next (下一步)

  5. Hardware (硬件)General Cluster Settings (常规集群设置) 窗格中选择适用于您的应用程序的设置。

  6. 在 “安全” 窗格的 “身份验证和加密” 下,选择要使用的 S3 加密(使用EMRFS)选项。

    注意

    使用 Amazon EMR 发行版 4.4 或更早版本时,无法使用带有KMS密钥管理 (SSE-KMS) 的 S3 服务器端加密

    • 如果您选择使用AWS 密钥管理的选项,请选择密AWS KMS钥 ID。有关更多信息,请参阅 AWS KMS keys 用于EMRFS加密

    • 如果您选择使用自定义材料提供程序进行 S3 客户端加密,请提供类名JAR位置。有关更多信息,请参阅 Amazon S3 客户端加密

  7. 选择适用于您的应用程序的其它选项,然后选择 Create Cluster (创建集群)

AWS KMS keys 用于EMRFS加密

AWS KMS 加密密钥必须与您的 Amazon EMR 集群实例和与一起EMRFS使用的 Amazon S3 存储桶在同一区域创建。如果您指定的密钥与用于配置集群的账户不同,则必须使用其来指定密钥ARN。

Amazon EC2 实例配置文件的角色必须具有使用您指定的KMS密钥的权限。Amazon 中实例配置文件的默认角色EMR是EMR_EC2_DefaultRole。如果您在实例配置文件中使用不同的角色,或者使用IAM角色来EMRFS请求到 Amazon S3,请确保将每个角色添加为适当的关键用户。这为角色提供了使用KMS密钥的权限。有关更多信息,请参阅AWS Key Management Service 开发人员指南中的使用密钥策略配置向 Amazon S3 EMRFS 请求的IAM角色

您可以使用将您的实例配置文件或EC2实例配置文件 AWS Management Console 添加到指定密钥的KMS密钥用户列表中,也可以使用 AWS CLI 或附加 AWS SDK相应的密钥策略。

请注意,Amazon 仅EMR支持对称KMS密钥。您不能使用非对称KMS密钥对 Amazon EMR 集群中的静态数据进行加密。要帮助确定KMS密钥是对称密钥还是非对称密钥,请参阅识别对称和非对称密钥。KMS

以下步骤介绍如何使用添加默认 Amazon EMR 实例配置文件EMR_EC2_DefaultRole作为关键用户 AWS Management Console。它假设您已经创建了KMS密钥。要创建新KMS密钥,请参阅AWS Key Management Service 开发者指南中的创建密钥

将 Amazon EMR 的EC2实例配置文件添加到加密密钥用户列表中
  1. 登录 AWS Management Console 并在 https://console.aws.amazon.com/km s 处打开 AWS Key Management Service (AWS KMS) 控制台。

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 选择要修改的KMS密钥的别名。

  4. 在密钥详细信息页面的 Key Users (密钥用户) 下,选择 Add (添加)

  5. Add key users (添加密钥用户) 对话框中,选择适当的角色。默认角色的名称为 EMR_EC2_DefaultRole

  6. 选择 添加

Amazon S3 服务器端加密

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

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

  • SSE-S3 — 亚马逊 S3 为您管理密钥。

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

SSE使用买家提供的密钥 (SSE-C) 不适用于亚马逊。EMR

要创建启用了 SSE-S3 的集群,请使用 AWS CLI
  • 键入以下命令:

    aws emr create-cluster --release-label emr-4.7.2 or earlier \ --instance-count 3 --instance-type m5.xlarge --emrfs Encryption=ServerSide

您也可以通过设置 f SSE s.s3 来启用-S3。 enableServerSide属性中的emrfs-site加密属性为 true。参见KMS下面的 SSE-示例,省略密钥 ID 的属性。

要创建KMS启用 SSE-的集群,请使用 AWS CLI
注意

SSE-KMS 仅在 Amazon EMR 发行版 4.5.0 及更高版本中可用。

  • 键入以下 AWS CLI 命令创建带有 SSE-的集群 KMS AWS KMS key,其中keyID是,例如a4567b8-9900-12ab-1234-123a45678901

    aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 \ --instance-type m5.xlarge --use-default-roles \ --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryption.kms.keyId=keyId]

    --OR--

    使用emrfs-site分类键入以下 AWS CLI 命令,并提供一个包含内容的配置JSON文件,如下例myConfig.json所示:

    aws emr create-cluster --release-label emr-4.7.2 or earlier --instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop --configurations file://myConfig.json --use-default-roles

    myConfig.json 的示例内容:

    [ { "Classification":"emrfs-site", "Properties": { "fs.s3.enableServerSideEncryption": "true", "fs.s3.serverSideEncryption.kms.keyId":"a4567b8-9900-12ab-1234-123a45678901" } } ]

SSE-S3 和 SSE-的配置属性 KMS

这些属性可以使用配置分类进行emrfs-site配置。 SSE-KMS 仅在 Amazon EMR 发行版 4.5.0 及更高版本中可用。

属性 默认值 描述
fs.s3.enableServerSideEncryption false

设置为 true 时,使用服务器端加密对 Amazon S3 中存储的对象进行加密。如果未指定密钥,则使用 SSE-S3。

fs.s3.serverSideEncryption.kms.keyId n/a

指定密 AWS KMS 钥 ID 或ARN。如果指定了密钥,KMS则使用 SSE-。