Delen via


Een beheerde identiteit gebruiken in Azure Kubernetes Service (AKS)

Dit artikel bevat stapsgewijze instructies voor het inschakelen en gebruiken van een door het systeem toegewezen, door de gebruiker toegewezen of vooraf gemaakte door kubelet beheerde identiteit in Azure Kubernetes Service (AKS).

Vereisten voor beheerde AKS-identiteit

  • Lees het overzicht van beheerde identiteiten in Azure Kubernetes Service (AKS) om inzicht te krijgen in de verschillende typen beheerde identiteiten die beschikbaar zijn in AKS en hoe u deze kunt gebruiken om veilig toegang te krijgen tot Azure-resources.

  • Voordat u de voorbeelden in dit artikel uitvoert, stelt u uw abonnement in als het huidige actieve abonnement met behulp van de az account set opdracht.

    az account set --subscription <subscription-id>
    
  • Maak een Azure-resourcegroep als u er nog geen hebt door de opdracht aan te az group create roepen.

    az group create \
        --name <resource-group-name> \
        --location <location>
    

Minimale vereisten voor Azure CLI-versie

Beperkingen

  • Het verplaatsen of migreren van een cluster met beheerde identiteit naar een andere tenant wordt niet ondersteund.

  • Als voor het cluster een door Microsoft Entra beheerde identiteit (aad-pod-identity) is ingeschakeld, wijzigen NMI-pods (Node Managed Identity) de iptables van de knooppunten om aanroepen te onderscheppen naar het EINDPUNT van Azure Instance Metadata (IMDS). Deze configuratie betekent dat elke aanvraag die is ingediend bij het IMDS-eindpunt wordt onderschept door NMI, zelfs als een bepaalde pod niet wordt gebruikt aad-pod-identity.

    De aangepaste resourcedefinitie van AzurePodIdentityException (CRD) kan worden geconfigureerd om op te geven dat aanvragen voor het IMDS-eindpunt dat afkomstig is van een pod die overeenkomt met labels die zijn gedefinieerd in de CRD, moeten worden geproxied zonder dat er verwerking in NMI wordt uitgevoerd. Sluit de systeempods uit met het kubernetes.azure.com/managedby: aks label in in de aad-pod-identity namespace door de AzurePodIdentityException CRD te configureren. Zie Microsoft Entra door pods beheerde identiteiten gebruiken in Azure Kubernetes Service voor meer informatie.

    Als u een uitzondering wilt configureren, installeert u de mic-exception YAML.

  • AKS biedt geen ondersteuning voor het gebruik van een door het systeem toegewezen beheerde identiteit wanneer u een aangepaste privé-DNS-zone gebruikt.

  • De regio's USDOD Central, USDOD East en USGov Iowa in de Azure US Government-cloud bieden geen ondersteuning voor het maken van een cluster met een door de gebruiker toegewezen beheerde identiteit.

  • Een vooraf gemaakte beheerde kubelet-identiteit moet een door de gebruiker toegewezen beheerde identiteit zijn.

  • De regio's China - oost en China - noord in Microsoft Azure beheerd door 21Vianet worden niet ondersteund.

    Belangrijk

    Alle functies van Microsoft Defender voor Cloud worden officieel buiten gebruik gesteld in de regio Azure in China op 18 augustus 2026. Vanwege deze aanstaande buitengebruikstelling kunnen klanten van Azure in China geen nieuwe abonnementen meer onboarden voor de service. Een nieuw abonnement is een abonnement dat nog niet is toegevoegd aan de Microsoft Defender for Cloud-service vóór 18 augustus 2025, de datum van de aankondiging van de buitengebruikstelling. Voor meer informatie over de buitengebruikstelling, zie Aankondiging van de beëindiging van Microsoft Defender voor Cloud in Microsoft Azure beheerd door 21Vianet.

    Klanten moeten samenwerken met hun accountvertegenwoordigers voor Microsoft Azure beheerd door 21Vianet om de impact van deze buitengebruikstelling op hun eigen activiteiten te beoordelen.

Overwegingen voor cluster bijwerken

