Megosztás a következőn keresztül:


Microsoft Entra pod által felügyelt identitások használata az Azure Kubernetes Service-ben (előzetes verzió)

A Microsoft Entra pod által felügyelt identitások Kubernetes-primitívekkel társítják az Azure-erőforrások és -identitások felügyelt identitásait a Microsoft Entra ID-ban podokkal. A rendszergazdák Kubernetes-primitívként hoznak létre identitásokat és kötéseket, amelyek lehetővé teszik, hogy a podok hozzáférjenek a Microsoft Entra-azonosítóra, mint identitásszolgáltatóra támaszkodó Azure-erőforrásokhoz.

Fontos

Javasoljuk, hogy tekintse át Microsoft Entra Számítási feladat ID. Ez a hitelesítési módszer felváltja a pod által felügyelt identitást (előzetes verzió), amely integrálva van a Kubernetes natív képességeivel, hogy összefésüljenek az alkalmazás nevében bármely külső identitásszolgáltatóval.

Az Azure Kubernetes Service nyílt forráskód Microsoft Entra pod által felügyelt identitása (előzetes verzió) 2022.10.24-én elavult, a projekt pedig 2023 szeptemberében archiválva lett. További információt az elavulásról szóló közleményben talál. Az AKS Pod Identity Managed bővítmény 2025 szeptén keresztül ki lesz javítva és támogatott, hogy az ügyfelek áttérhessenek Microsoft Entra Számítási feladat ID

A felügyelt AKS-bővítmény letiltásához használja a következő parancsot: az feature unregister --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview".

Mielőtt elkezdené

Az Azure CLI 2.20.0-s vagy újabb verziójának telepítve kell lennie.

Korlátozások

  • Egy fürthöz legfeljebb 200 pod által felügyelt identitás engedélyezett.
  • Fürt esetén legfeljebb 200 pod által felügyelt identitás kivétele engedélyezett.
  • A pod által felügyelt identitások csak Linux-csomópontkészleteken érhetők el.
  • Ez a funkció csak a virtuálisgép-méretezési csoportok által támogatott fürtök esetében támogatott.

Az aks-preview Azure CLI-bővítmény telepítése

Fontos

Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:

Az aks-preview bővítmény telepítéséhez futtassa a következő parancsot:

az extension add --name aks-preview

Futtassa a következő parancsot a bővítmény legújabb verziójára való frissítéshez:

az extension update --name aks-preview

Regisztrálja az EnablePodIdentityPreview funkciójelzőt

Regisztrálja a EnablePodIdentityPreview funkciójelzőt az az feature register paranccsal, ahogyan az az alábbi példában látható:

az feature register --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview"

Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban. Ellenőrizze a regisztrációs állapotot az az feature show paranccsal:

az feature show --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview"

Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját az az provider register paranccsal:

az provider register --namespace Microsoft.ContainerService

Műveleti mód beállításai

