Compartilhar via


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

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

Confirme se o cluster do AKS tem o recurso gMSA configurado corretamente

O cluster do AKS pode ou não estar configurado para gMSA. Para validar se o cluster está pronto para utilização de 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 seu 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 esta etapa, os comandos precisam ser executados usando credenciais com a delegação apropriada, em um Controlador de Domínio. Essa tarefa pode ser delegada a pessoas autorizadas.

Em um Controlador de Domínio, execute o seguinte 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)

Para os comandos a seguir, você pode executá-los em seu Controlador de Domínio ou em uma sessão remota do PowerShell. Se estiver em execução do controlador de domínio, remova os parâmetros "DomainControllerAddress", "DomainUser" e "DomainPassword" do comando.

Se estiver sendo executado remotamente, verifique se o Controlador de Domínio está configurado para gerenciamento remoto.

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

 # 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 acesso adequado ao AKV para seus nós do Windows.

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 aos 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"]

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

Próxima etapa