【问题标题】:Active directory accounts inside a windows container (server 2016 TP5)Windows 容器内的 Active Directory 帐户(服务器 2016 TP5)
【发布时间】:2016-12-05 05:53:20
【问题描述】:

所以我有 Windows Server 2016 TP5,我正在玩这些容器。我能够很好地完成基本的 docker 任务。我试图弄清楚如何将我们的一些 IIS 托管的 Web 应用程序容器化。

问题是,我们通常对 DB 使用集成身份验证,对应用程序池使用域服务帐户。我目前没有测试虚拟机(在域中),所以我无法测试它是否可以在容器内工作。

如果主机加入了 AD 域,它的容器是否也是域的一部分?我仍然可以使用域帐户运行进程吗?

编辑: 另外,如果我在 dockerfile 中指定“USER”,这是否意味着我的应用程序池将使用它(而不是应用程序池标识)运行?

【问题讨论】:

    标签: docker windows-server-2016


    【解决方案1】:

    至少在某些情况下,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 函数 LogonUserLOGON32_LOGON_NEW_CREDENTIALSLOGON32_PROVIDER_DEFAULT 模拟为 suggested
    3. 您需要传输层网络安全,例如在对基于 AD 的资源进行 RPC 调用(例如:MSDTC)时。
      1. 使用最适合您的任何guide 设置 gMSA。但请注意,gMSA 要求 Docker 主机位于域中。

    【讨论】:

    • 如果您为服务器使用 CNAME,则 cmdkey 需要是实际的服务器名称,而不是 CNAME。
    【解决方案2】:

    更新:此答案不再相关 - 适用于 2016 TP5。 AD 支持已在后续版本中添加

    原答案 快速回答 - 不,容器不支持作为 AD 的一部分,因此您不能使用 AD 帐户在容器内运行进程或对其进行身份验证

    这曾经在 MS Containers 网站上被提及,但 original link 现在会重定向。

    原始措辞(CTP 3 或 4?): “容器不能加入 Active Directory 域,也不能以域用户、服务帐户或机器帐户的身份运行服务或应用程序。”

    我不知道这是否会在以后的版本中改变。

    有人尝试hack around it,但没有任何乐趣。

    【讨论】:

    【解决方案3】:

    您不能将容器加入域,但如果您的应用需要进行身份验证,那么您可以使用托管服务帐户。省去处理包装密码的麻烦。

    https://msdn.microsoft.com/en-us/virtualization/windowscontainers/management/manage_serviceaccounts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 2020-07-02
      • 2020-08-03
      • 2015-02-20
      • 1970-01-01
      相关资源
      最近更新 更多