Felügyelt identitás használata Azure Kubernetes Service

A Azure Kubernetes Service -fürtökhöz identitás szükséges az Olyan Azure-erőforrások eléréséhez, mint a terheléselosztók és a felügyelt lemezek. Ez az identitás lehet felügyelt identitás vagy szolgáltatásnév. Alapértelmezés szerint az AKS-fürt létrehozásakor automatikusan létrejön egy rendszer által hozzárendelt felügyelt identitás. Az identitást az Azure platform kezeli, és nem szükséges titkos kulcsokat kiépítenie vagy elforgatnia. Az Azure AD felügyelt identitásairól további információt az Azure-erőforrások felügyelt identitásai című témakörben talál.

Szolgáltatásnév használatához létre kell hoznia egyet, mivel az AKS nem hoz létre automatikusan egyet. A szolgáltatásnevet használó fürtök végül lejárnak, és a szolgáltatásnevet meg kell újítani a fürt működésének fenntartásához. A szolgáltatásnevek kezelése összetettebbé teszi a szolgáltatást, így egyszerűbb a felügyelt identitások használata. Ugyanezek az engedélykövetelmények vonatkoznak a szolgáltatásnevekre és a felügyelt identitásokra is.

A felügyelt identitások lényegében a szolgáltatásnevek burkolói, és egyszerűbbé teszik a felügyeletüket. A felügyelt identitások tanúsítványalapú hitelesítést használnak, és minden felügyelt identitás hitelesítő adatai 90 napos lejárattal rendelkeznek, és 45 nap elteltével lesznek összesítve. Az AKS rendszer által hozzárendelt és felhasználó által hozzárendelt felügyelt identitástípusokat is használ, és ezek az identitások nem módosíthatók.

Előfeltételek

Az Azure CLI 2.23.0-s vagy újabb verziója. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Korlátozások

  • A bérlők nem helyezhetnek át vagy migrálnak egy felügyelt identitással kompatibilis fürtöt.
  • Ha a fürt engedélyezve van aad-pod-identity , Node-Managed Identity (NMI) podok módosítják a csomópontok iptable-jait, hogy elfogják az Azure-példány metaadatainak végpontjához intézett hívásokat. Ez a konfiguráció azt jelenti, hogy a metaadat-végpontra irányuló kéréseket az NMI akkor is elfogja, ha a pod nem használja aad-pod-identity. Az AzurePodIdentityException CRD konfigurálható úgy, hogy tájékoztassa aad-pod-identity arról, hogy a CRD-ben definiált címkéknek megfelelő podból származó metaadat-végpontra irányuló kéréseket az NMI-ben történő feldolgozás nélkül kell átvenni. Az AzurePodIdentityException CRD konfigurálásával ki kell zárni a kube-system névtérben aad-pod-identity címkével ellátott kubernetes.azure.com/managedby: aks rendszer podokat. További információ: Az aad-pod-identity letiltása egy adott podra vagy alkalmazásra vonatkozóan. A kivétel konfigurálásához telepítse a mikrofonkivétel YAML-fájlját.

A felügyelt identitások összegzése

Az AKS számos felügyelt identitást használ a beépített szolgáltatásokhoz és bővítményekhez.

Identitás Name Használati eset Alapértelmezett engedélyek Saját identitás használata
Vezérlősík AKS-fürt neve Az AKS vezérlősík-összetevői használják a fürterőforrások kezelésére, beleértve a bejövő terheléselosztókat és az AKS által felügyelt nyilvános IP-címeket, a fürt automatikus skálázását, az Azure Disk & File CSI-illesztőprogramokat Node-erőforráscsoport közreműködői szerepköre Támogatott
Kubelet AKS-fürt név-ügynökkészlete Hitelesítés Azure Container Registry (ACR) használatával NA (kubernetes v1.15+) Támogatott
Összead AzureNPM Nincs szükség identitásra NA No
Összead Az AzureCNI hálózatmonitorozása Nincs szükség identitásra NA No
Összead azure-policy (gatekeeper) Nincs szükség identitásra NA No
Összead azure-policy Nincs szükség identitásra NA No
Összead Calico Nincs szükség identitásra NA No
Összead Irányítópult Nincs szükség identitásra NA No
Összead HTTPApplicationRouting A szükséges hálózati erőforrások kezelése Olvasói szerepkör a csomóponti erőforráscsoporthoz, közreműködői szerepkör a DNS-zónához No
Összead Bejövő application gateway A szükséges hálózati erőforrások kezelése Csomópont-erőforráscsoport közreműködői szerepköre No
Összead omsagent AKS-metrikák azure monitorba küldéséhez használatos Monitorozási metrikák Publisher szerepkör No
Összead Virtual-Node (ACIConnector) A Azure Container Instances (ACI) szükséges hálózati erőforrásainak kezelése Csomópont-erőforráscsoport közreműködői szerepköre No
OSS-projekt aad-pod-identity Lehetővé teszi, hogy az alkalmazások biztonságosan hozzáférjenek a felhőbeli erőforrásokhoz a Microsoft Azure Active Directory (AAD) használatával NA Steps to grant permission at https://github.com/Azure/aad-pod-identity#role-assignment.