Houd rekening met de volgende informatie wanneer u een cluster bijwerkt:

  • Een update werkt alleen als er een VHD-update wordt gebruikt. Als u de nieuwste VHD uitvoert, moet u wachten tot de volgende VHD beschikbaar is om de update uit te voeren.
  • De Azure CLI zorgt ervoor dat de machtiging van uw invoegtoepassing correct is ingesteld na de migratie. Als u de Azure CLI niet gebruikt om de migratiebewerking uit te voeren, moet u de machtiging van de invoegtoepassingsidentiteit zelf afhandelen. Zie Azure-rollen toewijzen met behulp van ARM-sjablonen voor een voorbeeld van een Azure Resource Manager-sjabloon (ARM).
  • Als uw cluster gebruikmaakte van --attach-acr om installatiekopieën uit Azure Container Registry (ACR) te halen, moet u de az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id>-opdracht uitvoeren nadat u het cluster hebt bijgewerkt. Hierdoor krijgt de nieuw aangemaakte kubelet voor beheerde identiteiten toestemming om uit ACR te trekken. Anders kunt u na de update niet meer ophalen uit ACR.

Een door het systeem toegewezen beheerde identiteit inschakelen op een AKS-cluster

Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuw AKS-cluster

Een door het systeem toegewezen beheerde identiteit wordt standaard ingeschakeld wanneer u een nieuw AKS-cluster maakt.

  • Maak een AKS-cluster met behulp van de az aks create opdracht.

    az aks create \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name> \
        --generate-ssh-keys
    

Een bestaand AKS-cluster bijwerken om een door het systeem toegewezen beheerde identiteit te gebruiken

  • Werk een bestaand AKS-cluster van een service-principal bij naar een door het systeem toegewezen beheerde identiteit met behulp van de az aks update opdracht met de --enable-managed-identity parameter.

    az aks update \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name> \
        --enable-managed-identity
    

    Nadat u het cluster hebt bijgewerkt voor het gebruik van een door het systeem toegewezen beheerde identiteit in plaats van een service-principal, gebruiken de besturingsvlak en pods de door het systeem toegewezen beheerde identiteit voor autorisatie bij het openen van andere services in Azure. Kubelet blijft een service-principal gebruiken totdat u ook uw agentpool bijwerkt. U kunt de az aks nodepool upgrade --resource-group <resource-group-name> --cluster-name <aks-cluster-name> --name <node-pool-name> --node-image-only opdracht op uw knooppunten gebruiken om bij te werken naar een beheerde identiteit. Een upgrade van een knooppuntgroep veroorzaakt downtime voor uw AKS-cluster, omdat de knooppunten in de knooppuntgroepen zijn ingesnoerd, leeggestroomd en opnieuw worden hersteld.

De principal-id van een door het systeem toegewezen beheerde identiteit ophalen

  • Haal de principal-id op voor de door het cluster toegewezen beheerde identiteit met behulp van de az aks show opdracht.

    CLIENT_ID=$(az aks show \
        --name <aks-cluster-name> \
        --resource-group <resource-group-name> \
        --query identity.principalId \
        --output tsv)
    

Een roltoewijzing toevoegen voor een door het systeem toegewezen beheerde identiteit

  • Wijs een Azure RBAC-rol toe aan de door het systeem toegewezen beheerde identiteit met behulp van de az role assignment create opdracht.

    Voor een VNet, gekoppelde Azure-schijf, statisch IP-adres of routetabel buiten de standaardresourcegroep voor werkknooppunten, moet u de Network Contributor rol toewijzen aan de aangepaste resourcegroep.

    In het volgende voorbeeld wordt de rol Netwerkbijdrager toegewezen aan de door het systeem toegewezen beheerde identiteit. De roltoewijzing is beperkt tot de resourcegroep die het VNet bevat.

    az role assignment create \
        --assignee <client-id> \
        --role "Network Contributor" \
        --scope <custom-resource-group-id>
    

    Notitie

    Het kan maximaal 60 minuten duren voordat de machtigingen die zijn verleend aan de beheerde identiteit van uw cluster, zijn doorgegeven.

Een door de gebruiker toegewezen beheerde identiteit maken

  • Als u nog geen door de gebruiker toegewezen beheerde identiteitsresource hebt, maakt u er een met behulp van de az identity create opdracht.

    az identity create \
        --name <identity-name> \
        --resource-group <resource-group-name>
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    {                                  
      "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"
    }
    

