Windows容器使用gMSA - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

Windows容器使用gMSA

Amazon ECS 支持通过特殊 一种名为 组托管服务帐户 (gMSA)。

基于Windows的网络应用程序,如.NET应用程序,通常使用活动目录来 促进用户和服务之间的身份验证和授权管理。开发人员通常设计应用程序以与活动目录集成并运行 用于此目的的域联接服务器。因为Windows容器不能与域联接, 您必须配置Windows容器以使用gMSA运行。

使用gMSA运行的Windows容器依赖于其宿主 Amazon EC2 实例来检索 来自活动目录域控制程序的gMSA凭证,并将其提供给 容器实例。更多信息,请参阅 为Windows容器创建gMSA.

Considerations

当对Windows容器使用gMSA时,应考虑以下事项:

  • 当使用 Amazon ECS 优化的 Windows Server 2016 Full AMI 对于您的容器实例, 容器名称名称必须与在 凭证规范文件。要为容器指定名称,请使用 hostname 容器定义参数。如需了解更多信息, 看到 网络设置.

Prerequisites

以下是使用适用于Windows容器的gMSA功能的前提条件 Amazon ECS.

  • 一个活动目录, Amazon ECS Windows容器实例可以加入。 Amazon ECS 支持以下内容:

    • AWS Directory Service,这是一个 AWS 托管的活动目录 Amazon EC2. 对于 更多信息,请参阅 开始使用受管理的MicrosoftADAWS Directory Service Administration Guide.

    • 本地活动目录,只要 Amazon ECS Windows容器 实例可以加入域。更多信息,请参阅 直接连接.

  • 活动目录中的现有gMSA帐户。更多信息,请参阅 为Windows容器创建gMSA.

  • 的 Amazon ECS 托管的Windows容器实例 Amazon ECS 任务必须是域 加入活动目录,并成为活动目录安全 可以访问gMSA帐户的团体。

在上设置支持gMSA的Windows容器 Amazon ECS

Amazon ECS 使用包含用于传播的gMSA元数据的凭证规范文件 将gMSA帐户环境连接至Windows容器。您可以生成凭证规格 并在 dockerSecurityOptions 任务中的字段 定义。凭证规范文件不包含任何密钥。

以下是凭证规范文件的示例:

{ "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-2554468230-2647958158-2204241789", "MachineAccountName": "WebApp01", "Guid": "8665abd4-e947-4dd0-9a51-f8254943c90b", "DnsTreeName": "example.com", "DnsName": "example.com", "NetBiosName": "example" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "WebApp01", "Scope": "example.com" } ] } }

参考中的凭证规范文件 任务定义

Amazon ECS 支持以下方法参考 dockerSecurityOptions 任务定义字段。

Amazon S3 存储桶

将凭证规范添加到 Amazon S3 然后参考alirocumab 资源名称(ARN) Amazon S3 在 dockerSecurityOptions 任务定义字段。

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:arn:aws:s3:::${BucketName}/${ObjectName}" ], ... } ], ... }

您还必须将以下权限添加为在线策略 Amazon ECS 任务执行 IAM 角色,让您的任务能够访问 Amazon S3 桶。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::{bucket_name}", "arn:aws:s3:::{bucket_name}/{object}" ] } ] }

SSM 参数存储参数

将凭证规范添加到 SSM 参数存储参数,然后 参考 SSM 参数存储参数 在 dockerSecurityOptions 任务定义字段。

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:arn:aws:ssm:region:111122223333:parameter/parameter_name" ], ... } ], ... }

您还必须将以下权限添加为在线策略 Amazon ECS 任务执行 IAM 角色,让您的任务能够访问 SSM 参数存储 参数。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": [ "arn:aws:ssm:region:111122223333:parameter/parameter_name" ] } ] }

本地文件

在本地文件中填写凭证规范详细信息,在 的 dockerSecurityOptions 任务定义字段。

{ "family": "", "executionRoleArn": "", "containerDefinitions": [ { "name": "", ... "dockerSecurityOptions": [ "credentialspec:file://CredentialSpecFile.json" ], ... } ], ... }