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, connecté à vos clusters AKS et fourni les paramètres requis. Si vous ne l’avez pas déjà fait, veillez à suivre les étapes de la première section de ce tutoriel.
Vérifiez que la fonctionnalité gMSA du cluster AKS est correctement configurée
Votre cluster AKS peut ou ne pas être déjà configuré pour gMSA. Pour vérifier que le cluster est prêt pour l’utilisation de 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, vous pouvez configurer l’infrastructure restante nécessaire pour que gMSA fonctionne.
Configurer votre environnement Active Directory
La première étape pour préparer votre Active Directory est de s'assurer que le Key Distribution System 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 ce qui suit pour activer la clé racine :
Pour les 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 les environnements de test :
# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Pour les commandes suivantes, vous pouvez les exécuter sur votre contrôleur de domaine ou sur une session PowerShell distante. Si vous exécutez la commande depuis votre contrôleur de domaine, supprimez les paramètres « DomainControllerAddress », « DomainUser » et « DomainPassword ».
Si vous exécutez à distance, vérifiez 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 l’identité managée assignée par l'utilisateur Azure
Azure Key Vault (AKV) sera utilisé pour stocker les informations d’identification utilisées par les nœuds Windows sur AKS pour communiquer avec les contrôleurs de domaine Active Directory. Une identité managée (MI) sera utilisée pour fournir un accès approprié à AKV pour vos nœuds Windows.
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 à AKV l’accès aux hôtes Windows 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"]
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"]
À ce stade, la configuration de gMSA sur AKS est terminée. Vous pouvez maintenant déployer votre charge de travail sur vos nœuds Windows.