Compartilhar via


Configurar a gMSA no Serviço de Kubernetes do Azure com o módulo do PowerShell

Nesta seção, vamos abranger como configurar a gMSA no Serviço de Kubernetes do Azure usando o módulo do PowerShell da gMSA no AKS. As etapas abaixo pressupõem que você instalou o módulo do PowerShell da gMSA no AKS, conectou aos clusters do AKS e forneceu os parâmetros necessários. Se você ainda não fez isso, siga as etapas na primeira seção deste tutorial.

Confirmar se o recurso gMSA está devidamente configurado no cluster do AKS

Seu cluster do AKS pode ou não estar configurado para gMSA. Para validar se o cluster está pronto para utilização da gMSA, execute o seguinte comando:

 Confirm-AksGMSAConfiguration `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksGMSADomainDnsServer $params["domain-dns-server"] `
 -AksGMSARootDomainName $params["domain-fqdn"]

Depois de configurar o cluster, você pode configurar a infraestrutura restante necessária para que a gMSA funcione.

Configurar ambiente do Active Directory

A primeira etapa na preparação do Active Directory é garantir que o sistema de distribuição de chaves esteja configurado. Para isso, os comandos precisam ser executados com credenciais com a delegação adequada em relação a um controlador de domínio. Essa tarefa pode ser delegada a pessoas autorizadas.

Em um controlador de domínio, execute o seguinte comando para habilitar a chave raiz:

Para ambientes de produção:

# You will need to wait 10 hours before the KDS root key is
# replicated and available for use on all domain controllers.
Add-KdsRootKey -EffectiveImmediately

Para ambientes de teste:

# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

Você pode executar os comandos a seguir no seu controlador de domínio ou em uma sessão remota do PowerShell. Se você os executar no seu controlador de domínio, remova os parâmetros "DomainControllerAddress", "DomainUser" e "DomainPassword" do comando.

Se você os executar remotamente, verifique se o controlador de domínio está configurado para gerenciamento remoto.

Criar o usuário padrão do domínio

 # Creates the standard domain user.
 New-GMSADomainUser `
 -Name $params["gmsa-domain-user-name"] `
 -Password $params["gmsa-domain-user-password"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

Criar a gMSA

 # Creates the gMSA account, and it authorizes only the standard domain user.
 New-GMSA `
 -Name $params["gmsa-name"] `
 -AuthorizedUser $params["gmsa-domain-user-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

Configurar o Azure Key Vault e a identidade gerenciada atribuída pelo usuário do Azure

O AKV (Azure Key Vault) será usado para armazenar a credencial usada pelos nós do Windows no AKS para se comunicar com os controladores de domínio do Active Directory. Uma MI (identidade gerenciada) será usada para fornecer aos seus nós do Windows acesso adequado ao AKV.

Criar o cofre de chaves do Azure

 # The Azure key vault will have a secret with the credentials of the standard
 # domain user authorized to fetch the gMSA.
 New-GMSAAzureKeyVault `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["akv-name"] `
 -SecretName $params["akv-secret-name"] `
 -GMSADomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -GMSADomainUserPassword $params["gmsa-domain-user-password"]

Criar a identidade gerenciada atribuída pelo usuário do Azure

 New-GMSAManagedIdentity `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["ami-name"]

Conceder acesso ao AKV para os hosts Windows do AKS

 # Appends the user-assigned managed identity to the AKS Windows agent pools given as input parameter.
 # Configures the AKV read access policy for the user-assigned managed identity.
 Grant-AkvAccessToAksWindowsHosts `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksWindowsNodePoolsNames $params["aks-win-node-pools-names"] `
 -VaultResourceGroupName $params["aks-cluster-rg-name"] `
 -VaultName $params["akv-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"]

Configurar a especificação da credencial da gMSA com os recursos de RBAC

 # Creates the gMSA credential spec.
 # Configures the appropriate RBAC resources (ClusterRole and RoleBinding) for the spec.
 # Executes AD commands to get the appropriate domain information for the credential spec.
 New-GMSACredentialSpec `
 -Name $params["gmsa-spec-name"] `
 -GMSAName $params["gmsa-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"] `
 -VaultName $params["akv-name"] `
 -VaultGMSASecretName $params["akv-secret-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -DomainUserPassword $params["gmsa-domain-user-password"]

Nesta fase, a configuração da gMSA no AKS está concluída. Agora é possível implantar sua carga de trabalho nos nós do Windows.

Próximas etapas