教程:在无域gMSA中使用 Windows 容器使用 Amazon CLI - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:在无域gMSA中使用 Windows 容器使用 Amazon CLI

以下教程展示了如何创建 Amazon ECS 任务,该任务运行一个 Windows 容器,该容器具有访问活动目录的证书Amazon CLI。通过使用 domainlessgMSA,容器实例不会加入该域,实例上的其他应用程序无法使用凭证访问该域,并且加入不同域的任务可以在同一个实例上运行。

先决条件

本教程假设以下先决条件已完成:

  • 设置以使用 Amazon ECS 中的步骤已完成。

  • 您的 Amazon 用户具有 Amazon ECS 首次运行向导权限 IAM policy 示例中指定的所需权限。

  • 安装并配置了最新版本的 Amazon CLI。有关安装或升级 Amazon CLI 的更多信息,请参阅安装 Amazon Command Line Interface

  • 您可以使用您希望容器访问的资源设置一个 Active Directory 域。亚马逊 ECS 支持以下设置:

    • Amazon Directory Service活动目录。 Amazon Directory Service是一个Amazon托管在 Amazon EC2 上的托管活动目录。有关更多信息,请参阅 Amazon Directory Service 管理指南中的 Amazon 托管 Microsoft AD 入门

    • 本地活动目录。您必须确保 Amazon ECS Linux 容器实例可以加入该域。有关更多信息,请参阅Amazon Direct Connect

  • 您有一个 VPC 和可以解析 Active Directory 域名的子网。

  • 您可以在无域gMSA和将每个实例加入单个域之间进行选择。通过使用 domainlessgMSA,容器实例不会加入该域,实例上的其他应用程序无法使用凭证访问该域,并且加入不同域的任务可以在同一个实例上运行。

    然后,为无域gMSA的 Active Directory 用户凭证选择数据存储,也可以选择数据存储。CredSpec

    亚马逊 ECS 使用 Active Directory 凭证规范文件 (CredSpec)。此文件包含用于将gMSA账户上下文传播到容器的gMSA元数据。您可以生成该CredSpec文件,然后将其存储在下表中的一个CredSpec存储选项中,该存储选项特定于容器实例的操作系统。要使用无域方法,CredSpec文件中的可选部分可以在下表中的domainless user credentials存储选项之一中指定凭据,这些凭据特定于容器实例的操作系统。

    gMSA按操作系统划分的数据存储选项
    存储位置 Linux Windows
    Amazon Simple Storage Service CredSpec CredSpec
    Amazon Secrets Manager 无域用户凭证 无域用户凭证
    亚马逊 EC2 Systems Manager 参数存储 CredSpec CredSpec,无域用户凭证
    本地文件 不适用 CredSpec
  • 可选:Amazon CloudShell 是一种为客户提供命令行的工具,而无需创建自己的 EC2 实例。有关更多信息,请参阅《Amazon CloudShell 用户指南》中的什么是 Amazon CloudShell

步骤 1:在 Active Directory 域服务 (AD DS) 上创建和配置gMSA帐户

