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

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

使用 EMRFS 属性指定 Amazon S3 加密

重要

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

创建集群时,您可以使用控制台或通过或 EMR SDK 使用emrfs-site分类属性为 Amazon S3 中的 EMRFS 数据指定服务器端加密 (SSE) 或客户端加密 (CSE)。 AWS CLI Amazon 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. Security (安全) 窗格上的 Authentication and encryption (身份验证和加密) 下,选择要使用的 S3 Encryption (with EMRFS) 选项。

    注意

    在使用 Amazon EMR 发行版 4.4 或更早版本时,S3 server-side encryption with KMS Key Management (利用 KMS Key Management 进行 S3 服务器端加密)(SSE-KMS)不可用。

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

    • 如果您选择 S3 client-side encryption with custom materials provider (利用自定义材料提供程序进行 S3 客户端加密),请提供 Class name (类名称)JAR location (AR 位置)。有关更多信息,请参阅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。如果您对实例配置文件使用不同的角色,或者对 Amazon S3 的 EMRFS 请求使用 IAM 角色,请确保根据需要将每个角色添加为密钥用户。这会为该角色授予使用该 KMS 密钥的权限。有关更多信息,请参阅《AWS Key Management Service 开发人员指南》为向 Amazon S3 发出的 EMRFS 请求配置 IAM 角色中的使用密钥策略

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

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

以下步骤介绍了如何使用 AWS Management Console将 Amazon EMR 实例配置文件 EMR_EC2_DefaultRole 作为密钥用户添加。它假定您已创建一个 KMS 密钥。要创建新的 KMS 密钥,请参阅《AWS Key Management Service 开发人员指南》中的创建密钥

将 Amazon EMR 的 EC2 实例配置文件添加到加密密钥用户列表中
  1. 登录 AWS Management Console 并打开 AWS Key Management Service (AWS KMS) 控制台,网址为 https://console.aws.amazon.com/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 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。

要创建启用了 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

你也可以通过设置 fs.s3 来启用 SSE-S3。 enableServerSide属性中的emrfs-site加密属性为 true。请参阅下面的 SSE-KMS 示例并忽略密钥 ID 的属性。

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

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

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

    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。如果未指定密钥,则使用 SSE-KMS。