AKS-fürt létrehozása felügyelt identitással

Megjegyzés

Az AKS létrehoz egy rendszer által hozzárendelt kubelet-identitást a Node-erőforráscsoportban, ha nem adja meg a saját kubelet által felügyelt identitását.

AKS-fürtöt a következő CLI-parancs futtatásával hozhat létre rendszer által hozzárendelt felügyelt identitással.

Először hozzon létre egy Azure-erőforráscsoportot:

# Create an Azure resource group
az group create --name myResourceGroup --location westus2

Ezután hozzon létre egy AKS-fürtöt:

az aks create -g myResourceGroup -n myManagedCluster --enable-managed-identity

A fürt létrehozása után üzembe helyezheti az alkalmazás számítási feladatait az új fürtön, és ugyanúgy használhatja, mint a szolgáltatásnév-alapú AKS-fürtöket.

Végül kérje le a fürt eléréséhez szükséges hitelesítő adatokat:

az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

AKS-fürt frissítése felügyelt identitás használatára

Ha frissíteni szeretne egy AKS-fürtöt, amely jelenleg szolgáltatásnevek használatával dolgozik a rendszer által hozzárendelt felügyelt identitással, futtassa a következő CLI-parancsot.

az aks update -g <RGName> -n <AKSName> --enable-managed-identity

Megjegyzés

A frissítés csak akkor működik, ha tényleges VHD-frissítést kell használni. Ha a legújabb VHD-t futtatja, meg kell várnia, amíg a következő virtuális merevlemez elérhetővé válik a frissítés végrehajtásához.

Megjegyzés

A frissítés után a fürt vezérlősíkja és a bővítmény podjai a felügyelt identitást használják, de a Kubelet szolgáltatásnevet fog használni, amíg nem frissíti az ügynökkészletet. Végezzen el egy az aks nodepool upgrade --node-image-only csomópontot a felügyelt identitás frissítésének befejezéséhez.

Ha a fürt a Azure Container Registry rendszerképének lekérésére használta--attach-acr, a fürt felügyelt identitásra való frissítése után újra kell futtatniaaz aks update --attach-acr <ACR Resource ID>, hogy a felügyelt identitáshoz használt újonnan létrehozott kubelet engedélyt kapjon az ACR-ből való lekérésre. Ellenkező esetben a frissítés után nem tud lekérni az ACR-ből.

Az Azure CLI gondoskodik arról, hogy a bővítmény engedélye helyesen legyen beállítva az áttelepítés után. Ha nem az Azure CLI-t használja az áttelepítési művelet végrehajtásához, akkor saját maga kell kezelnie a bővítményidentitás engedélyét. Íme egy példa egy Azure Resource Manager-sablon használatával.

Figyelmeztetés

A csomópontkészlet frissítése leállást okoz az AKS-fürt számára, mivel a csomópontkészletekben lévő csomópontok kordonosodnak/ürítenek, majd újraépülnek.

Szerepkör-hozzárendelés hozzáadása vezérlősík-identitáshoz

Ha saját virtuális hálózatot, csatlakoztatott Azure-lemezt, statikus IP-címet, útvonaltáblát vagy felhasználó által hozzárendelt kubelet-identitást hoz létre és használ, ahol az erőforrások kívül esnek a feldolgozó csomópont erőforráscsoportján, a parancssori felület automatikusan hozzáadja a szerepkör-hozzárendelést. Ha ARM-sablont vagy más módszert használ, a szerepkör-hozzárendeléshez a fürt által felügyelt identitás egyszerű azonosítóját kell használnia.

Megjegyzés

