A Microsoft Entra ID integrálása az Azure Kubernetes Service-vel (AKS) az Azure CLI használatával (örökölt)

Figyelmeztetés

A jelen dokumentumban ismertetett funkció, a Microsoft Entra Integration (örökölt) 2023. június 1-jén elavult. Jelenleg nem hozhatók létre új fürtök a Microsoft Entra Integration (örökölt) használatával.

Az AKS új továbbfejlesztett , AKS által felügyelt Microsoft Entra-azonosítóval rendelkezik, amely nem igényli a kiszolgáló- vagy ügyfélalkalmazások kezelését. Ha migrálni szeretne, kövesse az itt található utasításokat.

Az Azure Kubernetes Service (AKS) konfigurálható úgy, hogy a Microsoft Entra ID-t használja a felhasználói hitelesítéshez. Ebben a konfigurációban microsoft Entra hitelesítési jogkivonat használatával bejelentkezhet egy AKS-fürtbe. A fürtüzemeltetők a Kubernetes szerepköralapú hozzáférés-vezérlését (Kubernetes RBAC) is konfigurálhatják a felhasználó identitása vagy címtárcsoport-tagsága alapján.

Ez a cikk bemutatja, hogyan hozhatja létre a szükséges Microsoft Entra-összetevőket, majd hogyan helyezhet üzembe egy Microsoft Entra id-kompatibilis fürtöt, és hogyan hozhat létre alapszintű Kubernetes-szerepkört az AKS-fürtben.

Korlátozások

  • A Microsoft Entra-azonosító csak Kubernetes RBAC-kompatibilis fürtön engedélyezhető.
  • A Microsoft Entra örökölt integrációja csak a fürt létrehozásakor engedélyezhető.

Mielőtt elkezdené

Telepítenie és konfigurálnia kell az Azure CLI 2.0.61-es vagy újabb verzióját. 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.

Nyissa meg a https://shell.azure.com Cloud Shellt a böngészőben.

A konzisztencia érdekében és a jelen cikkben szereplő parancsok futtatásához hozzon létre egy változót a kívánt AKS-fürt nevéhez. Az alábbi példa a myakscluster nevet használja:

aksname="myakscluster"

A Microsoft Entra-hitelesítés áttekintése

A Microsoft Entra-hitelesítés az OpenID-Csatlakozás rendelkező AKS-fürtök számára biztosított. Az OpenID Csatlakozás az OAuth 2.0 protokollra épülő identitásréteg. Az OpenID Csatlakozás az OpenID Csatlakozás dokumentációjában talál további információt.

A Kubernetes-fürtben a Webhook Token Authentication a hitelesítési jogkivonatok ellenőrzésére szolgál. A webhook-jogkivonat-hitelesítés az AKS-fürt részeként van konfigurálva és felügyelve. A Webhook-jogkivonatok hitelesítésével kapcsolatos további információkért tekintse meg a webhook-hitelesítés dokumentációját.

Feljegyzés

A Microsoft Entra ID AKS-hitelesítéshez való konfigurálásakor két Microsoft Entra-alkalmazás van konfigurálva. Ezt a műveletet egy Azure-bérlői rendszergazdának kell végrehajtania.

Microsoft Entra-kiszolgáló összetevő létrehozása

Az AKS-vel való integrációhoz létre kell hoznia és használnia kell egy Microsoft Entra-alkalmazást, amely végpontként szolgál az identitáskérésekhez. Az első Szükséges Microsoft Entra-alkalmazás megkapja a Microsoft Entra csoporttagságát egy felhasználó számára.

Hozza létre a kiszolgálóalkalmazás-összetevőt az az ad app create paranccsal, majd frissítse a csoporttagsági jogcímeket az az ad app update paranccsal. Az alábbi példa a Kezdés előtt szakaszban definiált aksname változót használja, és létrehoz egy változót

# Create the Azure AD application
serverApplicationId=$(az ad app create \
    --display-name "${aksname}Server" \
    --identifier-uris "https://${aksname}Server" \
    --query appId -o tsv)

# Update the application group membership claims
az ad app update --id $serverApplicationId --set groupMembershipClaims=All

Most hozzon létre egy egyszerű szolgáltatást a kiszolgálóalkalmazáshoz az az ad sp create paranccsal. Ez a szolgáltatásnév az Azure-platformon belüli hitelesítésre szolgál. Ezután kérje le a szolgáltatásnév titkos kódját az az ad sp hitelesítőadat-visszaállítási paranccsal, és rendelje hozzá a serverApplicationSecret nevű változóhoz az alábbi lépések egyikének használatához:

# Create a service principal for the Azure AD application
az ad sp create --id $serverApplicationId

# Get the service principal secret
serverApplicationSecret=$(az ad sp credential reset \
    --name $serverApplicationId \
    --credential-description "AKSPassword" \
    --query password -o tsv)

A Microsoft Entra szolgáltatásnévnek engedélyekre van szüksége a következő műveletek végrehajtásához:

  • Címtáradatok olvasása
  • Bejelentkezés és felhasználói profil olvasása

Rendelje hozzá ezeket az engedélyeket az az ad app permission add paranccsal:

az ad app permission add \
    --id $serverApplicationId \
    --api 00000003-0000-0000-c000-000000000000 \
    --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope 06da0dbc-49e2-44d2-8312-53f166ab848a=Scope 7ab1d382-f21e-4acd-a863-ba3e13f7da61=Role

Végül adja meg az előző lépésben hozzárendelt engedélyeket a kiszolgálóalkalmazáshoz az az ad app permission grant paranccsal. Ez a lépés meghiúsul, ha az aktuális fiók nem bérlői rendszergazda. Engedélyeket is hozzá kell adnia a Microsoft Entra-alkalmazáshoz, hogy olyan információkat kérjen, amelyek egyébként rendszergazdai hozzájárulást igényelhetnek az az hirdetésalkalmazás engedélyének rendszergazdai hozzájárulásával:

az ad app permission grant --id $serverApplicationId --api 00000003-0000-0000-c000-000000000000
az ad app permission admin-consent --id  $serverApplicationId

Microsoft Entra-ügyfélösszetevő létrehozása

A második Microsoft Entra-alkalmazást akkor használja a rendszer, ha egy felhasználó bejelentkezik az AKS-fürtbe a Kubernetes parancssori felületével (kubectl). Ez az ügyfélalkalmazás átveszi a felhasználó hitelesítési kérését, és ellenőrzi a hitelesítő adatait és engedélyeit. Hozza létre a Microsoft Entra alkalmazást az ügyfélösszetevőhöz az az ad app create paranccsal:

clientApplicationId=$(az ad app create \
    --display-name "${aksname}Client" \
    --native-app \
    --reply-urls "https://${aksname}Client" \
    --query appId -o tsv)

Hozzon létre egy egyszerű szolgáltatást az ügyfélalkalmazáshoz az az ad sp create paranccsal:

az ad sp create --id $clientApplicationId

Szerezze be a kiszolgálóalkalmazás oAuth2 azonosítóját, amely lehetővé teszi a két alkalmazásösszetevő közötti hitelesítési folyamatot az az ad app show paranccsal. Ezt az oAuth2 azonosítót használja a következő lépés.

oAuthPermissionId=$(az ad app show --id $serverApplicationId --query "oauth2Permissions[0].id" -o tsv)

Adja hozzá az ügyfélalkalmazás és a kiszolgálóalkalmazás-összetevők engedélyeit az oAuth2 kommunikációs folyamat használatához az az ad app permission add paranccsal. Ezután adjon engedélyeket az ügyfélalkalmazásnak a kiszolgálóalkalmazással való kommunikációhoz az az ad app permission grant paranccsal:

az ad app permission add --id $clientApplicationId --api $serverApplicationId --api-permissions ${oAuthPermissionId}=Scope
az ad app permission grant --id $clientApplicationId --api $serverApplicationId

A fürt üzembe helyezése

A két Microsoft Entra-alkalmazás létrehozásával most hozza létre magát az AKS-fürtöt. Először hozzon létre egy erőforráscsoportot az az group create paranccsal. Az alábbi példa létrehozza az erőforráscsoportot az EastUS régióban:

Hozzon létre egy erőforráscsoportot a fürthöz:

az group create --name myResourceGroup --location EastUS

Kérje le az Azure-előfizetés bérlőazonosítóját az az account show paranccsal. Ezután hozza létre az AKS-fürtöt az az aks create paranccsal. Az AKS-fürt létrehozásához használt parancs megadja a kiszolgáló- és ügyfélalkalmazás-azonosítókat, a kiszolgálóalkalmazás-szolgáltatás egyszerű titkos kódját és a bérlőazonosítót:

tenantId=$(az account show --query tenantId -o tsv)

az aks create \
    --resource-group myResourceGroup \
    --name $aksname \
    --node-count 1 \
    --generate-ssh-keys \
    --aad-server-app-id $serverApplicationId \
    --aad-server-app-secret $serverApplicationSecret \
    --aad-client-app-id $clientApplicationId \
    --aad-tenant-id $tenantId

Végül kérje le a fürt rendszergazdai hitelesítő adatait az az aks get-credentials paranccsal. Az alábbi lépések egyikében lekérheti a szokásos felhasználói fürt hitelesítő adatait a Microsoft Entra hitelesítési folyamat működés közbeni megtekintéséhez.

az aks get-credentials --resource-group myResourceGroup --name $aksname --admin

Kubernetes RBAC-kötés létrehozása

Ahhoz, hogy egy Microsoft Entra-fiók használható legyen az AKS-fürttel, létre kell hozni egy szerepkör-kötést vagy egy fürtszerepkör-kötést. A szerepkörök határozzák meg az engedélyeket, és a kötések a kívánt felhasználókra alkalmazzák őket. Ezek a hozzárendelések alkalmazhatók egy adott névtérre vagy a teljes fürtre. További információ: Kubernetes RBAC-hitelesítés használata.

Kérje le az aktuálisan bejelentkezett felhasználó egyszerű nevét (UPN) az az ad signed-in-user show paranccsal. Ez a felhasználói fiók a következő lépésben engedélyezve van a Microsoft Entra integrációjához.

az ad signed-in-user show --query userPrincipalName -o tsv

Fontos

Ha a Kubernetes RBAC-kötést megadó felhasználó ugyanabban a Microsoft Entra-bérlőben van, a userPrincipalName alapján rendeljen hozzá engedélyeket. Ha a felhasználó egy másik Microsoft Entra-bérlőben van, inkább az objectId tulajdonságot kérdezi le és használja.

Hozzon létre egy YAML-jegyzékfájlt, basic-azure-ad-binding.yaml és illessze be a következő tartalmat. Az utolsó sorban cserélje le a userPrincipalName_or_objectId az előző parancs UPN- vagy objektumazonosító-kimenetére:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: contoso-cluster-admins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: userPrincipalName_or_objectId

Hozza létre a ClusterRoleBindinget a kubectl apply paranccsal, és adja meg a YAML-jegyzékfájl fájlnevét:

kubectl apply -f basic-azure-ad-binding.yaml

Fürt elérése Microsoft Entra-azonosítóval

Most teszteljük a Microsoft Entra-hitelesítés integrációját az AKS-fürthöz. Állítsa be a kubectl konfigurációs környezetet normál felhasználói hitelesítő adatok használatára. Ez a környezet az összes hitelesítési kérést a Microsoft Entra-azonosítón keresztül továbbítja.

az aks get-credentials --resource-group myResourceGroup --name $aksname --overwrite-existing

Most használja a kubectl get pods parancsot a podok megtekintéséhez az összes névtérben:

kubectl get pods --all-namespaces

Bejelentkezési kérést kap a Microsoft Entra hitelesítő adataival való hitelesítéshez egy webböngésző használatával. A sikeres hitelesítés után a kubectl parancs megjeleníti a podokat az AKS-fürtben, ahogyan az alábbi példakimenetben látható:

kubectl get pods --all-namespaces
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code BYMK7UXVD to authenticate.

NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
kube-system   coredns-754f947b4-2v75r                 1/1     Running   0          23h
kube-system   coredns-754f947b4-tghwh                 1/1     Running   0          23h
kube-system   coredns-autoscaler-6fcdb7d64-4wkvp      1/1     Running   0          23h
kube-system   heapster-5fb7488d97-t5wzk               2/2     Running   0          23h
kube-system   kube-proxy-2nd5m                        1/1     Running   0          23h
kube-system   kube-svc-redirect-swp9r                 2/2     Running   0          23h
kube-system   kubernetes-dashboard-847bb4ddc6-trt7m   1/1     Running   0          23h
kube-system   metrics-server-7b97f9cd9-btxzz          1/1     Running   0          23h
kube-system   tunnelfront-6ff887cffb-xkfmq            1/1     Running   0          23h

A kapott kubectl hitelesítési jogkivonat gyorsítótárazva van. A rendszer csak akkor jelentkezik be újra, ha a jogkivonat lejárt, vagy a Kubernetes konfigurációs fájlja újra létrejön.