在 Active Directory 域上创建和配置一个gMSA帐户。

  1. 生成密钥分发服务根密钥
    注意

    如果您正在使用Amazon Directory Service,则可以跳过此步骤。

    KDS 根密钥和gMSA权限使用您的Amazon托管 Microsoft AD 进行配置。

    如果您尚未在域中创建gMSA服务帐号,则需要先生成密钥分发服务 (KDS) 根密钥。KDS 负责创建、轮换gMSA密码并将其发布给授权的主机。当ccg.exe需要检索gMSA凭证时,它会联系 KDS 以检索当前密码。

    要检查是否已创建 KDS 根密钥,请使用该模块在域控制器上以域管理员权限运行以下 PowerShell cmdlet。ActiveDirectory PowerShell 有关该模块的更多信息,请参阅 Microsoft Learn 网站上的ActiveDirectory 模块

    PS C:\> Get-KdsRootKey

    如果该命令返回密钥 ID,则可以跳过此步骤的其余部分。否则,请运行以下命令创建 KDS 根密钥:

    PS C:\> Add-KdsRootKey -EffectiveImmediately

    尽管该命令的参数EffectiveImmediately暗示密钥立即生效,但您需要等待 10 小时才能复制 KDS 根密钥并可在所有域控制器上使用。

  2. 创建gMSA账户

    要创建gMSA帐户并允许检索gMSA密码,请从具有域访问权限的 Windows 服务器或客户端上运行以下 PowerShell 命令。ccg.exeExampleAccount替换为你想要的gMSA账户名称。

    1. PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
    2. PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
    3. PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "contoso" -ServicePrincipalNames "host/ExampleAccount", "host/contoso" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
    4. 使用永不过期的永久密码创建用户。这些凭证存储在域中Amazon Secrets Manager,每个任务都使用这些凭证来加入域。

      PS C:\> New-ADUser -Name "ExampleAccount" -AccountPassword (ConvertTo-SecureString -AsPlainText "Test123" -Force) -Enabled 1 -PasswordNeverExpires 1
    5. PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleAccount"
    6. 在 Active Directory 中安装用于创建CredSpec对象的 PowerShell 模块并输出 CredSpec JSON。

      PS C:\> Install-PackageProvider -Name NuGet -Force
      PS C:\> Install-Module CredentialSpec
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. 将前一个命令的 JSON 输出复制到名为的文件中gmsa-cred-spec.json。这是CredSpec文件。它在步骤 3 中使用第 3 步:修改您的 CredSpec JSON 以包含无域信息 gMSA

第 2 步:将凭证上传到 Secrets Manager

将 Active Directory 凭据复制到安全的凭据存储系统中,以便每个任务都能对其进行检索。这是无域方法gMSA。通过使用 domainlessgMSA,容器实例不会加入该域,实例上的其他应用程序无法使用凭证访问该域,并且加入不同域的任务可以在同一个实例上运行。

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  • 运行以下Amazon CLI命令并替换用户名、密码和域名以匹配您的环境。保留秘密的 ARN 以便在下一步中使用,第 3 步:修改您的 CredSpec JSON 以包含无域信息 gMSA

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws secretsmanager create-secret \ --name gmsa-plugin-input \ --description "Amazon ECS - gMSA Portable Identity." \ --secret-string "{\"username\":\"ExampleAccount\",\"password\":\"Test123\",\"domainName\":\"contoso.com\"}"

第 3 步:修改您的 CredSpec JSON 以包含无域信息 gMSA

在上传CredSpec到其中一个存储选项之前,请在 Secrets Manager 中添加CredSpec带有上一步中密钥的 ARN 的信息。有关更多信息,请参阅 Microsoft Learn 网站上的 non-domain-joined 容器主机用例的其他凭证规范配置

  1. 将以下信息添加到里面的CredSpec文件中ActiveDirectoryConfig。将 ARN 替换为上一步中的 Secrets Manager 中的密钥。

    请注意,该PluginGUID值必须与以下示例片段中的 GUID 相匹配,并且是必需的。

    "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" }

    您也可以使用以下格式的 ARN 在 SSM 参数存储中使用密钥:。\"arn:aws:ssm:aws-region:111122223333:parameter/gmsa-plugin-input\"

  2. 修改CredSpec文件后,它应类似于以下示例:

    { "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-4066351383-705263209-1606769140", "MachineAccountName": "ExampleAccount", "Guid": "ac822f13-583e-49f7-aa7b-284f9a8c97b6", "DnsTreeName": "contoso", "DnsName": "contoso", "NetBiosName": "contoso" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "ExampleAccount", "Scope": "contoso" }, { "Name": "ExampleAccount", "Scope": "contoso" } ], "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" } } }

