Identitetsbindningar för Azure Kubernetes Service (AKS)

Identitetsbindning är en funktion för Azure Kubernetes Service (AKS) som utökar den befintliga funktionen för arbetsbelastningsidentitet för att hantera skalningsbegränsningar kring federerade identitetsautentiseringsuppgifter (FICs) för användartilldelade hanterade identiteter (UAMIs). Med arbetsbelastningsidentitet för AKS kan en enda UAMI inte ha fler än 20 FIC:er. Stora Kubernetes-plattformsdistributioner kan omfatta fler än 20 kluster (varje kluster har en unik utfärdare) eller ha många <namespace, service-account> kombinationer som kräver mappning till samma UAMI, vilket uttömmer FIC-kvoten.

Identitetsbindningar hanterar den här begränsningen genom att tillåta att flera AKS-kluster delar samma UAMI med hjälp av en enda FIC per UAMI. Den här metoden ökar avsevärt skalbarheten och förenklar åtgärder för storskaliga AKS-miljöer som kräver Microsoft Entra-autentisering.

Vad är en identitetsbindning?

En identitetsbindning är en resursmappning mellan ett UAMI - och ett AKS-kluster med arbetsbelastningar som behöver Microsoft Entra-autentisering med den identiteten.

Anta att du har en UAMI, MI-1, som behövs för arbetsbelastningar som körs i kluster AKS-cluster-1, AKS-cluster-2 och AKS-cluster-3. Du kan skapa tre identitetsbindningar för att mappa MI-1 till vart och ett av dessa kluster:

  • Identitetsbindning IB-A mappning MI-1 till AKS-cluster-1.
  • Identitetsbindning IB-B mappning MI-1 till AKS-cluster-2.
  • Identitetsbindning IB-C mappning MI-1 till AKS-cluster-3.

Även om samma UAMI behövs i flera kluster skapas endast en federerad identitetsautentiseringsuppgift per UAMI, vilket tar upp den tidigare 20 FIC-begränsningen. När du skapar en identitetsbindning skapar AKS automatiskt (eller återanvänder) den enda FIC:n för den UAMI:n. Följande diagram illustrerar skillnaderna mellan den tidigare arbetsbelastningsidentitetsmodellen och den nya modellen för identitetsbindningar:

Skärmbild av två diagram, där det ena visar identitetsbindningar som mappar en UAMI till flera AKS-kluster som använder en enda FIC och det andra visar arbetsbelastningsidentitetsmappningar.

När du har skapat identitetsbindningen och UAMI har auktoriserats för klustret måste du definiera ClusterRole och ClusterRoleBinding objekt som anger vilka namnområden och tjänstkonton (detaljerat eller kollektivt) som tillåts använda den hanterade identiteten för anskaffning av Microsoft Entra-token.

Använda identitetsbindningar med Azure Identity-klientbibliotek

Följ dessa steg om du vill använda identitetsbindningar med dina programarbetsbelastningar:

  1. Se till att du använder det lägsta nödvändiga Azure Identity-paketet.
  2. Använd WorkloadIdentityCredential och välj funktionen. Den här funktionen stöds inte i ManagedIdentityCredential eller DefaultAzureCredential.

I följande tabell beskrivs de lägsta paketversionerna och hur du aktiverar identitetsbindningar för varje språk som stöds:

Language Package Minimiversion Så här aktiverar du
.NET Azure.Identity
eller
Azure. Core
endast v1.18.0-beta.3
eller
v1.55.0 eller senare
WorkloadIdentityCredential Identitetsbindningsläge är inaktiverat som standard. Ställ in WorkloadIdentityCredentialOptions.IsAzureProxyEnabled på true.
Go azidentity v1.14.0-beta.3 eller senare Ställ in WorkloadIdentityCredentialOptions.EnableAzureProxy på true.
Java azure-identity v1.19.0-beta.2 eller senare Anropa enableAzureProxy() på WorkloadIdentityCredentialBuilder.
JavaScript @azure/identity 4.14.0-beta.2 eller senare Ange enableAzureProxy till true i WorkloadIdentityCredentialOptions.
python azure-identity 1.26.0b2 eller senare Ange enable_azure_proxy=True i WorkloadIdentityCredential.

Anmärkning

För .NET är stöd för identitetsbindningar endast tillgängligt i Azure. Identity v1.18.0-beta.3 eller, som ett alternativ, i Azure. Core v1.55.0 eller senare. Ingen annan version av Azure. Identiteten innehåller för närvarande den här funktionen.

Vanliga frågor (FAQ)

Krävs identitetslikhet (likhet i namnområde och tjänstkonto) mellan kluster som använder samma UAMI?

Nej. Identitetsbindningar kräver inte namnområdes-/tjänstkontots likhet. Det är upp till klusteroperatorn att uttryckligen auktorisera namnrymder och tjänstkonton i varje kluster som tillåts använda den hanterade identiteten via rollbaserad åtkomstkontroll (RBAC).

Kan jag skapa flera identitetsbindningar för samma UAMI?

Ja. OIDC-utfärdarens URL som underhålls av AKS för den UAMI är densamma för alla identitetskopplingar som hänvisar till samma hanterade identitet.

Vilka behörigheter krävs för att skapa identitetsbindningar?

Nödvändiga Behörigheter för Azure Resource Manager (ARM):

  • Microsoft.ContainerService/managedClusters/identityBindings/*
  • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/*

Anmärkning

När du skapar en identitetsbindning skapar AKS automatiskt en FIC. Om anroparen saknar behörighet att skapa FIC-resurser misslyckas skapandet av identitetsbindningen.

Nödvändiga Kubernetes-behörigheter:

  • Möjlighet att skapa ClusterRole och ClusterRoleBinding objekt (klusteradministratör eller motsvarande).

Vad händer med det automatiskt skapade FIC när du har raderat alla identitetsbindningar för en UAMI?

Det finns ingen automatisk minnesrensning av FIC idag när den sista identitetsbindningen som refererar till en UAMI tas bort. Operatörer bör rensa FIC manuellt först efter att ha verifierat att alla identitetsbindningar för den UAMI har tagits bort för att undvika att störa kvarvarande beroenden.

Vilka nätverkskrav finns för identitetsbindningar?

Tidigare krävdes utgående arbetsbelastningsidentitet så att login.microsoftonline.com arbetsbelastningar kunde byta tjänstkontotoken mot Microsoft Entra-åtkomsttoken. Med identitetsbindningar dirigerar tokenutbytesbegäranden via en klusterspecifik identitetsbindningsproxy som drivs av AKS. Direkt utförande till login.microsoftonline.com för tokenutbyte krävs inte.

Vilka begränsningar finns för identitetsbindningar?

Identitetsbindningar stöds ännu inte i kluster som konfigurerats med integrering av virtuella API-servernätverk.