Windows容器内的活动目录帐户(服务器2016 TP5)
所以我有Windows Server 2016 TP5,我正在玩弄容器。 我能够做基本的docker任务罚款。 我想弄清楚如何容纳一些我们的IIS托pipe的Web应用程序。
事情是,我们通常对数据库使用集成身份validation,并为应用程序池使用域服务帐户。 我目前没有一个testing虚拟机(即在一个域),所以我不能testing,如果这将在一个容器内工作。
如果主机join到AD域,它的容器是否也是域的一部分? 我还可以使用域帐户运行进程吗?
编辑:此外,如果我在dockerfile中指定“用户”,这是否意味着我的应用程序池将使用该(而不是应用程序池标识)运行?
快速回答 – 不,作为AD的一部分不支持容器,因此您不能使用AD帐户在容器中运行进程或使用它进行身份validation
以前在MS Containers网站上提到过,但原始链接现在redirect。
原始文字(CTP 3或4?):“容器无法joinActive Directory域,无法以域用户,服务帐户或计算机帐户运行服务或应用程序。
我不知道以后的版本会不会改变。
有人试图绕过它,但没有喜悦。
至less有一些在Docker容器中实现AD集成的场景:
- 您需要使用AD凭据访问networking资源。
- 在需要访问的本地身份下运行cmdkey / add:
<network-resource-uri>[:port]
/ user:<ad-user>
/ pass:<pass>
- 要在不修改AppPoolIdentity的情况下将相同的技巧应用于IIS应用程序,您需要在cmdkey上使用最简单的.ashx包装器(注意:您必须在运行时调用此包装器,例如:在ENTRYPOINT期间,否则networking凭证将映射到不同的本地身份)
- 在需要访问的本地身份下运行cmdkey / add:
- 您需要在AD用户下运行代码
- 按照build议使用LOGON32_LOGON_NEW_CREDENTIALS和LOGON32_PROVIDER_DEFAULT模拟使用ADVAPI32函数LogonUser
- 您需要传输层networking安全性,例如在对基于AD的资源进行RPC调用(例如:MSDTC)时。
- 使用任何最适合您的指南来设置gMSA。 但请注意,gMSA 要求 Docker主机位于域中。
您无法将容器join域,但是如果您的应用需要authentication,则可以使用托pipe服务帐户。 节省您不必处理打包密码的麻烦。
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/management/manage_serviceaccounts