第 4 步:上传CredSpec到亚马逊 S3

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 将CredSpec文件复制到您正在运行Amazon CLI命令的计算机或环境中。

  2. 运行以下Amazon CLI命令将上传CredSpec到 Amazon S3。将 MyBucket 替换为您的 Amazon S3 存储桶的名称。您可以将文件作为对象存储在任何存储桶和位置,但您必须允许访问该存储桶和您附加到任务执行角色的策略中的位置。

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws s3 cp gmsa-cred-spec.json \ s3://MyBucket/ecs-domainless-gmsa-credspec

步骤 5:(可选)创建亚马逊 ECS 集群

默认情况下,您的账户有一个名为的 Amazon ECS 集群default。默认情况下,在Amazon CLI、SDK 和Amazon CloudFormation中使用此集群。您可以使用其他群集来分组和组织任务和基础架构,并为某些配置分配默认值。

您可以通过Amazon Web Services Management Console、Amazon CLI、SDK 或Amazon CloudFormation创建集群。集群中的设置和配置不受影响gMSA。

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

$ aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
重要

如果您选择创建自己的集群,则必须为要--cluster clusterName用于该集群的每条命令都指定。

步骤 6:为容器实例创建 IAM 角色

容器实例是在 ECS 任务中运行容器的主机,例如 Amazon EC2 实例。每个容器实例都注册到一个 Amazon ECS 集群。在启动 Amazon EC2 实例并将其注册到集群之前,您必须创建一个 IAM 角色供您的容器实例使用。

要创建容器实例角色,请参阅Amazon ECS 容器实例 IAM 角色。默认用户ecsInstanceRole有足够的权限来完成本教程。

步骤 7:创建自定义任务执行角色

Amazon ECS 可以使用不同的 IAM 角色来获得启动每项任务所需的权限,而不是容器实例角色。此角色是任务执行角色。我们建议创建一个仅具有 ECS 运行任务所需的权限(也称为最低权限权限)的任务执行角色。有关最低权限原则的更多信息,请参阅 SEC03-BP02 在 Well-Architecte Amazon d Framework 中授予最低权限访问权限

  1. 要创建任务执行角色,请参阅创建任务执行 (ecsTaskExecutionRole) 角色。默认权限允许容器实例从 Amazon Elastic Container Registry stdout 和您的应用程序stderr中提取容器映像,然后将其记录到 Amazon CloudWatch Logs 中。

    由于该角色在本教程中需要自定义权限,因此您可以为该角色指定一个不同的名称ecsTaskExecutionRole。本教程ecsTaskExecutionRole在后续步骤中使用。

  2. 通过创建自定义策略来添加以下权限,可以是仅存在于此角色中的内联策略,也可以是您可以重复使用的策略。将第一条语句Resource中的 ARN 替换为 Amazon S3 存储桶和位置,将第二Resource条语句中的 ARN 替换为 Secrets Manager 中密钥的 ARN。

    如果您使用自定义密钥对 Secrets Manager 中的密钥进行加密,则还必须允许使用kms:Decrypt该密钥。

    如果您使用 SSM Parameter Store 而不是 Secrets Manager,则必须允许ssm:GetParameter使用该参数,而不是。secretsmanager:GetSecretValue

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::MyBucket/ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input" } ] }

步骤 8:为 Amazon ECS Exec 创建任务角色

本教程使用 Amazon ECS Exec 通过在正在运行的任务中运行命令来验证功能。要使用 ECS Exec,服务或任务必须打开 ECS Exec,并且任务角色(但不是任务执行角色)必须具有ssmmessages权限。有关所需的 IAM 策略,请参阅ECS Exec 所需的 IAM 权限

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