Ha a böngészővel való sikeres bejelentkezés után engedélyezési hibaüzenet jelenik meg, mint az alábbi példakimenetben, ellenőrizze az alábbi lehetséges problémákat:

error: You must be logged in to the server (Unauthorized)
  • Meghatározta a megfelelő objektumazonosítót vagy UPN-t attól függően, hogy a felhasználói fiók ugyanabban a Microsoft Entra-bérlőben van-e, vagy sem.
  • A felhasználó nem tagja több mint 200 csoportnak.
  • A kiszolgáló alkalmazásregisztrációjában definiált titkos kód megegyezik a következővel konfigurált értékkel: --aad-server-app-secret
  • Győződjön meg arról, hogy egyszerre csak egy kubectl-verzió van telepítve a gépen. Az ütköző verziók problémákat okozhatnak az engedélyezés során. A legújabb verzió telepítéséhez használja az az aks install-cli parancsot.

Gyakori kérdések a Microsoft Entra-integrációról az AKS által felügyelt Microsoft Entra-azonosítóra való migrálással kapcsolatban

1. Mi a migrálás terve?

A Microsoft Entra Integration (örökölt) 2023. június 1-jén megszűnik. Ezen dátum után nem hozhat létre új fürtöket a Microsoft Entra ID azonosítóval (örökölt). 2023. augusztus 1-től automatikusan migráljuk az összes Microsoft Entra-integrációs (örökölt) AKS-fürtöt az AKS által felügyelt Microsoft Entra-azonosítóba. Az érintett előfizetés-rendszergazdáknak kéthetes értesítési e-maileket küldünk, hogy emlékeztesse őket a migrálásra.

2. Mi történik, ha nem lépek?

A Microsoft Entra-integrációs (örökölt) AKS-fürtök 2023. június 1. után is működni fognak. A fürtöket 2023. augusztus 1-től automatikusan migráljuk az AKS által felügyelt Microsoft Entra-azonosítóba. Az API-kiszolgáló leállása a migrálás során előfordulhat.

A kubeconfig-tartalom a migrálás után megváltozik. Az új hitelesítő adatokat a kubeconfig fájlba kell egyesítenie a az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name>.

Azt javasoljuk, hogy augusztus 1-ig manuálisan frissítse az AKS-fürtöt az AKS által felügyelt Microsoft Entra-azonosítóra . Így a munkaidőn kívüli órákban is kezelheti az állásidőt, ha az kényelmesebb.

3. Miért kapom meg továbbra is az értesítési e-mailt a manuális migrálás után?

Az e-mail elküldése több napig tart. Ha a fürtöt nem migrálták az e-mail-küldési folyamat elindítása előtt, előfordulhat, hogy továbbra is értesítést kap.

4. Hogyan ellenőrizhetim, hogy a fürtöm migrálva van-e az AKS által felügyelt Microsoft Entra-azonosítóra?

Ellenőrizze, hogy az AKS-fürt migrálva van-e az AKS által felügyelt Microsoft Entra-azonosítóba a az aks show parancs használatával.

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

Ha a fürt az AKS által felügyelt Microsoft Entra-azonosítót használja, a kimenet az managedtrue. Példa:

    {
      "adminGroupObjectIDs": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      ],
      "adminUsers": null,
      "clientAppId": null,
      "enableAzureRbac": null,
      "managed": true,
      "serverAppId": null,
      "serverAppSecret": null,
      "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }

Következő lépések

A cikkben bemutatott parancsokat tartalmazó teljes szkriptért lásd a [Microsoft Entra integrációs szkriptet az AKS-minták adattárában][complete-script].

Ha a Microsoft Entra felhasználóit és csoportjait szeretné használni a fürterőforrásokhoz való hozzáférés szabályozásához, olvassa el a Fürterőforrások hozzáférésének szabályozása a Kubernetes szerepköralapú hozzáférés-vezérléssel és a Microsoft Entra-identitásokkal az AKS-ben című témakört.

A Kubernetes-fürtök biztonságossá tételéről további információt az AKS hozzáférési és identitásbeállításai című témakörben talál.

Az identitás- és erőforrás-vezérléssel kapcsolatos ajánlott eljárásokért tekintse meg az AKS-ben való hitelesítés és engedélyezés ajánlott eljárásait.