Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Spravované identitami podů Microsoft Entra využívají prvky služby Azure Kubernetes Service (AKS) k přidružení spravovaných identit pro prostředky Azure a identity v Microsoft Entra ID k podům. Správci vytvářejí identity a vazby jako primitiv Kubernetes, které umožňují podům přistupovat k prostředkům Azure, které jako zprostředkovatele identity spoléhají na Microsoft Entra ID.
Identity spravované pody Microsoft Entra v AKS mají následující omezení:
- Každý cluster podporuje až 200 identit spravovaných pody.
- Každý cluster podporuje až 200 výjimek identity spravované podem.
- Identity spravované podů jsou podporovány jen v uzlových fondech Linuxu.
- Tato funkce se podporuje jenom v clusterech, které využívají škálovací sady virtuálních počítačů.
Důležité
Doporučujeme vám zkontrolovat ID úloh Microsoft Entra. Tato metoda ověřování nahrazuje identitu spravovanou podem (Preview), která se integruje s nativními možnostmi Kubernetes pro federaci s externími zprostředkovateli identity jménem aplikace.
Open source identita spravovaná podem Microsoft Entra (Preview) ve službě Azure Kubernetes Service byla vyřazena 24. října 2022 a projekt archivovaný v září 2023. Další informace najdete v oznámení o vyřazení. Doplněk pro správu identity podů AKS je aktualizovaný a podporovaný do září 2025, aby měli zákazníci čas se přesunout na ID úlohy Microsoft Entra.
Možnosti režimu operace
Identita spravovaná uzlem Microsoft Entra podporuje dva režimy provozu:
Standardní režim: V tomto režimu se do clusteru AKS nasadí následující dvě komponenty:
Spravovaný kontroler identit (MIC): MIC je kontroler Kubernetes, který prostřednictvím serveru rozhraní API Kubernetes sleduje změny podů, AzureIdentity a AzureIdentityBinding. Když zjistí relevantní změnu, mic podle potřeby přidá nebo odstraní AzureAssignedIdentity . Konkrétně, když je pod naplánován, MIC přiřadí spravovanou identitu na Azure ke škálovací sadě podkladových virtuálních počítačů, která je používána fondem uzlů během fáze vytváření. Když se odstraní všechny pody používající identitu, odebere identitu ze škálovací sady virtuálních počítačů fondu uzlů, pokud stejnou spravovanou identitu nepoužívají jiné pody. MIC provádí podobné akce, když se vytvoří nebo odstraní AzureIdentity nebo AzureIdentityBinding.
Spravovaná identita uzlu (NMI):NMI je pod, který běží jako daemonSet na každém uzlu v clusteru AKS. NMI zachytí požadavky na token zabezpečení do služby Azure Instance Metadata Service na každém uzlu. NMI zachytí požadavky na tokeny a přesměruje je na sebe. Potom zkontroluje, jestli je pod autorizován pro přístup k požadované identitě, a pokud ano, získá token z tenanta Microsoft Entra ve jménu aplikace.
Spravovaný režim: Tento režim nabízí pouze NMI. Při instalaci prostřednictvím doplňku clusteru AKS spravuje Azure vytváření primitiv Kubernetes (AzureIdentity a AzureIdentityBinding) a přiřazení identity v reakci na příkazy rozhraní příkazového řádku uživatelem. Jinak pokud je identita nainstalována prostřednictvím Helm chartu, musí být ručně přiřazena a spravována uživatelem. Další informace najdete v tématu Identita podu ve spravovaném režimu.
Když nainstalujete identitu spravovanou podem Microsoft Entra prostřednictvím Helm chartu nebo YAML manifestu, jak je znázorněno v průvodci instalací, můžete si vybrat mezi režimem a režimem standard. Pokud se místo toho rozhodnete nainstalovat spravovanou identitu v podu Microsoft Entra pomocí doplňku clusteru AKS, jak je znázorněno v tomto článku, nastavení používá režim managed.
Požadavky
Vaše identity spravované podem Microsoft Entra v AKS musí splňovat následující požadavky:
Nainstaluje se Azure CLI verze 2.20.0 nebo novější.
Váš cluster AKS je ve verzi 1.26 nebo novější.
Musíte mít příslušná oprávnění, jako je role Vlastník nebo Přispěvatel .
Instalace rozšíření Azure CLI aks-Preview
Důležité
Funkce AKS ve verzi pro náhled jsou k dispozici na samoobslužné bázi a na základě volby. Verze Preview jsou poskytovány "tak, jak jsou" a "dle dostupnosti", a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Preview verze AKS jsou částečně zahrnuty zákaznickou podporou podle nejlepších možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Pokud chcete nainstalovat rozšíření aks-preview, spusťte následující příkaz:
az extension add --name aks-preview
Spuštěním následujícího příkazu aktualizujte nejnovější verzi vydaného rozšíření:
az extension update --name aks-preview
Zaregistrujte příznak funkce EnablePodIdentityPreview
EnablePodIdentityPreview Příznak funkce zaregistrujte pomocí příkazu az feature register, jak je znázorněno v následujícím příkladu:
az feature register --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview"
Návod
Pokud chcete zakázat spravovaný doplněk AKS, spusťte následující příkaz:
az feature unregister --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview"
Zobrazení stavu jako Zaregistrované trvá několik minut. Pomocí příkazu az feature show ověřte stav registrace.
az feature show --namespace "Microsoft.ContainerService" --name "EnablePodIdentityPreview"
Pokud se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí příkazu az provider register :
az provider register --namespace Microsoft.ContainerService
Správa clusteru AKS s využitím identit spravovaných pody
Cluster AKS můžete spravovat pomocí síťového pluginu Azure Container Networking Interface (CNI) nebo pluginu Kubenet při povolování identit spravovaných podem Microsoft Entra.
Vytvořte cluster AKS s Azure CNI a spravovanou identitou podu, povolenými s výchozí doporučenou konfigurací. Následující příkazy používají az group create k vytvoření skupiny prostředků s názvem myResourceGroup a
az aks createpříkaz k vytvoření clusteru AKS s názvem myAKSCluster ve skupině prostředků myResourceGroup .az group create --name myResourceGroup --location eastus az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-pod-identity \ --network-plugin azure \ --generate-ssh-keysPoužijte
az aks get-credentialsk přihlášení ke clusteru AKS. Tento příkaz také stáhne a nakonfigurujekubectlklientský certifikát na vývojovém počítači.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Když v clusteru AKS povolíte identitu spravovanou podem, systém přidá do oboru názvů AzurePodIdentityException položku pojmenovanou .
AzurePodIdentityException umožňuje podům s určitými popisky přistupovat ke koncovému bodu služby Azure Instance Metadata Service (IMDS) bez zásahu serverem NMI. Výjimka aks-addon-exception umožňuje, aby doplňky AKS od Microsoftu, jako je identita Microsoft Entra spravovaná pro pody, fungovaly, aniž byste museli ručně konfigurovat AzurePodIdentityException. Volitelně můžete přidat, odebrat a aktualizovat AzurePodIdentityException pomocí:
az aks pod-identity exception addaz aks pod-identity exception deleteaz aks pod-identity exception updateNebo
kubectl
Aktualizace existujícího clusteru AKS pomocí Azure CNI
Pokud chcete aktualizovat existující cluster AKS pomocí Azure CNI tak, aby zahrnoval identitu spravovanou podem, spusťte následující příkaz:
az aks update --resource-group $MY_RESOURCE_GROUP --name $MY_CLUSTER --enable-pod-identity
Vytvoření spravované identity
Abyste mohli vytvořit identitu, musíte mít příslušná oprávnění (například Vlastník) ve vašem předplatném.
Pokud chcete vytvořit identitu, kterou bude používat ukázkový pod pomocí příkazu az identity create, nastavte IDENTITY_CLIENT_ID a IDENTITY_RESOURCE_ID proměnných, spusťte následující příkaz:
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)"
Přiřazení oprávnění pro spravovanou identitu
Spravovaná identita přiřazená k podu musí mít přidělena příslušná oprávnění na základě vyžadovaných operací. Ujistěte se, že přiřazujete pouze minimální požadované role, aby dodržovaly osvědčené postupy zabezpečení.
Pokud chcete spustit ukázku, musí mít spravovaná identita IDENTITY_CLIENT_ID oprávnění Přispěvatel virtuálních počítačů ve skupině prostředků, která obsahuje škálovací sadu virtuálních počítačů vašeho clusteru AKS.
# 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
Vytvořte identitu spravovanou podem
Pokud chcete vytvořit identitu spravovanou pomocí podu pro cluster za pomoci az aks pod-identity add, spusťte následující příkaz:
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}
Poznámka:
"POD_IDENTITY_NAME" musí být platný název subdomény DNS, jak je definováno v RFC 1123.
Když přiřadíte identitu spravovanou podem pomocí pod-identity add, Azure CLI se pokusí udělit roli Operátora spravované identity nad identitou spravovanou podem (IDENTITY_RESOURCE_ID) identitě clusteru.
Azure ve vašem clusteru vytvoří prostředek AzureIdentity představující identitu v Azure a prostředek AzureIdentityBinding, který připojí AzureIdentity k selektoru. Tyto prostředky můžete zobrazit spuštěním následujícího příkazu:
kubectl get azureidentity -n $POD_IDENTITY_NAMESPACE
kubectl get azureidentitybinding -n $POD_IDENTITY_NAMESPACE
Spuštění ukázkové aplikace
Aby pod mohl používat identitu spravovanou putem Microsoft Entra, potřebuje mít štítek aadpodidbinding s hodnotou, která se shoduje s selektorem z AzureIdentityBinding. Ve výchozím nastavení selektor odpovídá názvu identity spravované pody, ale lze jej také nastavit pomocí parametru --binding-selector při použití az aks pod-identity add.
Pokud chcete spustit ukázkovou aplikaci pomocí identity spravované podem Microsoft Entra, vytvořte demo.yaml soubor s následujícím obsahem. Nahraďte hodnoty POD_IDENTITY_NAME, IDENTITY_CLIENT_ID a IDENTITY_RESOURCE_GROUP hodnotami z předchozích kroků. Nahraďte SUBSCRIPTION_ID ID předplatného.
Poznámka:
V předchozích krocích jste vytvořili proměnné POD_IDENTITY_NAME, IDENTITY_CLIENT_ID a IDENTITY_RESOURCE_GROUP . Můžete použít příkaz, například echo k zobrazení hodnoty, kterou jste nastavili pro proměnné, například echo $POD_IDENTITY_NAME.
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
Všimněte si, že definice podu má aadpodidbinding popisek s hodnotou, která odpovídá názvu identity spravované podem, kterou jste nastavili az aks pod-identity add v předchozím kroku.
Nasaďte
demo.yamldo stejného prostoru názvů jako podem spravovanou identitu pomocíkubectl apply:kubectl apply -f demo.yaml --namespace $POD_IDENTITY_NAMESPACEOvěřte úspěšné spuštění ukázkové aplikace pomocí
kubectl logs:kubectl logs demo --follow --namespace $POD_IDENTITY_NAMESPACEOvěřte, že protokoly ukazují úspěšné získání tokenu a zda je operace požadavku HTTP GET úspěšná.
... 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 ...
Spuštění aplikace s více identitami
Pokud chcete aplikaci povolit používat více identit, nastavte --binding-selector na stejný selektor při vytváření identit podů.
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
Potom nastavte aadpodidbinding pole v yaml podu na selektor vazby, který jste zadali.
apiVersion: v1
kind: Pod
metadata:
name: demo
labels:
aadpodidbinding: myMultiIdentitySelector
...
Zakázání identity spravované podem v existujícím clusteru
Pokud chcete zakázat použití identity spravované podem v existujícím clusteru, odeberte tyto identity z clusteru spuštěním následujícího příkazu:
az aks pod-identity delete --name ${POD_IDENTITY_NAME} --namespace ${POD_IDENTITY_NAMESPACE} --resource-group myResourceGroup --cluster-name myAKSClusterPotom tuto funkci v clusteru zakažte spuštěním následujícího příkazu:
az aks update --resource-group myResourceGroup --name myAKSCluster --disable-pod-identity
Vyčistěte zdroje
Chcete-li z clusteru odebrat identitu spravovanou podem Microsoft Entra, odeberte nejprve z clusteru tuto identitu spravovanou podem a poté ukázkovou aplikaci.
kubectl delete pod demo --namespace $POD_IDENTITY_NAMESPACE
Poté odstraňte identitu a přiřazení role spojené s identitou clusteru.
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"
Další kroky
Další informace o spravovaných identitách najdete v tématu Spravované identity pro prostředky Azure.