要使用创建任务角色Amazon CLI,请执行以下步骤。

  1. 创建一个名为的文件ecs-tasks-trust-policy.json,其中包含以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 创建一个 IAM 角色。您可以替换名称,ecs-exec-demo-task-role但保留该名称以供后续步骤使用。

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws iam create-role --role-name ecs-exec-demo-task-role \ --assume-role-policy-document file://ecs-tasks-trust-policy.json

    您可以删除该文件ecs-tasks-trust-policy.json

  3. 创建一个名为的文件ecs-exec-demo-task-role-policy.json,其中包含以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
  4. 创建 IAM 策略并将其附加到上一步中的角色。

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws iam put-role-policy \ --role-name ecs-exec-demo-task-role \ --policy-name ecs-exec-demo-task-role-policy \ --policy-document file://ecs-exec-demo-task-role-policy.json

    您可以删除该文件ecs-exec-demo-task-role-policy.json

步骤 9:注册使用无域的任务定义 gMSA

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 创建一个名为的文件windows-gmsa-domainless-task-def.json,其中包含以下内容:

    { "family": "windows-gmsa-domainless-task", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 1024, "memory": 1024, "essential": true, "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" ], "entryPoint": [ "powershell", "-Command" ], "command": [ "New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>' -Force ; C:\\ServiceMonitor.exe w3svc" ], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ] } ], "taskRoleArn": "arn:aws:iam::111122223333:role/ecs-exec-demo-task-role", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole" }
  2. 通过运行以下命令注册任务定义:

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws ecs register-task-definition \ --cli-input-json file://windows-gmsa-domainless-task-def.json

步骤 10:将 Windows 容器实例注册到集群

启动 Amazon EC2 Windows 实例并运行 ECS 容器代理将其注册为集群中的容器实例。ECS 在注册到启动任务的集群中的容器实例上运行任务。

  1. 要启动中为亚马逊 ECS 配置的 Amazon EC2 Windows 实例Amazon Web Services Management Console,请参阅启动 Amazon ECS Windows 容器实例。在步骤中停下来获取用户数据

  2. 对于gMSA,用户数据必须在启动 ECS 容器代理ECS_GMSA_SUPPORTED之前设置环境变量。

    对于 ECS Exec,代理必须以参数-EnableTaskIAMRole开头。

    要通过阻止任务访问 EC2 IMDS Web 服务来检索角色凭证来保护实例 IAM 角色,请添加参数-AwsvpcBlockIMDS。这仅适用于使用awsvpc网络模式的任务。

    <powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster windows-domainless-gmsa-cluster -EnableTaskIAMRole -AwsvpcBlockIMDS </powershell>
  3. 查看 Summary(摘要)面板中您的实例配置的摘要,当您准备好后,选择 Launch instance(启动实例)。

步骤 11:验证容器实例

您可以使用验证集群中是否有容器实例Amazon Web Services Management Console。但是,gMSA需要以属性表示的其他功能。这些属性在中不可见Amazon Web Services Management Console,因此本教程使用Amazon CLI。

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 列出集群中的容器实例。容器实例的 ID 与 EC2 实例的 ID 不同。

    $ aws ecs list-container-instances

    输出:

    {
        "containerInstanceArns": [
            "arn:aws:ecs:aws-region:111122223333:container-instance/default/MyContainerInstanceID"
        ]
    }

    例如,526bd5d0ced448a788768334e79010fd是有效的容器实例 ID。

  2. 使用上一步中的容器实例 ID 获取容器实例的详细信息。MyContainerInstanceID替换为身份证。

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID

    请注意,输出很长。

  3. 验证attributes列表中是否有一个名为键name和值的对象ecs.capability.gmsa-domainless。以下是该对象的示例。

    输出:

    {
        "name": "ecs.capability.gmsa-domainless"
    }

步骤 12:运行 Windows 任务

运行亚马逊 ECS 任务。如果集群中只有 1 个容器实例,则可以使用run-task。如果有许多不同的容器实例,那么使用start-task和指定运行任务的容器实例 ID 可能比在任务定义中添加放置约束来控制在哪种类型的容器实例上运行该任务要容易得多。

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command

    记下命令返回的任务 ID。

  2. 运行以下命令以验证任务是否已启动。此命令会等待,直到任务开始后才返回 shell 提示符。MyTaskID替换为上一步中的任务 ID。

    $ aws ecs wait tasks-running --task MyTaskID