A Microsoft Entra pod által felügyelt identitás két működési módot támogat:

  • Standard mód: Ebben a módban a következő két összetevő van üzembe helyezve az AKS-fürtben:
    • Felügyelt identitásvezérlő (MIC): A MIC egy Kubernetes-vezérlő, amely a Kubernetes API-kiszolgálón keresztül figyeli a podok, az AzureIdentity és az AzureIdentityBinding módosításait. Ha releváns módosítást észlel, a MIC szükség szerint hozzáadja vagy törli az AzureAssignedIdentitást . Konkrétan egy pod ütemezésekor a MIC hozzárendeli a felügyelt identitást az Azure-ban a csomópontkészlet által a létrehozási fázisban használt mögöttes virtuálisgép-méretezési csoporthoz. Az identitást használó összes pod törlésekor eltávolítja az identitást a csomópontkészlet virtuálisgép-méretezési csoportjából, kivéve, ha ugyanazt a felügyelt identitást más podok használják. A MIC hasonló műveleteket hajt végre az AzureIdentity vagy az AzureIdentityBinding létrehozásakor vagy törlésekor.
    • Csomópontalapú felügyelt identitás (NMI): Az NMI egy pod, amely DaemonSetként fut az AKS-fürt minden csomópontján. Az NMI minden csomóponton elfogja a biztonsági jogkivonat-kéréseket az Azure Instance Metadata Szolgáltatáshoz , magára irányítja őket, és ellenőrzi, hogy a pod hozzáfér-e ahhoz az identitáshoz, amelyhez jogkivonatot kér, és az alkalmazás nevében lekéri a jogkivonatot a Microsoft Entra-bérlőtől.
  • Felügyelt mód: Ez a mód csak NMI-t kínál. Amikor az AKS-fürt bővítményén keresztül telepíti, az Azure felügyeli a Kubernetes-primitívek (AzureIdentity és AzureIdentityBinding) létrehozását és identitás-hozzárendelést a felhasználó parancssori felületi parancsaira válaszul. Ellenkező esetben, ha Helm-diagramon keresztül van telepítve, az identitást manuálisan kell hozzárendelnie és kezelnie kell a felhasználónak. További információ: Pod identity in managed mode.

Ha a Microsoft Entra pod által felügyelt identitást Helm-diagramon vagy YAML-jegyzéken keresztül telepíti a telepítési útmutatóban látható módon, választhat a mód és managed a standard mód között. Ha ehelyett úgy dönt, hogy telepíti a Microsoft Entra pod által felügyelt identitást az AKS-fürt bővítményével, ahogyan az ebben a cikkben látható, a beállítás a managed módot fogja használni.

AKS-fürt létrehozása az Azure Container Networking Interface (CNI) használatával

Feljegyzés

Ez az alapértelmezett ajánlott konfiguráció

Hozzon létre egy AKS-fürtöt, amelyen engedélyezve van az Azure CNI és a pod által felügyelt identitás. Az alábbi parancsok az az group create használatával létrehoznak egy myResourceGroup nevű erőforráscsoportot, az az aks create parancs pedig egy myAKSCluster nevű AKS-fürtöt a myResourceGroup erőforráscsoportban.

az group create --name myResourceGroup --location eastus
az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --enable-pod-identity \
    --network-plugin azure \
    --generate-ssh-keys

Az az aks get-credentials használatával jelentkezzen be az AKS-fürtbe. Ez a parancs letölti és konfigurálja az kubectl ügyféltanúsítványt a fejlesztői számítógépen.

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

Feljegyzés

Ha engedélyezi a pod által felügyelt identitást az AKS-fürtön, a rendszer hozzáad egy AzurePodIdentityException nevű aks-addon-exception nevet a kube-system névtérhez. Az AzurePodIdentityException lehetővé teszi, hogy bizonyos címkékkel rendelkező podok az NMI-kiszolgáló elfogása nélkül érhessék el az Azure Instance Metadata Service (IMDS) végpontját. Az aks-addon-exception lehetővé teszi az AKS belső bővítmények, például a Microsoft Entra pod által felügyelt identitások működését anélkül, hogy manuálisan konfigurálnia kellene egy AzurePodIdentityExceptionet. Igény szerint hozzáadhat, eltávolíthat és frissíthet egy AzurePodIdentityException az aks pod-identity exception addeszközt az , az aks pod-identity exception deleteaz aks pod-identity exception updatevagy kubectl.

Meglévő AKS-fürt frissítése az Azure CNI-vel

Frissítsen egy meglévő AKS-fürtöt az Azure CNI-vel, hogy pod által felügyelt identitást is tartalmazzon.

az aks update --resource-group $MY_RESOURCE_GROUP --name $MY_CLUSTER --enable-pod-identity

A Kubenet hálózati beépülő modul használata a Microsoft Entra pod által felügyelt identitásaival

Fontos

