在 AWS Secrets Manager中存储敏感配置数据 - Amazon EMR

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

在 AWS Secrets Manager中存储敏感配置数据

Amazon 以明文形式EMR描述和列出API发出自定义配置数据的操作(例如DescribeClusterListInstanceGroups)。亚马逊与EMR集成, AWS Secrets Manager 因此您可以将数据存储在 Secrets Manager 中,并在配置ARN中使用该密钥。这样,您就不会以明文形式将敏感配置数据传递给 AmazonEMR,也不会将其暴露给外部。APIs如果您指明密钥值对包含存储在 Secrets Manager 中的密钥,则 Amazon 在向集群发送配置数据时会EMR检索此密钥。ARN当 Amazon 使用外部方式显示配置时APIs,它EMR不会发送注释。

创建密钥

要创建密钥,请遵循《AWS Secrets Manager 用户指南》创建 AWS 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>" ] }

如果您使用客户管理的密钥创建密钥 AWS KMS key,则还必须向 Amazon EMR 角色添加您使用的密钥的kms:Decrypt权限。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的 AWS 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 修改正在运行的集群的配置中使用的密钥的值。完成后,您可以向想要接收更新值的每个实例组提交重新配置请求。如需详细了解如何重新配置实例组以及重新配置时需要考虑的事项,请参阅 在正在运行的集群中重新配置实例组