步骤 13:验证容器是否有gMSA证书

验证任务中的容器是否有Kerberos令牌。 gMSA

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe

    输出将是一个 PowerShell 提示。

  2. 在容器内的 PowerShell 终端中运行以下命令。

    PS C:\> klist get ExampleAccount$

    在输出中,请注意,Principal是您之前创建的。

第 14 步:清理

完成本教程后,您应清除相关资源,以避免产生与未使用的资源相关的费用。

此步骤使用Amazon CLI. 你可以在默认 shell Amazon CloudShell 中运行这些命令,即bash

  1. 停止任务。MyTaskID替换为步骤 12 中的任务 ID,步骤 12:运行 Windows 任务

    $ aws ecs stop-task --task MyTaskID
  2. 终止 Amazon EC2 实例。之后,集群中的容器实例将在一小时后自动删除。有关更多信息,请参阅容量管理

    您可以使用 Amazon EC2 控制台查找并终止该实例。或者,你可以运行以下命令。要运行该命令,请在步骤 1 的aws ecs describe-container-instances命令输出中找到 EC2 实例 ID 步骤 11:验证容器实例。i-10a64379 是 EC2 实例 ID 的示例。

    $ aws ec2 terminate-instances --instance-ids MyInstanceID
  3. 删除 Amazon S3 中的CredSpec文件。将 MyBucket 替换为您的 Amazon S3 存储桶的名称。

    $ aws s3api delete-object --bucket MyBucket --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
  4. 从 Secrets Manager 中删除密钥。如果您改用 SSM 参数存储,请删除该参数。

    以下命令使用由sh和兼容的 shell 使用的反斜杠延续字符。此命令与不兼容 PowerShell。必须修改命令才能与之配合使用 PowerShell。

    $ aws secretsmanager delete-secret --secret-id gmsa-plugin-input \ --force-delete-without-recovery
  5. 取消注册并删除任务定义。通过取消注册任务定义,可以将其标记为非活动状态,这样它就无法用于启动新任务。然后,您可以删除任务定义。

    1. 通过指定版本来取消注册任务定义。ECS 会自动生成任务定义的版本,这些版本从 1 开始编号。您可以按照与容器镜像上的标签相同的格式来引用版本,例如:1

      $ aws ecs deregister-task-definition --task-definition windows-gmsa-domainless-task:1
    2. 删除任务定义。

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (可选)如果您创建了集群,请删除 ECS 集群。

    $ aws ecs delete-cluster --cluster windows-domainless-gmsa-cluster

调试gMSA适用于 Windows 容器的无域亚马逊 ECS

亚马逊 ECS 任务状态

ECS 只会尝试启动任务一次。任何有问题的任务都将停止,并设置为状态STOPPED。任务问题有两种常见类型。首先,是无法启动的任务。其次,应用程序已在其中一个容器内停止的任务。在Amazon Web Services Management Console任务的 “停止原因” 字段中,查看任务停止的原因。在中Amazon CLI,描述任务并查看stoppedReason。有关Amazon Web Services Management Console和中的步骤Amazon CLI,请参阅检查已停止的任务是否存在错误

Windows 事件

容器gMSA中的 Windows 事件记录在Microsoft-Windows-Containers-CCG日志文件中,可以在事件查看器的 “应用程序和服务” 部分中找到Logs\Microsoft\Windows\Containers-CCG\Admin。有关更多调试技巧,请参阅微软学习网站上的适用于 Windows 容器的 GMSA 疑难解答

ECS 代理gMSA插件

Windows 容器实例上的 ECS 代理gMSA插件的日志位于以下目录中C:/ProgramData/Amazon/gmsa-plugin/。查看此日志,查看无域用户凭据是否是从存储位置(例如 Secrets Manager)下载的,以及证书格式是否正确读取。