A Microsoft Entra pod által felügyelt identitás kubenettel való futtatása biztonsági problémák miatt nem ajánlott konfiguráció. Az alapértelmezett Kubenet-konfiguráció nem akadályozza meg az ARP-hamisítást, amelyet egy pod felhasználhat egy másik podként való működéshez, és hozzáférést kaphat egy olyan identitáshoz, amelyet nem kíván használni. A Microsoft Entra pod által felügyelt identitás kubenettel való engedélyezése előtt kövesse a kockázatcsökkentési lépéseket és konfigurálja a szabályzatokat.

Kockázatcsökkentés

A fürt szintjén a biztonsági rés csökkentése érdekében a "Kubernetes-fürttárolóknak csak engedélyezett képességeket kell használniuk" azure-beli beépített szabályzattal korlátozhatja a CAP_NET_RAW támadást.

NET_RAW hozzáadása a "Szükséges ledobási képességekhez"

rendszerkép

Ha nem az Azure Policyt használja, használhatja az OpenPolicyAgent belépési vezérlőt a Gatekeeper webhook-ellenőrzésével együtt. Ha már telepítve van a Gatekeeper a fürtben, adja hozzá a K8sPSPCapabilities típusú ConstraintTemplate elemet:

kubectl apply -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper-library/master/library/pod-security-policy/capabilities/template.yaml

Adjon hozzá egy sablont, amely korlátozza a podok ívását a NET_RAW képességgel:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPCapabilities
metadata:
  name: prevent-net-raw
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]
    excludedNamespaces:
      - "kube-system"
  parameters:
    requiredDropCapabilities: ["NET_RAW"]

AKS-fürt létrehozása a Kubenet hálózati beépülő modullal

Hozzon létre egy AKS-fürtöt, amelyen engedélyezve van a Kubenet hálózati beépülő modulja és a pod által felügyelt identitás.

az aks create \
    --resource-group $MY_RESOURCE_GROUP \
    --name $MY_CLUSTER \
    --enable-pod-identity \
    --enable-pod-identity-with-kubenet \
    --generate-ssh-keys

Meglévő AKS-fürt frissítése a Kubenet hálózati beépülő modullal

Frissítsen egy meglévő AKS-fürtöt a Kubenet hálózati beépülő modullal a pod által felügyelt identitások belefoglalásához.

az aks update --resource-group $MY_RESOURCE_GROUP --name $MY_CLUSTER --enable-pod-identity --enable-pod-identity-with-kubenet

Identitás létrehozása

Fontos

Az identitás létrehozásához rendelkeznie kell az előfizetés megfelelő engedélyével (például tulajdonosával).

Hozzon létre egy identitást, amelyet a bemutató pod az identity create és set the IDENTITY_CLIENT_ID és IDENTITY_RESOURCE_ID változókkal fog használni.

az group create --name myIdentityResourceGroup --location eastus
export IDENTITY_RESOURCE_GROUP="myIdentityResourceGroup"
export IDENTITY_NAME="application-identity"
az identity create --resource-group ${IDENTITY_RESOURCE_GROUP} --name ${IDENTITY_NAME}
export IDENTITY_CLIENT_ID="$(az identity show --resource-group ${IDENTITY_RESOURCE_GROUP} --name ${IDENTITY_NAME} --query clientId -o tsv)"
export IDENTITY_RESOURCE_ID="$(az identity show --resource-group ${IDENTITY_RESOURCE_GROUP} --name ${IDENTITY_NAME} --query id -o tsv)"

Engedélyek hozzárendelése a felügyelt identitáshoz

A podhoz hozzárendelt felügyelt identitásnak olyan engedélyeket kell adni, amelyek megfelelnek a végrehajtandó műveleteknek.

A bemutató futtatásához a IDENTITY_CLIENT_ID felügyelt identitásnak virtuálisgép-közreműködői engedélyekkel kell rendelkeznie abban az erőforráscsoportban, amely az AKS-fürt virtuálisgép-méretezési csoportját tartalmazza.

