Configurer gMSA sur Azure Kubernetes Service avec le module PowerShell

Dans cette section, nous allons aborder la configuration de gMSA sur Azure Kubernetes Service à l’aide du module gMSA sur AKS PowerShell. Les étapes ci-dessous supposent que vous avez installé le module gMSA sur AKS PowerShell, que vous êtes connecté à vos clusters AKS et que vous avez fourni les paramètres obligatoires. Si vous ne l’avez pas déjà fait, veillez à suivre les étapes de la première section de ce tutoriel.

Vérifier que la fonctionnalité gMSA est correctement configurée sur le cluster AKS

Votre cluster AKS peut déjà être configuré pour gMSA ou au contraire, ne pas l’être encore. Pour vérifier si le cluster est prêt à utiliser gMSA, exécutez la commande suivante :

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

Après avoir configuré votre cluster, configurez l’infrastructure restante nécessaire au fonctionnement de gMSA.

Configurer votre environnement Active Directory

La première étape de la préparation de votre environnement Active Directory consiste à vous assurer que le système de distribution de clés est configuré. Pour cette étape, vous devez exécuter les commandes en utilisant des informations d’identification avec la délégation appropriée, sur un contrôleur de domaine. Cette tâche peut être déléguée à des personnes autorisées.

À partir d’un contrôleur de domaine, exécutez la commande suivante pour activer la clé racine :

Pour des environnements de production :

# 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

Pour des environnements de test :

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

Vous pouvez exécuter les commandes suivantes sur votre contrôleur de domaine ou sur une session PowerShell distante. Si vous les exécutez à partir de votre contrôleur de domaine, supprimez les paramètres « DomainControllerAddress », « DomainUser » et « DomainPassword » de la commande.

Si vous les exécutez à distance, assurez-vous que votre contrôleur de domaine est configuré pour la gestion à distance.

Créer l’utilisateur de domaine standard

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

Créer le compte 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"]

Configurer Azure Key Vault et une identité managée Azure affectée par l’utilisateur

Azure Key Vault (AKV) servira au stockage des informations d’identification utilisées par les nœuds Windows sur AKS pour communiquer avec les contrôleurs de domaine Active Directory. L’identité managée (MI) fournira aux nœuds Windows l’accès approprié à AKV.

Créer le coffre de clés 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"]

Créer l’identité managée Azure affectée par l’utilisateur

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

Accorder aux hôtes Windows sur AKS l’accès à AKV

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

Configurer la spécification des informations d’identification de gMSA avec les ressources 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"]

À présent, la configuration de gMSA sur AKS est terminée. Vous pouvez maintenant déployer votre charge de travail sur vos nœuds Windows.

Étapes suivantes