本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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
导航到 Amazon EMR 新控制台,然后从侧面导航栏中选择切换到旧控制台。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console。
-
依次选择 Create cluster (创建集群)、Go to advanced options (转到高级选项)。
选择 Release (版本) 4.7.2 或更早版本。
为 Software and Steps (软件和步骤) 选择适用于您的应用程序的其它选项,然后选择 Next (下一步)。
在 Hardware (硬件) 和 General Cluster Settings (常规集群设置) 窗格中选择适用于您的应用程序的设置。
在 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 客户端加密。
选择适用于您的应用程序的其它选项,然后选择 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 或 S AWS DK 来附加相应的密钥策略。
请注意 Amazon EMR 仅支持对称 KMS 密钥。不能使用非对称 KMS 密钥加密 Amazon EMR 集群中的静态数据。要获取确定 KMS 密钥是对称还是非对称的帮助,请参阅识别对称密钥和非对称密钥。
以下步骤介绍了如何使用 AWS Management Console将 Amazon EMR 实例配置文件 EMR_EC2_DefaultRole
作为密钥用户添加。它假定您已创建一个 KMS 密钥。要创建新的 KMS 密钥,请参阅《AWS Key Management Service 开发人员指南》中的创建密钥。
将 Amazon EMR 的 EC2 实例配置文件添加到加密密钥用户列表中
-
登录 AWS Management Console 并在 https://console.aws.amazon.com/km
s 处打开 AWS Key Management Service (AWS KMS) 控制台。 -
要更改 AWS 区域,请使用页面右上角的区域选择器。
-
选择要修改的 KMS 密钥的别名。
-
在密钥详细信息页面的 Key Users (密钥用户) 下,选择 Add (添加)。
-
在 Add key users (添加密钥用户) 对话框中,选择适当的角色。默认角色的名称为
EMR_EC2_DefaultRole
。 -
选择 添加。
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 的集群,其中
keyID
是 AWS KMS key,例如:a4567b8-9900-12ab-1234-123a45678901
aws emr create-cluster --release-label
emr-4.7.2 or earlier
--instance-count3
\ --instance-typem5.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-typem5.xlarge
--applications Name=Hadoop
--configurationsfile://myConfig.json
--use-default-rolesmyConfig.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 |
设置为 |
fs.s3.serverSideEncryption.kms.keyId |
n/a |
指定密 AWS KMS 钥 ID 或 ARN。如果未指定密钥,则使用 SSE-KMS。 |