# Obtain the name of the resource group containing the Virtual Machine Scale set of your AKS cluster, commonly called the node resource group
NODE_GROUP=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)

# Obtain the id of the node resource group 
NODES_RESOURCE_ID=$(az group show --name $NODE_GROUP -o tsv --query "id")

# Create a role assignment granting your managed identity permissions on the node resource group
az role assignment create --role "Virtual Machine Contributor" --assignee "$IDENTITY_CLIENT_ID" --scope $NODES_RESOURCE_ID

Pod-identitás létrehozása

Pod által felügyelt identitás létrehozása a fürthöz a következő használatával az aks pod-identity add: .

export POD_IDENTITY_NAME="my-pod-identity"
export POD_IDENTITY_NAMESPACE="my-app"
az aks pod-identity add --resource-group myResourceGroup --cluster-name myAKSCluster --namespace ${POD_IDENTITY_NAMESPACE}  --name ${POD_IDENTITY_NAME} --identity-resource-id ${IDENTITY_RESOURCE_ID}

Feljegyzés

A "POD_IDENTITY_NAME" az RFC 1123-ban meghatározott érvényes DNS-altartománynévnek kell lennie.

Feljegyzés

Ha a pod által felügyelt identitást a használatával pod-identity addrendeli hozzá, az Azure CLI megkísérli a felügyelt identitáskezelő szerepkört a pod által felügyelt identitáson (IDENTITY_RESOURCE_ID) keresztül adni a fürt identitásának.

Az Azure létrehoz egy AzureIdentity-erőforrást a fürtben, amely az Azure-beli identitást jelöli, valamint egy AzureIdentityBinding-erőforrást, amely az AzureIdentitást egy választóhoz köti. Ezeket az erőforrásokat a

kubectl get azureidentity -n $POD_IDENTITY_NAMESPACE
kubectl get azureidentitybinding -n $POD_IDENTITY_NAMESPACE

Mintaalkalmazás futtatása

Ahhoz, hogy egy pod a Microsoft Entra pod által felügyelt identitást használhassa, a podnak szüksége van egy aadpodidbinding címkére, amelynek értéke megegyezik az AzureIdentityBinding választójával. Alapértelmezés szerint a választó megegyezik a pod által felügyelt identitás nevével, de híváskor az aks pod-identity adda beállítással --binding-selector is beállítható.

Ha microsoft Entra pod által felügyelt identitással szeretne mintaalkalmazást futtatni, hozzon létre egy demo.yaml fájlt az alábbi tartalommal. Cserélje le POD_IDENTITY_NAME, IDENTITY_CLIENT_ID és IDENTITY_RESOURCE_GROUP az előző lépések értékeire. Cserélje le SUBSCRIPTION_ID az előfizetés-azonosítóra.

Feljegyzés

Az előző lépésekben létrehozta a POD_IDENTITY_NAME, IDENTITY_CLIENT_ID és IDENTITY_RESOURCE_GROUP változókat. Használhat például echo egy parancsot a változókhoz echo $POD_IDENTITY_NAMEbeállított érték megjelenítéséhez.

apiVersion: v1
kind: Pod
metadata:
  name: demo
  labels:
    aadpodidbinding: $POD_IDENTITY_NAME
spec:
  containers:
  - name: demo
    image: mcr.microsoft.com/oss/azure/aad-pod-identity/demo:v1.6.3
    args:
      - --subscriptionid=$SUBSCRIPTION_ID
      - --clientid=$IDENTITY_CLIENT_ID
      - --resourcegroup=$IDENTITY_RESOURCE_GROUP
    env:
      - name: MY_POD_NAME
        valueFrom:
          fieldRef:
            fieldPath: metadata.name
      - name: MY_POD_NAMESPACE
        valueFrom:
          fieldRef:
            fieldPath: metadata.namespace
      - name: MY_POD_IP
        valueFrom:
          fieldRef:
            fieldPath: status.podIP
  nodeSelector:
    kubernetes.io/os: linux

