Поделиться через


Настройка приложения для использования gMSA

Область применения: Windows Server 2025, Windows Server 2022, Windows Server 2019

В типичной конфигурации контейнер получает только одну управляемую учетную запись службы группы (gMSA), которая используется всякий раз, когда учетная запись компьютера контейнера пытается пройти проверку подлинности в сетевых ресурсах. Это означает, что приложению потребуется запуститься с правами локальной системы или сетевой службы, если оно должно использовать учетную запись gMSA. Контейнеры также можно настроить с помощью дополнительных gMSAs, если вы хотите запустить службу или приложение в контейнере под другим удостоверением, отличным от учетной записи компьютера контейнера.

Запуск пула приложений IIS в качестве сетевой службы

Если вы размещаете веб-сайт IIS в контейнере, все, что вам нужно сделать для использования gMSA, это задать удостоверение пула приложений как Сетевой службы. Это можно сделать в Dockerfile, добавив следующую команду:

RUN %windir%\system32\inetsrv\appcmd.exe set AppPool DefaultAppPool -'processModel.identityType':NetworkService

Если вы ранее использовали статические учетные данные пользователя для пула приложений IIS, рассмотрите gMSA в качестве замены этих учетных данных. Вы можете изменять gMSA между средами разработки, тестирования и производственной среды, и службы IIS автоматически будут использовать текущую учетную запись без необходимости изменять образ контейнера.

Запуск службы Windows в качестве сетевой службы

Если контейнерное приложение работает в качестве службы Windows, можно настроить службу как сетевую службу в Dockerfile:

RUN sc.exe config "YourServiceName" obj= "NT AUTHORITY\NETWORK SERVICE" password= ""

Запуск произвольных консольных приложений в качестве сетевой службы

Для универсальных консольных приложений, не размещенных в службах IIS или Service Manager, часто проще всего запускать контейнер как сетевой службы, чтобы приложение автоматически наследовал контекст gMSA. Эта функция доступна в Windows Server версии 1709.

Добавьте следующую строку в Файл Dockerfile, чтобы он выполнялся как сетевая служба по умолчанию:

USER "NT AUTHORITY\NETWORK SERVICE"

Вы также можете подключиться к контейнеру в качестве сетевой службы однократно с docker exec. Это особенно полезно, если вы устраняете проблемы с подключением в работающем контейнере, который обычно не запускается от имени учетной записи "Сетевой службы".

# Opens an interactive PowerShell console in the container (id = 85d) as the Network Service account
docker exec -it --user "NT AUTHORITY\NETWORK SERVICE" 85d powershell

Помимо настройки приложений, можно также использовать gMSAs для:

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