2016-07-30 3 views
7

Итак, у меня есть Windows Server 2016 TP5, и я играю с контейнерами. Я умею выполнять основные задачи докеров. Я пытаюсь выяснить, как контейнеризировать некоторые из наших веб-приложений, основанных на IIS.Активные учетные записи каталогов в контейнере Windows (сервер 2016 TP5)

Вещь, мы обычно используем встроенную проверку подлинности для БД и используем учетные записи службы домена для пула приложений. В настоящее время у меня нет тестовой виртуальной машины (то есть в домене), поэтому я не могу проверить, будет ли это работать внутри контейнера.

Если хост соединен с доменом AD, его контейнеры также являются частью домена? Могу ли я запускать процессы с использованием учетных записей домена?

EDIT: Кроме того, если я укажу «ПОЛЬЗОВАТЕЛЬ» в файле dockerfile, означает ли это, что мой пул приложений будет работать с этим (вместо идентификатора пула приложений)?

ответ

5

Быстрый ответ - нет, контейнеры не поддерживаются как часть нашей эры, так что вы не можете использовать учетные записи AD для запуска процессов в контейнере или аутентификацию с ним

Раньше это упомянуто на сайте MS контейнеров, но original link теперь перенаправляет.

Оригинальная формулировка (CTP 3 или 4?): «Контейнеры не могут присоединиться к доменам Active Directory и не могут запускать службы или приложения как пользователи домена, учетные записи служб или учетные записи компьютеров».

Я не знаю, изменится ли это в более позднем выпуске.

Кто-то пытался hack around it, но без радости.

+2

[учетных записей Active Directory Service для Windows, контейнерам] (https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/manage-serviceaccounts) имеет эту информацию: «Хотя Контейнеры Windows не могут быть подключены к домену ...» – sschoof

1

Вы не можете присоединяться к контейнерам в домен, но если ваше приложение должно пройти аутентификацию, вы можете использовать учетные записи управляемых служб. Это избавляет вас от необходимости иметь дело с упаковочными паролями.

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

5

Есть по крайней мере, несколько сценариев, где AD-интеграция в Докер контейнер фактически работает:

  1. Вы должны получить доступ к сетевым ресурсам с учетными данными AD.
    1. Run cmdkey/добавить: <network-resource-uri>[:port]/пользователь:/пасс: <pass> под местной идентичностью, которая нуждается в таком доступе
    2. Чтобы применить тот же трюк IIS приложений без изменения AppPoolIdentity вам потребуется простейший .ashx обертка вокруг cmdkey (Примечание: вы должны назвать эту оболочку в время выполнения, например: во время Entrypoint, в противном случае сетевой учетных данных будет отображаться в различную локальную идентичность)
  2. Вам необходимо запустить код под пользователем AD
    1. Impersonate с помощью функции advapi32 LogonUser с LOGON32_LOGON_NEW_CREDENTIALS и LOGON32_PROVIDER_DEFAULT в suggested
  3. Вам нужно транспортной сети уровня безопасности, как и при выполнении RPC вызовов (например .: MSDTC) к AD-ресурсам.
    1. Настройте gMSA с помощью любых guide, которые вам понравятся. Обратите внимание, однако, что для gMSA требуется Докер-хост должен находиться в домене.
+0

Если вы используете CNAME для сервера, cmdkey должно быть фактическим именем сервера, а не CNAME. –

Смежные вопросы