Figyelje meg, hogy a poddefiníció egy aadpodidbinding címkével rendelkezik, amelynek értéke megegyezik az előző lépésben futtatott az aks pod-identity add pod által felügyelt identitás nevével.

Üzembe helyezés demo.yaml a pod által felügyelt identitással megegyező névtérben a következő használatával kubectl apply:

kubectl apply -f demo.yaml --namespace $POD_IDENTITY_NAMESPACE

Ellenőrizze, hogy a mintaalkalmazás sikeresen fut-e a következő használatával kubectl logs: .

kubectl logs demo --follow --namespace $POD_IDENTITY_NAMESPACE

Ellenőrizze, hogy a naplók egy jogkivonatot mutatnak-e, és hogy a GET művelet sikeres-e.

...
successfully doARMOperations vm count 0
successfully acquired a token using the MSI, msiEndpoint(http://169.254.169.254/metadata/identity/oauth2/token)
successfully acquired a token, userAssignedID MSI, msiEndpoint(http://169.254.169.254/metadata/identity/oauth2/token) clientID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
successfully made GET on instance metadata
...

Több identitással rendelkező alkalmazás futtatása

Ha engedélyezni szeretné, hogy egy alkalmazás több identitást használjon, állítsa ugyanarra a --binding-selector választóra a pod-identitások létrehozásakor.

az aks pod-identity add --resource-group myResourceGroup --cluster-name myAKSCluster --namespace ${POD_IDENTITY_NAMESPACE}  --name ${POD_IDENTITY_NAME_1} --identity-resource-id ${IDENTITY_RESOURCE_ID_1} --binding-selector myMultiIdentitySelector
az aks pod-identity add --resource-group myResourceGroup --cluster-name myAKSCluster --namespace ${POD_IDENTITY_NAMESPACE}  --name ${POD_IDENTITY_NAME_2} --identity-resource-id ${IDENTITY_RESOURCE_ID_2} --binding-selector myMultiIdentitySelector

Ezután állítsa a aadpodidbinding pod YAML mezőjét a megadott kötésválasztóra.

apiVersion: v1
kind: Pod
metadata:
  name: demo
  labels:
    aadpodidbinding: myMultiIdentitySelector
...

Pod által felügyelt identitás letiltása meglévő fürtön

Ha le szeretné tiltani a pod által felügyelt identitást egy meglévő fürtön, távolítsa el a pod által felügyelt identitásokat a fürtből. Ezután tiltsa le a szolgáltatást a fürtben.

az aks pod-identity delete --name ${POD_IDENTITY_NAME} --namespace ${POD_IDENTITY_NAMESPACE} --resource-group myResourceGroup --cluster-name myAKSCluster
az aks update --resource-group myResourceGroup --name myAKSCluster --disable-pod-identity

A fölöslegessé vált elemek eltávolítása

Ha el szeretne távolítani egy Microsoft Entra pod által felügyelt identitást a fürtből, távolítsa el a mintaalkalmazást és a pod által felügyelt identitást a fürtből. Ezután távolítsa el a fürtidentitás identitását és szerepkör-hozzárendelését.

kubectl delete pod demo --namespace $POD_IDENTITY_NAMESPACE
az aks pod-identity delete --name ${POD_IDENTITY_NAME} --namespace ${POD_IDENTITY_NAMESPACE} --resource-group myResourceGroup --cluster-name myAKSCluster
az identity delete --resource-group ${IDENTITY_RESOURCE_GROUP} --name ${IDENTITY_NAME}
az role assignment delete --role "Managed Identity Operator" --assignee "$IDENTITY_CLIENT_ID" --scope "$IDENTITY_RESOURCE_ID"

Következő lépések

A felügyelt identitásokról további információt az Azure-erőforrások felügyelt identitásai című témakörben talál.