Windows 容器中的 Active Directory 帐户(Server 2016 TP5)

9
我有一个Windows Server 2016 TP5,正在尝试使用容器。我能够完成基本的docker任务。我正在尝试将一些托管在IIS上的Web应用程序进行容器化。
问题在于,我们通常使用集成身份验证来访问数据库,并使用域服务帐户作为应用程序池。我目前没有测试虚拟机(加入了域),因此无法测试容器内是否可以正常工作。
如果主机已加入AD域,那么它的容器也是域的一部分吗?我是否仍然可以使用域帐户运行进程? 另外,如果我在dockerfile中指定“USER”,这是否意味着我的应用程序池将使用该用户(而不是应用程序池标识)运行?
3个回答

8
至少有一些情况下,Docker容器中的AD集成确实起作用:
1. 需要使用AD凭据访问网络资源。
1. 在需要此访问权限的本地标识下运行cmdkey /add:<network-resource-uri>[:port] /user:<ad-user> /pass:<pass> 2. 若要将相同的技巧应用于不修改AppPoolIdentity的IIS应用程序,您需要在cmdkey周围包装最简单的.ashx包装器(注意:您必须在运行时调用此包装器,例如:在ENTRYPOINT期间,否则网络凭据将映射到不同的本地标识)
2. 需要以AD用户身份运行代码
1. 使用ADVAPI32函数LogonUser进行模拟,将LOGON32_LOGON_NEW_CREDENTIALSLOGON32_PROVIDER_DEFAULT作为建议 3. 需要传输层网络安全性,比如对基于AD的资源进行RPC调用(例如:MSDTC)。
1. 使用任何适合您的指南设置gMSA。但请注意,gMSA需要Docker主机在域中。

如果您正在为服务器使用CNAME,则cmdkey <network-resource-uri>需要是实际的服务器名称,而不是CNAME。 - Daniel Leach

6
更新:此答案已不再相关 - 适用于2016 TP5。后续版本中已添加了AD支持。 原始答案 简短回答 - 不支持容器作为AD的一部分,因此您无法使用AD帐户在容器内运行进程或进行身份验证。
这曾经在MS Containers网站上提到过,但原始链接现在被重定向了。
原始措辞(CTP 3或4?): “容器不能加入Active Directory域,并且不能以域用户、服务帐户或机器帐户的身份运行服务或应用程序。”
我不知道在以后的版本中是否会更改。
有人试图绕过此限制,但没有成功。

2
“虽然Windows容器无法加入域,…” - sschoof

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接