使用 Systems Manager Parameter Store 指定敏感数据 - AWS Batch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 Systems Manager Parameter Store 指定敏感数据

使用 AWS Batch,您可以向容器中注入敏感数据,方法是将您的敏感数据存储在 AWS Systems Manager Parameter Store 参数中,然后在容器定义中引用它们。

使用 Systems Manager Parameter Store 指定敏感数据时的注意

使用 Systems Manager Parameter Store 参数指定容器的敏感数据时,应考虑以下事项。

  • 此功能要求您的容器实例具有 1.22.0 版或更高版本的容器代理。但是,我们建议使用最新的容器代理版本。有关检查您的代理版本并更新到最新版本的信息,请参阅更新 Amazon ECS 容器代理中的Amazon Elastic Container Service 开发商指南

  • 最初启动容器时,会将敏感数据注入容器中。如果随后更新或轮换密钥或 Parameter Store 参数,则容器将不会自动接收已更新的值。你必须启动一个新的工作,以强制推出一个新的工作与更新的秘密。

AWS Batch 密钥所需的 IAM 权限

要使用此功能,您必须具有执行角色,并在作业定义中引用它。这允许 Amazon ECS 容器代理提取必要的 AWS Systems Manager 资源。有关更多信息,请参阅 AWS Batch 执行 IAM 角色

重要

您必须使用 Amazon 云服务器代理配置变量ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true以使用此功能。您可以在创建容器实例的过程中将其添加到 ./etc/ecs/ecs.config 文件中,也可以将其添加到现有实例中,然后重新启动 ECS 代理。有关更多信息,请参阅 。Amazon ECS 容器代理配置中的Amazon Elastic Container Service 开发商指南

要提供对您创建的 AWS Systems Manager Parameter Store 参数的访问权限,请将以下权限作为内联策略手动添加到执行角色。有关更多信息,请参阅 。添加和删除 IAM 策略中的IAM 用户指南

  • ssm:GetParameters-当您在任务定义中引用 Systems Manager Parameter Store 参数时是必需的。

  • secretsmanager:GetSecretValue-当您直接引用密钥 Secrets Manager 钥或者您的 Systems Manager Parameter Store 参数存在任务定义中引用密钥管理器密钥时,这是必需的。

  • kms:Decrypt-仅当您的密钥使用自定义 KMS 密钥而不是默认密钥时才需要。您的自定义密钥的 ARN 应添加为资源。

以下示例内联策略添加所需权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>", "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>", "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>" ] } ] }

将敏感数据作为环境变量注入

在容器定义中,指定secrets,其中包含要在容器中设置的环境变量的名称以及包含要提供给容器的敏感数据的 Systems Manager Parameter Store 参数的完整 ARN。

以下是任务定义的片段,其中显示引用 Systems Manager Parameter Store 参数时的格式。如果 Systems Manager Parameter Store 参数存在于要启动的任务所在的区域,则可以使用参数的完整 ARN 或名称。如果参数存在于不同的区域,则必须指定完整的 ARN。

{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }

在日志配置中注入敏感数据

在容器定义中,当指定logConfiguration您可以指定secretOptions,其中包含要在容器中设置的日志驱动程序选项的名称以及包含要提供给容器的敏感数据的 Systems Manager Parameter Store 参数的完整 ARN。

重要

如果 Systems Manager Parameter Store 参数存在于要启动的任务所在的区域,则可以使用参数的完整 ARN 或名称。如果参数存在于不同的区域,则必须指定完整的 ARN。

以下是任务定义的片段,其中显示引用 Systems Manager Parameter Store 参数时的格式。

{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "fluentd", "options": { "tag": "fluentd demo" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter:parameter_name" }] }] }] }

创建 AWS Systems Manager Parameter Store 参数

您可以使用 AWS Systems Manager 控制台为您的敏感数据创建 Systems Manager Parameter Store 参数。有关更多信息,请参阅 。演练:在命令中创建和使用参数 (控制台)中的AWS Systems Manager 用户指南

创建 Parameter Store 参数

  1. 以下网址打开 AWS Systems Manager 控制台:https://console.aws.amazon.com/systems-manager/

  2. 在导航窗格中,依次选择 Parameter StoreCreate parameter (创建参数)

  3. 对于 Name (名称),键入层次结构和参数名称。例如,键入 test/database_password

  4. 对于 Description (描述),键入可选描述。

  5. 对于 Type,选择 StringStringListSecureString

    注意
    • 如果选择 SecureString,则会显示 KMS Key ID (KMS 密钥 ID) 字段。如果您未提供 KMS CMK ID、KMS CMK ARN、别名或别名 ARN,则系统使用alias/aws/ssm。这是默认的 KMS CMK 适用于 Systems Manager。要避免使用此密钥,请选择自定义密钥。有关更多信息,请参阅 。使用安全字符串参数中的AWS Systems Manager 用户指南

    • 在控制台中使用具有自定义 KMS CMK 别名或别名 ARN 的 key-id 参数创建安全字符串参数时,您必须在别名前面指定前缀 alias/。以下是 ARN 示例:

      arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

      以下是别名示例:

      alias/MyAliasName
  6. 对于 Value (值),键入一个值。例如,MyFirstParameter。如果您选择了SecureString,则该值将按您输入的方式完全掩蔽。

  7. 选择创建参数