Configurar seu aplicativo para usar uma gMSA

Aplica-se a: Windows Server 2022, Windows Server 2019

Na configuração típica, um contêiner só recebe uma Conta de Serviço Gerenciado de Grupo (gMSA) que é usada sempre que a conta de computador do contêiner tenta se autenticar nos recursos de rede. Isso significa que seu aplicativo precisará ser executado como Sistema Local ou Serviço de Rede se precisar usar a identidade gMSA. Os contêineres também podem ser configurados com gMSAs adicionais, caso você queira executar um serviço ou aplicativo no contêiner como uma identidade diferente da conta de computador do contêiner.

Executar um pool de aplicativos do IIS como Serviço de Rede

Se você estiver hospedando um site do IIS em seu contêiner, tudo o que você precisa fazer para utilizar a gMSA é definir a identidade do pool de aplicativos para Serviço de Rede. Você pode fazer isso em seu Dockerfile adicionando o seguinte comando:

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

Se você usou anteriormente as credenciais de usuário estático para o Pool de Aplicativos do IIS, considere a gMSA como a substituição para essas credenciais. Você pode alterar a gMSA entre os ambientes de desenvolvimento, teste e produção, e o IIS selecionará automaticamente a identidade atual sem precisar alterar a imagem de contêiner.

Executar um serviço do Windows como Serviço de Rede

Se o aplicativo em contêiner for executado como um serviço do Windows, você poderá definir o serviço para ser executado como Serviço de Rede em seu Dockerfile:

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

Executar aplicativos de console arbitrários como Serviço de Rede

Para aplicativos de console genéricos que não são hospedados no IIS ou no Service Manager, geralmente é mais fácil executar o contêiner como Serviço de Rede para que o aplicativo herde automaticamente o contexto da gMSA. Esse recurso está disponível no Windows Server, versão 1709.

Adicione a seguinte linha ao seu Dockerfile para que ele seja executado como Serviço de Rede por padrão:

USER "NT AUTHORITY\NETWORK SERVICE"

Você também pode se conectar a um contêiner como Serviço de Rede em uma base única com docker exec. Isso é particularmente útil se você estiver solucionando problemas de conectividade em um contêiner em execução quando o contêiner não for executado normalmente como Serviço de Rede.

# 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

Próximas etapas

Além de configurar aplicativos, você também pode usar as gMSAs para:

Se você tiver problemas durante a instalação, consulte nosso guia de solução de problemas para obter soluções possíveis.