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 de Overview 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 opdracht.

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

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

minimale vereisten voor Azure CLI versie

Beperkingen

  • Zodra u een cluster met een beheerde identiteit hebt gemaakt, kunt u niet terugkeren naar het gebruik van een service-principal.

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

  • Als voor het cluster de door pods beheerde Microsoft Entra-identiteit (aad-pod-identity) is ingeschakeld, wijzigen de Node-Managed Identity-pods de iptables van de knooppunten om aanroepen naar het Azure Instance Metadata (IMDS)-eindpunt te onderscheppen. 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 .

    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 label in in de namespace door de AzurePodIdentityException CRD te configureren. Voor meer informatie, zie Microsoft Entra door pods beheerde identiteiten gebruiken in Azure Kubernetes Service.

    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 - centraal, USDOD - oost en USGov Iowa in 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 Microsoft Defender voor Cloud functies worden officieel buiten gebruik gesteld in de Azure in de regio China op 18 augustus 2026. Vanwege deze aanstaande buitengebruikstelling kunnen Azure in China-klanten geen nieuwe abonnementen meer onboarden voor de service. Een nieuw abonnement is een abonnement dat nog niet is toegevoegd aan de Microsoft Defender voor Cloud-service vóór 18 augustus 2025, de datum van de aankondiging van de buitengebruikstelling. Zie Aankondiging van de buitengebruikstelling van Microsoft Defender voor Cloud in Microsoft Azure beheerd door 21Vianet voor meer informatie over de buitengebruikstelling.

    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 beschikbaar is om te gebruiken. 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 hoe je een Azure Resource Manager-sjabloon (ARM) kunt gebruiken.
  • Als uw cluster --attach-acr gebruikt om afbeeldingen op te halen uit Azure Container Registry (ACR), moet u de opdracht az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --attach-acr <acr-resource-id> uitvoeren nadat u het cluster hebt bijgewerkt, zodat de zojuist gemaakte kubelet, voor beheerde identiteit gebruikt, de machtiging krijgt om afbeeldingen uit ACR te halen. Anders kunt u na de update niet meer vanuit ACR ophalen.

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 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 opdracht met de 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 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 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 opdracht az role assignment create.

    Voor een VNet, gekoppeld Azure schijf, statisch IP-adres of routetabel buiten de standaardresourcegroep voor werkknooppunten, moet u de rol Network Contributor 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 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 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 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 opdracht.

    In het volgende voorbeeld wordt de rol Key Vault Secrets User toegewezen aan de door de gebruiker toegewezen beheerde identiteit om deze machtigingen te verlenen voor toegang tot geheimen in een key vault. 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 opdracht. Neem de 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 opdracht. Neem de 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 van systeemtoegewezen naar gebruikers-toegewezen voor het besturingsvlak resulteert niet in downtime voor het besturingsvlak en de 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 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 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 kubelet-beheerde identiteit

  • Wijs de rol toe aan de beheerde kubelet-identiteit met behulp van de 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 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 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 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 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 opdracht. Geef de resource-id op van de door de gebruiker toegewezen beheerde identiteit voor het besturingsvlak voor het argument. Geef de resource-id op van de beheerde kubelet-identiteit voor het 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 opdracht en vraag naar de eigenschap.

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

Volgende stappen