De principal-id van de door de gebruiker toegewezen beheerde identiteit ophalen

  • Haal de principal-id van de door de gebruiker toegewezen beheerde identiteit op met behulp van de az identity show opdracht.

    CLIENT_ID=$(az identity show \
        --name <identity-name> \
        --resource-group <resource-group-name> \
        --query principalId \
        --output tsv)
    

De resource-id van de door de gebruiker toegewezen beheerde identiteit ophalen

  • Haal de resource-id op van de door de gebruiker toegewezen beheerde identiteit met behulp van de az identity show opdracht.

    RESOURCE_ID=$(az identity show \
        --name <identity-name> \
        --resource-group <resource-group-name> \
        --query id \
        --output tsv)
    

Een Azure RBAC-rol toewijzen aan de door de gebruiker toegewezen beheerde identiteit

  • Voeg een roltoewijzing toe voor de door de gebruiker toegewezen beheerde identiteit met behulp van de az role assignment create opdracht.

    In het volgende voorbeeld wordt de rol Key Vault Secrets User toegewezen aan de beheerde identiteit die door de gebruiker is toegewezen, zodat deze toegang tot geheimen in een Key Vault kan krijgen. De roltoewijzing is gericht op de sleutelkluisresource:

    az role assignment create \
        --assignee <client-id> \
        --role "Key Vault Secrets User" \
        --scope "<keyvault-resource-id>"
    

    Notitie

    Het kan maximaal 60 minuten duren voordat de machtigingen die zijn verleend aan de beheerde identiteit van uw cluster, zijn doorgegeven.

Een door de gebruiker toegewezen beheerde identiteit inschakelen op een AKS-cluster

Een door de gebruiker toegewezen beheerde identiteit inschakelen op een nieuw AKS-cluster

  • Maak een AKS-cluster met de door de gebruiker toegewezen beheerde identiteit met behulp van de az aks create opdracht. Neem de --assign-identity parameter op en geef de resource-id door voor de door de gebruiker toegewezen beheerde identiteit:

    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
    

Een bestaand cluster bijwerken om een door de gebruiker toegewezen beheerde identiteit te gebruiken

  • Werk een bestaand cluster bij om een door de gebruiker toegewezen beheerde identiteit te gebruiken met behulp van de az aks update opdracht. Neem de --assign-identity parameter op en geef de resource-id door voor de door de gebruiker toegewezen beheerde identiteit:

    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --enable-managed-identity \
        --assign-identity $RESOURCE_ID
    

    De uitvoer voor een geslaagde clusterupdate voor het gebruik van een door de gebruiker toegewezen beheerde identiteit moet lijken op de volgende voorbeelduitvoer:

      "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>"
          }
        }
      },
    

    Notitie

    Het migreren van een beheerde identiteit voor het besturingsvlak van het systeem dat is toegewezen aan door de gebruiker toegewezen, leidt niet tot downtime voor besturingsvlak- en agentpools. Onderdelen van het besturingsvlak blijven gedurende maximaal enkele uren de oude door het systeem toegewezen identiteit behouden totdat het volgende token wordt vernieuwd.

Bepalen welk type beheerde identiteit een cluster gebruikt

  • Controleer met de az aks show opdracht welk type beheerde identiteit uw cluster gebruikt.

    az aks show \
        --name <aks-cluster-name> \
        --resource-group <resource-group-name> \
        --query identity.type \
        --output tsv       
    

    Als het cluster een beheerde identiteit gebruikt, is de waarde van de type-eigenschap SystemAssigned of UserAssigned.

    Als het cluster een service-principal gebruikt, is de waarde van de typeeigenschap null. Overweeg om uw cluster te upgraden om een beheerde identiteit te gebruiken.

Een beheerde kubelet-identiteit maken

  • Als u geen beheerde kubelet-identiteit hebt, maakt u er een met behulp van de az identity create opdracht.

    az identity create \
        --name <kubelet-identity-name> \
        --resource-group <resource-group-name>
    

    De uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

    {
      "clientId": "<client-id>",
      "clientSecretUrl": "<clientSecretUrl>",
      "id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>",
      "location": "<location>",
      "name": "<kubelet-identity-name>",
      "principalId": "<principal-id>",
      "resourceGroup": "<resource-group-name>",
      "tags": {},
      "tenantId": "<tenant-id>",
      "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
    }
    

