Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie eine vom Benutzer zugewiesene verwaltete Identität auf einem neuen oder vorhandenen AKS-Cluster aktivieren, die Prinzipal-ID der vom Benutzer zugewiesenen verwalteten Identität abrufen und eine Rollenzuweisung für die vom Benutzer zugewiesene verwaltete Identität hinzufügen.
Voraussetzungen
Lesen Sie die Overview der verwalteten Identitäten in Azure Kubernetes Service (AKS) um die verschiedenen Typen verwalteter Identitäten zu verstehen, die in AKS verfügbar sind, und wie Sie diese verwenden können, um sicher auf Azure Ressourcen zuzugreifen.
Legen Sie Ihr Abonnement mit dem
az account setBefehl als aktuelles aktives Abonnement fest.az account set --subscription <subscription-id>
Eine vorhandene Azure Ressourcengruppe. Wenn Sie keins haben, können Sie einen mit dem
az group createBefehl erstellen.az group create \ --name <resource-group-name> \ --location <location>
- Azure CLI Version 2.23.0 oder höher installiert. Führen Sie
az --versionaus, um die Version zu ermitteln. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI. - Um einen vorhandenen Cluster für die Verwendung einer benutzer zugewiesenen verwalteten Identität zu aktualisieren, müssen Sie Azure CLI Version 2.49.0 oder höher installiert sein.
- Terraform lokal installiert. Installationsanweisungen finden Sie unter Install Terraform.
Einschränkungen
- Nachdem Sie einen Cluster mit einer verwalteten Identität erstellt haben, können Sie nicht zurück zu einem Dienstprinzipal wechseln.
- Das Verschieben oder Migrieren von Clustern mit aktivierter verwalteter Identität zu einem anderen Mandanten wird nicht unterstützt.
- Wenn für den Cluster die verwaltete Microsoft Entra-Podidentität (
aad-pod-identity) aktiviert wurde, werden die iptables der Knoten von NMI-Pods (Node Managed Identity) so geändert, dass Aufrufe des Azure Instance Metadata-Endpunkts (IMDS) abgefangen werden. Diese Konfiguration bedeutet, dass jede Anforderung, die an den IMDS-Endpunkt gerichtet ist, von NMI abgefangen wird, auch wenn ein bestimmter Podaad-pod-identitynicht verwendet.- Sie können die angepasste Ressourcendefinition (CRD) AzurePodIdentityException so konfigurieren, dass Anfragen an den IMDS-Endpunkt, die von einem Pod stammen, der mit den in der CRD definierten Bezeichnungen übereinstimmt, ohne Verarbeitung in NMI als Proxy behandelt werden. Schließen Sie die Systempods mit der Bezeichnung
kubernetes.azure.com/managedby: aksim Namespace kube-system inaad-pod-identitydurch Konfigurieren der AzurePodIdentityException-CRD aus. Weitere Informationen finden Sie unter Verwenden Sie Microsoft Entra Pod-verwaltete Identitäten in Azure Kubernetes Service (AKS). - Um eine Ausnahme zu konfigurieren, installieren Sie die mic-exception YAML.
- Sie können die angepasste Ressourcendefinition (CRD) AzurePodIdentityException so konfigurieren, dass Anfragen an den IMDS-Endpunkt, die von einem Pod stammen, der mit den in der CRD definierten Bezeichnungen übereinstimmt, ohne Verarbeitung in NMI als Proxy behandelt werden. Schließen Sie die Systempods mit der Bezeichnung
- Die REGIONEN USDOD Central, USDOD East und USGov Iowa in Azure US Government Cloud unterstützen das Erstellen eines Clusters mit einer vom Benutzer zugewiesenen verwalteten Identität nicht.
Überlegungen zur Aktualisierung von Clustern
Berücksichtigen Sie beim Aktualisieren eines Clusters die folgenden Informationen:
- Eine Aktualisierung funktioniert nur, wenn ein VHD-Update verwendet werden kann. Wenn Sie die neueste VHD ausführen, müssen Sie warten, bis die nächste VHD verfügbar wird, um die Aktualisierung vorzunehmen.
- Die Azure CLI stellt sicher, dass die Berechtigung Ihres Add-Ons nach der Migration ordnungsgemäß festgelegt ist. Wenn Sie die Azure CLI nicht zum Ausführen des Migrationsvorgangs verwenden, müssen Sie die Berechtigung der Add-On-Identität selbst behandeln. Ein Beispiel für die Verwendung einer Azure Resource Manager (ARM)-Vorlage finden Sie unter Azure-Rollen mit ARM-Vorlagen zuweisen.
- Wenn Ihr Cluster
--attach-acrzum Abrufen von Bildern aus Azure Container Registry (ACR) verwendet hat, müssen Sie den Befehlaz aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>ausführen, nachdem Sie ihren Cluster aktualisiert haben, damit das neu erstellte Kubelet, das für verwaltete Identität verwendet wird, die Berechtigung zum Abrufen von ACR abrufen kann. Andernfalls können Sie nach der Aktualisierung keinen Pull aus ACR ausführen.
Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
Wenn Sie noch nicht über eine Ressource der benutzerseitig zugewiesenen verwalteten Identität verfügen, erstellen Sie eine mithilfe des Befehls az identity create.
az identity create \
--name <identity-name> \
--resource-group <resource-group-name>
Ihre Ausgabe sollte in etwa wie die folgende Beispielausgabe aussehen:
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>",
"location": "<location>",
"name": "<identity-name>",
"principalId": "<principal-id>",
"resourceGroup": "<resource-group-name>",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Abrufen der Prinzipal-ID der benutzerseitig zugewiesenen verwalteten Identität
Rufen Sie die Principal-ID der vom Benutzer zugewiesenen verwalteten Identität mithilfe des az identity show Befehls ab.
CLIENT_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query principalId \
--output tsv)
Abrufen der Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität
Rufen Sie die Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität mithilfe des az identity show Befehls ab.
RESOURCE_ID=$(az identity show \
--name <identity-name> \
--resource-group <resource-group-name> \
--query id \
--output tsv)
Aktivieren einer vom Benutzer zugewiesenen verwalteten Identität in einem neuen AKS-Cluster
Erstellen Sie einen AKS-Cluster mit einer vom Benutzer zugewiesenen verwalteten Identität mithilfe des az aks create Befehls und des Parameters, der --assign-identity auf die Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität festgelegt ist.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--network-plugin azure \
--vnet-subnet-id <vnet-subnet-id> \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--assign-identity $RESOURCE_ID \
--generate-ssh-keys
Aktualisieren eines vorhandenen Clusters zur Verwendung einer benutzerseitig zugewiesenen verwalteten Identität
Um einen vorhandenen Cluster zu aktualisieren, sodass eine vom Benutzer zugewiesene verwaltete Identität verwendet wird, nutzen Sie den az aks update-Befehl und setzen Sie den Parameter --assign-identity auf die Ressourcen-ID der vom Benutzer zugewiesenen verwalteten Identität fest.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
Die Ausgabe bei einer erfolgreichen Clusteraktualisierung zur Verwendung einer benutzerseitig zugewiesenen verwalteten Identität sollte der folgenden Beispielausgabe ähneln:
...
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
...
Nachdem Sie den Cluster so aktualisiert haben, dass eine vom Benutzer zugewiesene verwaltete Identität anstelle eines Dienstprinzipals verwendet wird, verwenden die Steuerungsebene und die Pods die vom Benutzer zugewiesene verwaltete Identität für die Autorisierung, wenn sie auf andere Dienste in Azure zugreifen. Kubelet verwendet weiterhin einen Dienstprinzipal, bis Sie auch den Knotenpool aktualisieren. Ein Upgrade des Knotenpools verursacht Ausfallzeiten für Ihren AKS-Cluster, da die Knoten in den Knotenpools abgeriegelt, entleert und neu abgebildet werden. Sie können den Befehl in Ihren Knoten verwenden, um auf eine vom Benutzer zugewiesene verwaltete Identität zu aktualisieren.
az aks nodepool upgrade \
--resource-group <resource-group-name> \
--cluster-name <aks-cluster-name> \
--name <node-pool-name> \
--node-image-only
Hinweis
Die Migration einer verwalteten Identität für die Steuerungsebene von systemseitig zu benutzerseitig zugewiesen führt nicht zu Ausfallzeiten für Steuerungsebene und Agentpools. Die Komponenten der Steuerungsebene nutzen weiterhin die alte, vom System zugewiesene Identität für bis zu mehrere Stunden bis zur nächsten Token-Aktualisierung.
Zuweisen einer Azure RBAC-Rolle an die verwaltete Identität, die vom Benutzer zugewiesen wurde
Fügen Sie mithilfe des az role assignment create Befehls eine Rollenzuweisung für die vom Benutzer zugewiesene verwaltete Identität hinzu. Im folgenden Beispiel wird der Rolle Key Vault Secrets User der vom Benutzer zugewiesenen verwalteten Identität zugewiesen, um ihm Berechtigungen für den Zugriff auf geheime Schlüssel in einem key vault zu gewähren. Die Rollenzuweisung ist auf die Key Vault-Resource beschränkt.
az role assignment create \
--assignee <client-id> \
--role "Key Vault Secrets User" \
--scope "<key-vault-resource-id>"
Hinweis
Es kann bis zu 60 Minuten dauern, bis die Berechtigungen, die der verwalteten Identität Ihres Clusters gewährt wurden, verteilt sind.
Erstellen der Terraform-Konfigurationsdatei
Terraform-Konfigurationsdateien definieren die Infrastruktur, die Terraform erstellt und verwaltet.
Erstellen Sie eine Datei mit dem Namen
main.tf, und fügen Sie den folgenden Code hinzu, um die Terraform-Version zu definieren und den Azure Anbieter anzugeben:terraform { required_version = ">= 1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} }Fügen Sie dem
main.tfden folgenden Code hinzu, um eine Azure Ressourcengruppe zu erstellen. Sie können den Namen und den Speicherort der Ressourcengruppe nach Bedarf ändern.resource "azurerm_resource_group" "example" { name = "aks-rg" location = "East US" }
Erstellen eines AKS-Clusters mit einer vom Benutzer zugewiesenen verwalteten Identität mithilfe von Terraform
Fügen Sie den folgenden Code hinzu, um eine vom Benutzer zugewiesene verwaltete Identität und einen AKS-Cluster zu main.tf erstellen, der die Identität verwendet:
resource "azurerm_user_assigned_identity" "uai" {
name = "aks-user-identity"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
}
resource "azurerm_kubernetes_cluster" "user_assigned" {
name = "aks-user"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "aksuser"
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.uai.id]
}
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_DS2_v2"
}
}
Hinzufügen einer Rollenzuweisung für eine vom Benutzer zugewiesene verwaltete Identität mithilfe von Terraform
Fügen Sie den folgenden Code zu main.tf hinzu, um eine Rollenzuweisung für die benutzerdefinierte verwaltete Identität zu erstellen. In diesem Beispiel wird die Rolle Key Vault Secrets User der vom Benutzer zugewiesenen verwalteten Identität zugewiesen, um ihm Berechtigungen für den Zugriff auf geheime Schlüssel in einem key vault zu gewähren. Die Rollenzuweisung ist auf die Key Vault-Resource beschränkt.
resource "azurerm_role_assignment" "user_assigned_key_vault_secrets_user" {
scope = azurerm_resource_group.example.id
role_definition_name = "Key Vault Secrets User"
principal_id = azurerm_user_assigned_identity.uai.principal_id
}
Initialisieren Sie Terraform
Initialisieren Sie Terraform im Verzeichnis, das Ihre main.tf Datei enthält, mithilfe des terraform init Befehls. Dieser Befehl lädt den Azure Anbieter herunter, der zum Verwalten von Azure Ressourcen mit Terraform erforderlich ist.
terraform init
Terraform-Ausführungsplan erstellen
Erstellen Sie mit dem Befehl „terraform plan“ einen Terraform-Ausführungsplan. Dieser Befehl zeigt Ihnen die Ressourcen, die Terraform in Ihrem Azure-Abonnement erstellen oder ändern wird.
terraform plan
Terraform-Konfiguration anwenden
Wenden Sie nach der Überprüfung und Bestätigung des Ausführungsplans die Terraform-Konfiguration mit dem terraform apply Befehl an. Dieser Befehl erstellt oder ändert die ressourcen, die in Ihrer main.tf-Datei in Ihrem Azure-Abonnement definiert sind.
terraform apply
Überprüfen Sie die Terraform-Bereitstellung
Nachdem Sie die Terraform-Konfiguration angewendet haben, können Sie die Bereitstellung mithilfe des Befehls [az aks show][az-aks-show] mit dem Parameter --query überprüfen, um die Ausgabe zu filtern und die Identitätsinformationen anzuzeigen. Beispiel:
az aks show \
--name <cluster-name> \
--resource-group <resource-group> \
--query identity.type \
--output tsv
Verwandte Inhalte
Weitere Informationen zu verwalteten Identitäten in AKS finden Sie in den folgenden Artikeln:
- Overview der verwalteten Identitäten in Azure Kubernetes Service (AKS)
- Verwenden einer vom System zugewiesenen verwalteten Identität in AKS
- Verwenden einer bereits erstellten verwalteten Kubelet-Identität in AKS
- Verwenden Sie kubelogin, um Benutzer im Azure Kubernetes Service (AKS) zu authentifizieren