使用 gMSA 运行容器
适用于:Windows Server 2022、Windows Server 2019
若要使用组托管服务帐户 (gMSA) 来运行容器,请将凭据规范文件提供给 docker run 的 --security-opt
参数:
docker run --security-opt "credentialspec=file://contoso_webapp01.json" --hostname webapp01 -it mcr.microsoft.com/windows/server:ltsc2022 powershell
重要
在 Windows Server 2016 版本 1709 和 1803 中,容器的主机名必须与 gMSA 短名称匹配。
在上面的示例中,gMSA SAM 帐户名称为“webapp01”,因此容器主机名也被命名为“webapp01”。
在 Windows Server 2019 和更高版本中,主机名字段不是必需的,但容器仍将使用 gMSA 名称而非主机名来标识自身,即使你显式提供了不同的主机名也是如此。
若要检查 gMSA 是否正常工作,请在容器中运行以下 cmdlet:
# Replace contoso.com with your own domain
PS C:\> nltest /sc_verify:contoso.com
Flags: b0 HAS_IP HAS_TIMESERV
Trusted DC Name \\dc01.contoso.com
Trusted DC Connection Status Status = 0 0x0 NERR_Success
Trust Verification Status = 0 0x0 NERR_Success
The command completed successfully
如果受信任的 DC 连接状态和信任验证状态不是 NERR_Success
,请遵循故障排除说明来调试问题。
可以通过从容器中运行以下命令并检查客户端名称来验证 gMSA 标识:
PS C:\> klist get webapp01
Current LogonId is 0:0xaa79ef8
A ticket to krbtgt has been retrieved successfully.
Cached Tickets: (2)
#0> Client: webapp01$ @ CONTOSO.COM
Server: krbtgt/webapp01 @ CONTOSO.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
Start Time: 3/21/2019 4:17:53 (local)
End Time: 3/21/2019 14:17:53 (local)
Renew Time: 3/28/2019 4:17:42 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0
Kdc Called: dc01.contoso.com
[...]
若要以 gMSA 帐户身份打开 PowerShell 或其他控制台应用,可以要求容器在“网络服务”帐户下运行,而不是使用普通的 ContainerAdministrator(对于 NanoServer,则为 ContainerUser)帐户:
# NOTE: you can only run as Network Service or SYSTEM on Windows Server 1709 and later
docker run --security-opt "credentialspec=file://contoso_webapp01.json" --hostname webapp01 --user "NT AUTHORITY\NETWORK SERVICE" -it mcr.microsoft.com/windows/servercore:ltsc2019 powershell
作为“网络服务”运行时,可以尝试连接到域控制器上的 SYSVOL,以 gMSA 身份测试网络身份验证:
# This command should succeed if you're successfully running as the gMSA
PS C:\> dir \\contoso.com\SYSVOL
Directory: \\contoso.com\sysvol
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 2/27/2019 8:09 PM contoso.com
后续步骤
除了运行容器之外,还可以使用 gMSA 来执行以下操作:
如果在设置过程中遇到任何问题,请查看我们的故障排除指南,了解可能的解决方案。