Konfigurieren von gMSA in Azure Kubernetes Service mit dem PowerShell-Modul
In diesem Abschnitt wird beschrieben, wie Sie gMSA in Azure Kubernetes Service mithilfe des gMSA in AKS PowerShell-Moduls einrichten. Bei den folgenden Schritten wird davon ausgegangen, dass Sie das PowerShell-Modul gMSA in AKS installiert, mit Ihren AKS-Clustern verbunden und die erforderlichen Parameter angegeben haben. Sollte dies noch nicht geschehen sein, führen Sie die Schritte im ersten Abschnitt dieses Tutorials aus.
Vergewissern Sie sich, dass das gMSA-Feature für den AKS-Cluster ordnungsgemäß konfiguriert ist
Ihr AKS-Cluster ist möglicherweise bereits für gMSA konfiguriert. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Cluster für die Nutzung des gMSA bereit ist:
Confirm-AksGMSAConfiguration `
-AksResourceGroupName $params["aks-cluster-rg-name"] `
-AksClusterName $params["aks-cluster-name"] `
-AksGMSADomainDnsServer $params["domain-dns-server"] `
-AksGMSARootDomainName $params["domain-fqdn"]
Nach dem Konfigurieren Ihres Clusters können Sie die verbleibende Infrastruktur konfigurieren, die für das gMSA erforderlich ist.
Konfigurieren Ihrer Active Directory-Umgebung
Der erste Schritt bei der Vorbereitung von Active Directory besteht im Sicherstellen, dass das Schlüsselverteilungssystem konfiguriert ist. Für diesen Schritt müssen die Befehle mit Anmeldeinformationen mit der richtigen Delegierung gegen einen Domänencontroller ausgeführt werden. Diese Aufgabe kann (bei Bedarf) an autorisierte Personen delegiert werden.
Führen Sie von einem Domänencontroller aus Folgendes aus, um den Stammschlüssel zu aktivieren:
Für Produktionsumgebungen:
# 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
Für Testumgebungen:
# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Sie können die folgenden Befehle entweder auf Ihrem Domänencontroller oder in einer PowerShell-Remotesitzung ausführen. Wenn sie von Ihrem Domänencontroller aus ausgeführt werden, entfernen Sie die Parameter „DomainControllerAddress“, „DomainUser“ und „DomainPassword“ aus dem Befehl.
Stellen Sie bei Remote-Ausführung sicher, dass Ihr Domänencontroller für die Remote-Verwaltung konfiguriert ist.
Erstellen des Standarddomänenbenutzers
# 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"]
Erstellen des 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"]
Einrichten von Azure Key Vault und einer benutzerseitig zugewiesenen verwalteten Azure-Identität
Azure Key Vault (AKV) wird verwendet, um die Anmeldeinformationen zu speichern, die von den Windows-Knoten unter AKS für die Kommunikation mit der Active Directory-Domäne verwendet werden. Eine verwaltete Identität (Managed Identity, MI) wird verwendet, um angemessenen Zugriff auf AKV für Ihre Windows Knoten zu ermöglichen.
Erstellen des Azure Key Vault
# 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"]
Erstellen der benutzerseitig zugewiesenen verwalteten Azure-Identität
New-GMSAManagedIdentity `
-ResourceGroupName $params["aks-cluster-rg-name"] `
-Location $params["azure-location"] `
-Name $params["ami-name"]
Gewähren von AKV-Zugriff auf die AKS-Windows Hosts
# 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"]
Einrichten der gMSA-Anmeldeinformationsspezifikation mit den RBAC-Ressourcen
# 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"]
In dieser Phase ist die Konfiguration von gMSA unter AKS abgeschlossen. Sie können Ihre Workload jetzt auf Ihren Windows Knoten bereitstellen.