本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon Secrets Manager中存储敏感配置数据
Amazon 以明文形式EMR描述和列出API发出自定义配置数据的操作(例如DescribeCluster
和ListInstanceGroups
)。亚马逊与EMR集成, Amazon Secrets Manager 因此您可以将数据存储在 Secrets Manager 中,并在配置ARN中使用该密钥。这样,您就不会以明文形式将敏感配置数据传递给 AmazonEMR,也不会将其暴露给外部。APIs如果您指明密钥值对包含存储在 Secrets Manager 中的密钥,则 Amazon 在向集群发送配置数据时会EMR检索此密钥。ARN当 Amazon 使用外部方式显示配置时APIs,它EMR不会发送注释。
创建密钥
要创建密钥,请遵循《Amazon Secrets Manager 用户指南》中创建 Amazon Secrets Manager 密钥的说明。在步骤 3 中,必须选择 Plaintext(明文)字段来输入您的敏感值。
请注意,虽然 Secrets Manager 允许密钥最多包含 65536 字节,但亚马逊将属性密钥(不包括注释)和检索到的密钥值的总长度EMR限制为 1024 个字符。
授予 Amazon 检索密钥的EMR权限
Amazon EMR 使用IAM服务角色为您预置和管理集群。Amazon 的服务角色EMR定义了亚马逊在预置资源和执行不在集群内运行的 Amazon EC2 实例环境中执行的服务级别任务EMR时允许执行的操作。有关服务角色的更多信息,请参阅 Amazon 的服务角色EMR(EMR角色)和自定义IAM角色。
要允许亚马逊EMR从 Secrets Manager 中检索密钥值,请在启动集群时向您的亚马逊EMR角色添加以下政策声明。
{ "Sid":"AllowSecretsRetrieval", "Effect":"Allow", "Action":"secretsmanager:GetSecretValue", "Resource":[ "arn:aws:secretsmanager:
<region>
:<aws-account-id>
:secret:<secret-name>
" ] }
如果您使用客户管理的密钥创建密钥 Amazon KMS key,则还必须向 Amazon EMR 角色添加您使用的密钥的kms:Decrypt
权限。有关更多信息,请参阅 Amazon Secrets Manager 用户指南中的 Amazon Secrets Manager的身份验证和访问控制。
在配置分类中使用密钥
您可以向任何配置属性添加EMR.secret@
注释,以表明其键值对包含存储在 Secrets Man ARN ager 中的密钥的。
以下示例说明如何在配置分类ARN中提供密钥:
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "EMR.secret@presto.s3.secret-key":"arn:aws:secretsmanager:<region>
:<aws-account-id>
:secret:<secret-name>
" } }
当您创建集群并提交带注释的配置时,Amazon EMR 会验证配置属性。如果您的配置有效,Amazon 会从配置中EMR删除注释并从 Secrets Manager 中检索密钥以创建实际配置,然后再将其应用于集群:
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "presto.s3.secret-key":"<my-secret-key-retrieved-from-Secrets-Manager>
" } }
当您调用类似的操作时DescribeCluster
,Amazon 会EMR返回集群上的当前应用程序配置。如果应用程序配置属性被标记为包含密钥ARN,则该DescribeCluster
调用返回的应用程序配置包含密钥值ARN,而不是密钥值。这样可以确保密钥值仅在集群上可见:
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "presto.s3.secret-key":"arn:aws:secretsmanager:<region>
:<aws-account-id>
:secret:<secret-name>
" } }
更新密钥值
每当附加的实例组启动、重新配置或调整大小时,Amazon 都会从带注释的配置中EMR检索密钥值。您可以使用 Secrets Manager 修改正在运行的集群的配置中使用的密钥的值。完成后,您可以向想要接收更新值的每个实例组提交重新配置请求。如需详细了解如何重新配置实例组以及重新配置时需要考虑的事项,请参阅 在正在运行的集群中重新配置实例组。