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

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

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

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

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

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

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

  • 最初启动容器时,会为您的作业将敏感数据注入容器中。如果随后更新或轮换密钥或 Parameter Store 参数,则容器将不会自动接收已更新的值。您必须启动一个新作业,才能强制启动一个包含更新的密钥的新作业。

Amazon Batch 密钥所需的 IAM 权限

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

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

  • ssm:GetParameters— 当您在任务定义中引用 Systems Manager Parameter Store 参数时,这是必填项。

  • secretsmanager:GetSecretValue— 当您直接引用 Secrets Manager 密钥或者您的 System Manager Parameter Store 参数在任务定义中引用 Secrets Manager 密钥时,这是必填项。

  • 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>" ] } ] }

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

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

以下是任务定义的片段,其中显示引用 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 时,您可以使用要在容器中设置的日志驱动程序选项的名称以及包含要提供给容器的敏感数据的 Systems Manager Parameter Store 参数的完整 ARN 指定 secretOptions

重要

如果 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" }] }] }] }

创建 Amazon Systems Manager 参数存储参数

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

创建 Parameter Store 参数
  1. 打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/

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

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

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

  5. 对于 “类型”,选择 “字符串StringList、“或” SecureString

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

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

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

      以下是别名示例:

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

  7. 选择创建参数