作业的私有注册表身份验证 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

作业的私有注册表身份验证

使用对作业进行私有注册表身份验证 Amazon Secrets Manager 使您能够安全地存储凭证,然后在作业定义中引用这些凭证。这提供了一种引用私有注册表中存在的容器镜像的方法 Amazon ,这些镜像需要在任务定义中进行身份验证。托管在 Amazon EC2 实例和 Fargate 上的作业支持此功能。

重要

如果您的任务定义引用了存储在 Amazon ECR 中的图片,则本主题不适用。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南中的使用 Amazon ECR 和 Amazon ECS

对于托管在 Amazon EC2 实例上的任务,此功能需要容器代理版本1.19.0或更高版本。但是,我们建议使用最新的容器代理版本。有关如何检查代理版本和更新到最新版本的信息,请参阅《亚马逊弹性容器服务开发者指南》中的更新 Amazon ECS 容器代理

对于托管在 Fargate 上的作业,此功能需要平台版本1.2.0或更高版本。有关信息,请参阅《亚马逊弹性容器服务开发者指南》中的 Amazon Fargate Linux 平台版本

在容器定义中,使用您创建的密钥的详细信息指定 repositoryCredentials 对象。你引用的密钥可以来自与使用它的工作不同的账户, Amazon Web Services 区域 也可以来自不同的账户。

注意

使用 Amazon Batch API Amazon CLI、或 Amazon SDK 时,如果密钥与您启动的任务 Amazon Web Services 区域 相同,则可以使用密钥的完整 ARN 或名称。如果密钥存在于另一个账户中,则必须指定密钥的完整 ARN。使用时 Amazon Web Services Management Console,必须始终指定密钥的完整 ARN。

以下是显示所需参数的作业定义片段:

"containerProperties": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name" } } ]

私有注册表身份验证所需的 IAM 权限

需要执行角色才能使用此功能。这允许容器代理拉取容器映像。有关更多信息,请参阅Amazon Batch 执行 IAM 角色

要提供对您创建的密钥的访问权限,请将以下权限作为内联策略添加到执行角色。有关更多信息,请参阅添加和删除 IAM policy

  • secretsmanager:GetSecretValue

  • kms:Decrypt - 仅当密钥使用自定义 KMS 密钥而不是原定设置密钥时才需要。您的自定义密钥的 Amazon 资源名称(ARN)必须添加为资源。

下面是添加所需权限的示例内联策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:123456789012:secret:secret_name", "arn:aws:kms:region:123456789012:key/key_id" ] } ] }

使用私有注册表身份验证

创建基本密钥

Amazon Secrets Manager 用于为您的私有注册表凭证创建密钥。

  1. 打开 Amazon Secrets Manager 控制台,网址为 https://console.aws.amazon.com/secretsmanager/

  2. 选择 存储新密钥

  3. 对于选择密钥类型,选择其他密钥类型

  4. 选择纯文本文件并使用以下格式输入您的私有注册表凭证:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. 选择下一步

  6. 对于 Secret name(密钥名称),请输入可选的路径和名称,如 production/MyAwesomeAppSecretdevelopment/TestSecret,然后选择 Next(下一步)。您可以选择添加描述以帮助记住该密钥以后的用途。

    密钥名称应仅包含 ASCII 字母、数字或以下任意字符:/_+=.@-

  7. (可选) 此时,您可以为密钥配置轮换。对于此程序,请将其保留为禁用自动轮换,然后选择下一步

    有关如何配置新密钥或现有密钥轮换的说明,请参阅轮换您的 Amazon Secrets Manager 密钥

  8. 检查您的设置,然后选择 Store secret(存储密钥)以将输入的所有内容作为新密钥保存在 Secrets Manager 中。

注册作业定义,然后在 “私有注册表” 下打开 “私有注册表身份验证”。然后,在 Secrets Manager ARN 或名称中,输入密钥的 Amazon 资源名称(ARN)。有关更多信息,请参阅 私有注册表身份验证所需的 IAM 权限