Een RBAC-rol toewijzen aan de beheerde kubelet-identiteit

  • Wijs de acrpull rol toe aan de beheerde kubelet-identiteit met behulp van de az role assignment create opdracht.

    az role assignment create \
        --assignee <kubelet-client-id> \
        --role "acrpull" \
        --scope "<acr-registry-id>"
    

Een door Kubelet beheerde identiteit inschakelen op een AKS-cluster

Een door Kubelet beheerde identiteit inschakelen in een nieuw AKS-cluster

  • Maak een AKS-cluster met uw bestaande identiteiten met behulp van de az aks create opdracht.

    az aks create \
        --resource-group <resource-group-name> \
        --name <aks-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 <identity-resource-id> \
        --assign-kubelet-identity <kubelet-identity-resource-id> \
        --generate-ssh-keys
    

    Een geslaagd AKS-cluster maken met behulp van een beheerde kubelet-identiteit moet resulteren in uitvoer die vergelijkbaar is met de volgende:

      "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>"
          }
        }
      },
      "identityProfile": {
        "kubeletidentity": {
          "clientId": "<client-id>",
          "objectId": "<object-id>",
          "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>"
        }
      },
    

Een bestaand cluster bijwerken om een beheerde kubelet-identiteit te gebruiken

Als u een bestaand cluster wilt bijwerken om de beheerde kubelet-identiteit te gebruiken, moet u eerst de huidige beheerde identiteit voor uw AKS-cluster ophalen.

Waarschuwing

Voordat u de beheerde kubelet-identiteit bijwerkt en de knooppuntgroepen van uw AKS-cluster worden bijgewerkt, moet u ervoor zorgen dat u over de juiste beschikbaarheidsconfiguraties beschikt, zoals Pod-onderbrekingsbudgetten, om werkonderbrekingen te voorkomen. Voer deze update bij voorkeur uit tijdens een onderhoudsvenster.

  1. Controleer of uw AKS-cluster de door de gebruiker toegewezen beheerde identiteit gebruikt met behulp van de az aks show opdracht.

    az aks show \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name> \
        --query "servicePrincipalProfile"
    

    Als uw cluster een beheerde identiteit gebruikt, wordt de uitvoer weergegeven clientId met een waarde van msi. Een cluster met behulp van een service-principal toont een object-id. Voorbeeld:

    # The cluster is using a managed identity.
    {
      "clientId": "msi"
    }
    
  2. Nadat u hebt bevestigd dat uw cluster een beheerde identiteit gebruikt, zoekt u de resource-id van de beheerde identiteit met behulp van de az aks show opdracht.

    az aks show --resource-group <resource-group-name> \
        --name <aks-cluster-name> \
        --query "identity"
    

    Voor een door de gebruiker toegewezen beheerde identiteit moet uw uitvoer er ongeveer uitzien als in de volgende voorbeelduitvoer:

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": <identity-resource-id>
          "clientId": "<client-id>",
          "principalId": "<principal-id>"
    },
    
  3. Werk uw cluster bij met uw bestaande identiteiten met behulp van de az aks update opdracht. Geef de resource-id op van de door de gebruiker toegewezen beheerde identiteit voor het besturingsvlak voor het assign-identity argument. Geef de resource-id op van de beheerde kubelet-identiteit voor het assign-kubelet-identity argument.

    az aks update \
        --resource-group <resource-group-name> \
        --name <aks-cluster-name> \
        --enable-managed-identity \
        --assign-identity <identity-resource-id> \
        --assign-kubelet-identity <kubelet-identity-resource-id>
    

    De uitvoer voor een geslaagde clusterupdate met uw eigen beheerde kubelet-identiteit moet er ongeveer uitzien als in de volgende voorbeelduitvoer:

      "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>"
          }
        }
      },
      "identityProfile": {
        "kubeletidentity": {
          "clientId": "<client-id>",
          "objectId": "<object-id>",
          "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<kubelet-identity-name>"
        }
      },
    

De eigenschappen van de beheerde kubelet-identiteit ophalen

  • Haal de eigenschappen van de beheerde kubelet-identiteit op met de az aks show opdracht en vraag naar de identityProfile.kubeletidentity eigenschap.

    az aks show \
        --name <aks-cluster-name> \
        --resource-group <resource-group-name> \
        --query "identityProfile.kubeletidentity"
    

Volgende stappen