Ha nem a parancssori felületet használja, hanem saját virtuális hálózatot, csatlakoztatott Azure-lemezt, statikus IP-címet, útvonaltáblát vagy felhasználó által hozzárendelt kubelet-identitást használ, amely kívül esik a feldolgozó csomópont erőforráscsoportján, ajánlott felhasználó által hozzárendelt vezérlősík-identitást használni. A rendszer által hozzárendelt vezérlősík-identitás esetében nem tudjuk lekérni az identitásazonosítót a fürt létrehozása előtt, ami késlelteti a szerepkör-hozzárendelés érvénybe lépését.

A vezérlősík identitásának egyszerű azonosítójának lekérése

A meglévő identitás egyszerű azonosítóját a következő parancs futtatásával keresheti meg:

az identity show --ids <identity-resource-id>

A kimenetnek a következőhöz hasonlónak kell lennie:

{
  "clientId": "<client-id>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
  "location": "eastus",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Szerepkör-hozzárendelés hozzáadása

A virtuális hálózat, a csatolt Azure-lemez, a statikus IP-cím és az útvonaltábla esetében, amelyek kívül esnek az alapértelmezett feldolgozó csomópont erőforráscsoportján, hozzá kell rendelnie a szerepkört az Contributor egyéni erőforráscsoporthoz.

az role assignment create --assignee <control-plane-identity-principal-id> --role "Contributor" --scope "<custom-resource-group-resource-id>"

Példa:

az role assignment create --assignee 22222222-2222-2222-2222-222222222222 --role "Contributor" --scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/custom-resource-group"

A felhasználó által hozzárendelt kubelet-identitáshoz, amely kívül esik az alapértelmezett ébresztőcsomópont erőforráscsoportján, hozzá kell rendelnie a Managed Identity Operatorkubelet-identitást.

az role assignment create --assignee <control-plane-identity-principal-id> --role "Managed Identity Operator" --scope "<kubelet-identity-resource-id>"

Példa:

az role assignment create --assignee 22222222-2222-2222-2222-222222222222 --role "Managed Identity Operator" --scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"

Megjegyzés

A fürt Azure által használt felügyelt identitásához megadott engedély feltöltése akár 60 percet is igénybe vehet.

Saját vezérlősík által felügyelt identitás használata

Az egyéni vezérlősík felügyelt identitása lehetővé teszi a hozzáférés megadását a meglévő identitáshoz a fürt létrehozása előtt. Ez a funkció olyan forgatókönyveket tesz lehetővé, mint az egyéni virtuális hálózat vagy az UDR kimenő típusa egy előre létrehozott felügyelt identitással.

Megjegyzés

A középső USDOD, a keleti USDOD és az USA-beli USGov Iowa-régiók jelenleg nem támogatottak az Azure US Government-felhőben.

Az AKS létrehoz egy rendszer által hozzárendelt kubelet-identitást a Node-erőforráscsoportban, ha nem adja meg a saját kubelet által felügyelt identitását.

Ha nem rendelkezik felügyelt identitással, hozzon létre egyet az az identity parancs futtatásával.

az identity create --name myIdentity --resource-group myResourceGroup

A kimenetnek a következőhöz hasonlónak kell lennie:

{                                  
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity", 
  "location": "westus2",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Futtassa a következő parancsot egy meglévő identitással rendelkező fürt létrehozásához:

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --enable-managed-identity \
    --assign-identity <identity-resource-id>

A saját felügyelt identitást használó sikeres fürtlétrehozásnak az alábbi userAssignedIdentities profiladatokhoz kell hasonlítania:

 "identity": {
   "principalId": null,
   "tenantId": null,
   "type": "UserAssigned",
   "userAssignedIdentities": {
     "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
       "clientId": "<client-id>",
       "principalId": "<principal-id>"
     }
   }
 },

Előre létrehozott kubelet-felügyelt identitás használata

A Kubelet-identitások a fürt létrehozása előtt engedélyezik a hozzáférést a meglévő identitáshoz. Ez a funkció olyan forgatókönyveket tesz lehetővé, mint például az ACR-hez való csatlakozás egy előre létrehozott felügyelt identitással.

Előfeltételek

  • Az Azure CLI 2.26.0-s vagy újabb verziója telepítve van. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Korlátozások

  • Csak felhasználó által hozzárendelt felügyelt fürttel működik.
  • Az Azure China 21Vianet kelet- és észak-kínai régiói jelenleg nem támogatottak.

Felhasználó által hozzárendelt felügyelt identitások létrehozása

Ha nem rendelkezik vezérlősík által felügyelt identitással, az alábbi az identity create parancs futtatásával hozhat létre:

az identity create --name myIdentity --resource-group myResourceGroup

A kimenetnek a következőhöz hasonlónak kell lennie:

{                                  
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity", 
  "location": "westus2",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Ha nem rendelkezik kubelet által felügyelt identitással, az alábbi az identity create parancs futtatásával hozhat létre egyet:

az identity create --name myKubeletIdentity --resource-group myResourceGroup

A kimenetnek a következőhöz hasonlónak kell lennie:

{
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity", 
  "location": "westus2",
  "name": "myKubeletIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Fürt létrehozása felhasználó által hozzárendelt Kubelet-identitással

Most az alábbi paranccsal hozhatja létre az AKS-fürtöt a meglévő identitásokkal. Adja meg a vezérlősík identitásának erőforrás-azonosítóját a assign-identity kubelet által felügyelt identitással a következőn keresztül assign-kubelet-identity:

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --enable-managed-identity \
    --assign-identity <identity-resource-id> \
    --assign-kubelet-identity <kubelet-identity-resource-id>

A kubelet által felügyelt identitással végzett sikeres AKS-fürtlétrehozásnak az alábbi kimenethez kell hasonlítania:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

Meglévő fürt frissítése Kubelet-identitással

Kubelet-identitás frissítése meglévő AKS-fürtön a meglévő identitásokkal.

Figyelmeztetés

A Kubelet felügyelt identitásának frissítése frissíti a Nodepoolt, ami állásidőt okoz az AKS-fürt számára, mivel a csomópontkészletekben lévő csomópontok kordonozva/ürítve lesznek, majd újraépülnek.

Megjegyzés

Ha a fürt a Azure Container Registry rendszerképének lekérésére használta--attach-acr, a fürt kubelet-identitásának frissítése után újra kell futtatniaaz aks update --attach-acr <ACR Resource ID>, hogy a felügyelt identitáshoz használt újonnan létrehozott kubelet engedélyt kapjon az ACR-ből való lekérésre. Ellenkező esetben a frissítés után nem tud lekérni az ACR-ből.

Győződjön meg arról, hogy a PARANCSSOR 2.37.0-s vagy újabb verziója

# Check the version of Azure CLI modules 
az version

# Upgrade the version to make sure it is 2.37.0 or later
az upgrade

Az AKS-fürt aktuális vezérlősík-identitásának lekérése

Győződjön meg arról, hogy az AKS-fürt felhasználó által hozzárendelt vezérlősík-identitást használ a következő CLI-paranccsal:

az aks show -g <RGName> -n <ClusterName> --query "servicePrincipalProfile"

Ha a fürt felügyelt identitást használ, a kimenet msi értékkel jelenik megclientId. A szolgáltatásnevet használó fürtök objektumazonosítót mutatnak. Például:

{
  "clientId": "msi"
}

Miután ellenőrizte, hogy a fürt felügyelt identitást használ-e, az alábbi parancs futtatásával megtalálhatja a vezérlősík identitásának erőforrás-azonosítóját:

az aks show -g <RGName> -n <ClusterName> --query "identity"

Felhasználó által hozzárendelt vezérlősík-identitás esetén a kimenetnek a következőképpen kell kinéznie:

{
  "principalId": null,
  "tenantId": null,
  "type": "UserAssigned",
  "userAssignedIdentities": <identity-resource-id>
      "clientId": "<client-id>",
      "principalId": "<principal-id>"
},

A fürt frissítése Kubelet-identitással

Ha nem rendelkezik kubelet által felügyelt identitással, az alábbi az identity create parancs futtatásával hozhat létre egyet:

az identity create --name myKubeletIdentity --resource-group myResourceGroup

A kimenetnek a következőhöz hasonlónak kell lennie:

{
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity", 
  "location": "westus2",
  "name": "myKubeletIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Most az alábbi paranccsal frissítheti a fürtöt a meglévő identitásokkal. Adja meg a vezérlősík identitásának erőforrás-azonosítóját a assign-identity kubelet által felügyelt identitással a következőn keresztül assign-kubelet-identity:

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

A kubelet által felügyelt identitást használó sikeres fürtfrissítés a következő kimenetet tartalmazza:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

Következő lépések

Felügyelt identitást engedélyező fürt létrehozása Azure Resource Manager-sablonokkal.