Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Arbetsbelastningar som distribueras i ett AKS-kluster kräver autentiseringsuppgifter för Microsoft Entra-program eller hanterade identiteter för åtkomst till Microsoft Entra-skyddade resurser, till exempel Azure Key Vault och Microsoft Graph. Microsoft Entra-arbetsbelastnings-ID integreras med funktioner som är inbyggda i Kubernetes för att federera med externa identitetsprovidrar, så att du kan tilldela arbetsbelastningsidentiteter till dina arbetsbelastningar för att autentisera och komma åt andra tjänster och resurser.
Anteckning
Workload ID omfattar identitetsscenariot pod-to-Azure i AKS – hur applikationer som körs i poddar autentiserar sig mot tjänster som skyddas av Microsoft Entra. På AKS Automatic är arbetsbelastningsidentiteten med Microsoft Entra Workload ID och OIDC-klusterutfärdaren förkonfigurerad som standard – ingen konfiguration på klusternivå krävs. På AKS Standard aktiverar och konfigurerar du arbetsbelastningsidentitet separat. De andra identitetsscenarierna (kontrollplansautentisering och auktorisering samt kluster-till-Azure-hanterade identiteter) finns i Åtkomst- och identitetsalternativ för AKS.
Tip
Om du använder ett AKS-automatiskt kluster förkonfigureras arbetsbelastningsidentiteten med Microsoft Entra Workload ID och OIDC-klusterutfärdaren som standard. Du kan hoppa över konfigurationen på klusternivå och gå direkt till att konfigurera ditt program för att använda en arbetsbelastningsidentitet. Mer information om säkerhetsstandarder för AKS Automatic finns i Vad är Azure Kubernetes Service Automatisk?
Microsoft Entra Workload ID använder volymprojektion för tjänstkontotoken för att göra det möjligt för poddar att använda en Kubernetes-identitet. En Kubernetes-token utfärdas och OIDC-federationen (OpenID Connect) gör det möjligt för Kubernetes-program att komma åt Azure-resurser på ett säkert sätt med Microsoft Entra-ID, baserat på kommenterade tjänstkonton.
Du kan använda Microsoft Entra-arbetsbelastnings-ID med Azure Identity-klientbibliotek eller MSAL-samlingen ( Microsofts autentiseringsbibliotek ) tillsammans med programregistrering för att smidigt autentisera och komma åt Azure-molnresurser.
Anteckning
Du kan använda Service Connector för att konfigurera vissa steg automatiskt. Mer information finns i Vad är Service Connector?
Förutsättningar
AKS automatiska kluster
I AKS Automatic-kluster är arbetsbelastningsidentitet och OIDC-utfärdaren för klustret förkonfigurerade som en del av klustrets standardsäkerhetsinställningar. Ingen konfiguration på klusternivå krävs innan du använder workload-identitet i dina poddar. Fortsätt direkt till att konfigurera ditt program.
AKS-standardkluster
- AKS stöder Microsoft Entra-arbetsbelastnings-ID på version 1.22 och senare.
- Azure CLI version 2.47.0 eller senare. Kör
az --versionför att hitta versionen och köraz upgradeför att uppgradera versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. - Du måste aktivera arbetsbelastningsidentiteten och OIDC-utfärdaren i klustret innan dina poddar kan använda arbetsbelastningsidentitet. Se Distribuera och konfigurera arbetsbelastningsidentitet i ett AKS-kluster.
Begränsningar
- Du kan ha högst 20 federerade identitetsuppgifter per hanterad identitet.
- Det tar några sekunder innan den federerade identitetsautentiseringsuppgiften sprids efter att den först har lagts till.
- Tillägget virtuella noder , baserat på projektet Virtual Kubelet med öppen källkod, stöds inte.
- Skapande av federerade identitetsuppgifter stöds inte för användartilldelade hanterade identiteter i dessa regioner.
Azure Identity-klientbibliotek
I Azure Identity-klientbiblioteken väljer du någon av följande metoder:
- Använd
DefaultAzureCredential, som försöker användaWorkloadIdentityCredential. - Skapa en
ChainedTokenCredentialinstans som innehållerWorkloadIdentityCredential. - Använd
WorkloadIdentityCredentialdirekt.
När du begär token med WorkloadIdentityCredential, anger du omfång i Microsoft Entra ID v2-formatet <resource>/.default till exempel https://management.azure.com/.default. En rå resurs-URI, till exempel https://management.azure.com/, kan misslyckas eftersom workloadidentitet använder Microsoft Entra v2-token-slutpunkten i stället för IMDS-resourceflödet som används av hanterad identitet. Mer information om hur scope fungerar i v2-slutpunkten för token finns i Hämta en token.
Följande tabell innehåller den lägsta paketversion som krävs för varje språkekosystems klientbibliotek:
| Ekosystem | Bibliotek | Minimiversion |
|---|---|---|
| .NÄT | Azure.Identity | 1.9.0 |
| C++ | azure-identity-cpp | 1.6.0 |
| Gå | azidentity | 1.3.0 |
| Java | azure-identity | 1.9.0 |
| Node.js | @azure/identity | 3.2.0 |
| Python | azure-identity | 1.13.0 |
Kodexempel för Azure Identity-klientbibliotek
Följande kodexempel använder DefaultAzureCredential. Den här typen av autentiseringsuppgifter använder miljövariablerna som injiceras av arbetsbelastningsidentitetens muterande webhook för att autentisera med Azure Key Vault. Om du vill se exempel med någon av de andra metoderna kan du läsa de ekosystemspecifika klientbiblioteken.
Ersätt <key-vault-url> och <secret-name> med lämpliga värden för din Key Vault och hemlighet.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
string keyVaultUrl = Environment.GetEnvironmentVariable("<key-vault-url>");
string secretName = Environment.GetEnvironmentVariable("<secret-name>");
var client = new SecretClient(
new Uri(keyVaultUrl),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync(secretName);
Microsofts autentiseringsbibliotek (MSAL)
Följande klientbibliotek är den lägsta version som krävs:
| Ekosystem | Bibliotek | Bild | Exempel | Har Windows |
|---|---|---|---|---|
| .NÄT | Microsofts autentiseringsbibliotek-for-dotnet | ghcr.io/azure/azure-workload-identity/msal-net:latest |
Länk | Ja |
| Gå | Microsofts autentiseringsbibliotek for Go | ghcr.io/azure/azure-workload-identity/msal-go:latest |
Länk | Ja |
| Java | Microsofts autentiseringsbibliotek-for-java | ghcr.io/azure/azure-workload-identity/msal-java:latest |
Länk | Nej |
| JavaScript | Microsofts autentiseringsbibliotek-for-js | ghcr.io/azure/azure-workload-identity/msal-node:latest |
Länk | Nej |
| Python | Microsofts autentiseringsbibliotek-for-python | ghcr.io/azure/azure-workload-identity/msal-python:latest |
Länk | Nej |
Hur det fungerar
I den här säkerhetsmodellen fungerar AKS-klustret som tokenutfärdare. Microsoft Entra ID använder OIDC för att identifiera offentliga signeringsnycklar och verifiera autenticiteten för tjänstkontotoken innan du utbyter den mot en Microsoft Entra-token. Ditt arbetsflöde kan byta ut en tjänstkontotoken som används i dess volym mot en Microsoft Entra-token med hjälp av Azure Identity client library eller MSAL.
I följande tabell beskrivs de nödvändiga OIDC-utfärdarslutpunkterna för Microsoft Entra-arbetsbelastnings-ID:
| Slutpunkt | beskrivning |
|---|---|
{IssuerURL}/.well-known/openid-configuration |
Kallas även för OIDC-identifieringsdokumentet. Detta innehåller metadata om utfärdarens konfigurationer. |
{IssuerURL}/openid/v1/jwks |
Detta innehåller de offentliga signeringsnycklar som Microsoft Entra-ID använder för att verifiera autenticiteten för tjänstkontotoken. |
Följande diagram sammanfattar autentiseringssekvensen med OIDC:
Automatisk rotation av Webhook-certifikat
På samma sätt som andra webhook-tillägg roterar åtgärden automatisk rotation av klustercertifikatet certifikatet för workload identity-webhooken.
Tjänstkontoetiketter och anteckningar
Microsoft Entra-arbetsbelastnings-ID stöder följande mappningar relaterade till ett tjänstkonto:
- En-till-en, där ett tjänstkonto refererar till ett Microsoft Entra-objekt.
- Många-till-en, där flera tjänstkonton refererar till samma Microsoft Entra-objekt.
- En-till-många, där ett tjänstkonto refererar till flera Microsoft Entra-objekt genom att ändra klient-ID-annoteringen. Mer information finns i Så här federerar du flera identiteter med ett Kubernetes-tjänstkonto.
Anteckning
Om du uppdaterar anteckningarna för tjänstkontot måste du starta om podden för att ändringarna ska börja gälla.
Om du har använt Microsoft Entra-poddhanterad identitet bör du tänka på ett tjänstkonto som ett Azure-säkerhetsobjekt, men ett tjänstkonto är en del av Kubernetes-kärn-API:et i stället för en anpassad resursdefinition (CRD). I följande avsnitt beskrivs en lista över tillgängliga etiketter och anteckningar som du kan använda för att konfigurera beteendet när du utbyter tjänstkontotoken mot en Microsoft Entra-åtkomsttoken.
Anteckningar för tjänstkonto
Alla anteckningar är valfria. Om anteckningen inte har angetts används standardvärdet.
| Anteckning | beskrivning | Standard |
|---|---|---|
azure.workload.identity/client-id |
Representerar Microsoft Entra-programmet klient-ID som ska användas med podden. |
|
azure.workload.identity/tenant-id |
Representerar Azure-klientorganisations-ID:t där Microsoft Entra-programmet är registrerat. |
Miljövariabeln AZURE_TENANT_ID har extraherats från azure-wi-webhook-config ConfigMap. |
azure.workload.identity/service-account-token-expiration |
Representerar fältet expirationSeconds för den projicerade tjänstkontotoken. Det är ett valfritt fält som du konfigurerar för att förhindra avbrott som orsakas av fel vid uppdatering av tjänstkontotoken. Förfallodatum för Kubernetes-tjänstkontotoken korreleras inte med Microsoft Entra-token. Microsoft Entra-token upphör att gälla om 24 timmar efter att de har utfärdats. |
3600 Intervallet som stöds är 3600-86400. |
Poddetiketter
Anteckning
För applikationer som använder Microsoft Entra Workload ID måste du lägga till etiketten azure.workload.identity/use: "true" i poddspecifikationen för AKS för att flytta arbetsbelastningsidentiteten till ett Fail Close-scenario för att tillhandahålla ett konsekvent och tillförlitligt beteende för poddar som behöver använda workload identity. Annars misslyckas poddarna när de har startats om.
| Etikett | beskrivning | Rekommenderat värde | Obligatoriskt |
|---|---|---|---|
azure.workload.identity/use |
Den här etiketten krävs i poddmallsspecifikationen. Endast poddar med den här etiketten muteras av den azure-workload-identity som muterar webhooken för antagning för att mata in azure-specifika miljövariabler och den beräknade volymen för tjänstkontotoken. | true | Ja |
Pod-anmärkningar
Alla anteckningar är valfria. Om anteckningen inte har angetts används standardvärdet.
| Anteckning | beskrivning | Standard |
|---|---|---|
azure.workload.identity/service-account-token-expiration |
Mer information finns i Anteckningar för tjänstkonto . Pod-anteckningar har företräde framför anteckningar för tjänstekonton. | 3600 Intervallet som stöds är 3600-86400. |
azure.workload.identity/skip-containers |
Representerar en semikolonavgränsad lista över containrar för att hoppa över att lägga till den beräknade tokenvolymen för tjänstkontot. Exempel: container1;container2 |
Som standard läggs den beräknade tokenvolymen för tjänstkontot till i alla containrar om podden är märkt med azure.workload.identity/use: true. |
azure.workload.identity/inject-proxy-sidecar |
Infogar en proxy-init-container och en proxy-sidecar i podden. Proxy-sidovagnen används för att fånga upp tokenbegäranden till IMDS och hämta en Microsoft Entra-token åt användaren med federerade identitetsautentiseringsuppgifter. | falskt |
azure.workload.identity/proxy-sidecar-port |
Representerar porten för proxy-sidovagnen. | 8000 |
Använda identitetsbindningar och direkt federation i samma arbetsbelastning
Identitetskopplingar är en funktion i förhandsversion som utökar stödet för arbetsbelastningsidentitet för att stödja storskaliga AKS-miljöer. I stället för att skapa en federerad identitetsautentiseringsuppgift (FIC) för varje kluster låter identitetsbindningar flera kluster dela en enda användartilldelad hanterad identitet via en FIC. När det är aktiverat dirigerar AKS poddtokenbegäranden via en webbhook för identitetsbindningsproxy som hanterar tokenutbyte för arbetsbelastningens räkning.
En projicerad token för tjänstkonto har en enda målgrupp. När identitetsbindningar är aktiverade anger webhooken för identitetsbindning standardtoken som refereras av AZURE_FEDERATED_TOKEN_FILE till målgruppen api://AKSIdentityBinding, som identitetsbindningsproxyn använder.
Direkt Microsoft Entra Workload ID-federering (utan identitetsbindningar) kräver en token med målgruppen api://AzureADTokenExchange. Det går AADSTS700212 inte att återanvända tokenfilen för identitetsbindning för direkt federation eftersom målgruppen för federerade identitetsautentiseringsuppgifter inte matchar tokenpubliken.
Om du vill använda identitetsbindningar för en hanterad identitet och direkt federation för en annan i samma arbetsbelastning, projicerar du en andra tjänstkontotoken med målgruppen api://AzureADTokenExchange och pekar den direkta federationskoden på filen:
apiVersion: v1
kind: Pod
metadata:
name: workload-with-ib-and-direct-fic
labels:
azure.workload.identity/use: "true"
spec:
serviceAccountName: workload-sa
containers:
- name: app
image: <image>
volumeMounts:
- name: direct-fic-token
mountPath: /var/run/secrets/direct-fic
readOnly: true
env:
- name: DIRECT_FIC_TOKEN_FILE
value: /var/run/secrets/direct-fic/token
volumes:
- name: direct-fic-token
projected:
sources:
- serviceAccountToken:
path: token
audience: api://AzureADTokenExchange
expirationSeconds: 3600
Används AZURE_FEDERATED_TOKEN_FILE för identitetsbindningsflödet och den anpassade tokenfilen, till exempel DIRECT_FIC_TOKEN_FILE, för flödet för direkt federerade identitetsautentiseringsuppgifter.
Migrera till Microsoft Entra-arbetsbelastnings-ID
Du kan konfigurera kluster som redan kör en poddhanterad identitet för att använda Microsoft Entra-arbetsbelastnings-ID på något av två sätt:
- Använd samma konfiguration som du implementerade för podhanterad identitet. Du kan annotera tjänstkontot inom namnområdet med identiteten för att aktivera Microsoft Entra Workload-ID och injicera annotationerna i poddarna.
- Skriv om programmet så att det använder den senaste versionen av Azure Identity-klientbiblioteket.
För att effektivisera och underlätta migreringsprocessen har vi utvecklat en sidovagn för migrering som konverterar imds-transaktionerna (Instance Metadata Service) som ditt program gör till OIDC. Migreringssidovagn är inte avsedd att vara en långsiktig lösning, utan ett sätt att komma igång snabbt med Microsoft Entra Workload ID. Genom att köra sidovagnen för migrering inom applikationen förmedlas applikationens IMDS-transaktioner till OIDC. Den alternativa metoden är att uppgradera till en version som stöds av Azure Identity-klientbiblioteket , som stöder OIDC-autentisering.
I följande tabell sammanfattas våra migrerings- eller distributionsrekommendationer för ditt AKS-kluster:
| Scenario | beskrivning |
|---|---|
| Nytt AKS-automatiskt kluster | Workloadidentiteten och OIDC-utfärdaren är förkonfigurerade. Det krävs inga migrerings- eller konfigurationssteg på klusternivå. Konfigurera programmets tjänstkonto och federerade autentiseringsuppgifter och använd sedan klientbiblioteket Azure Identity. |
| Nytt eller befintligt AKS Standard-kluster som kör en version av klientbiblioteket Azure Identity som stöds | Inga migreringssteg krävs. Exempel på distributionsresurser: Distribuera och konfigurera Microsoft Entra-arbetsbelastnings-ID i ett nytt kluster |
| Ny eller befintlig klusterdistribution kör en version av Azure Identity-klientbiblioteket som inte stöds | Uppdatera containeravbildningen så att den använder en stödd version av klientbiblioteket Azure Identity, eller använd sidecar-komponenten för migrering. |
Relaterat innehåll
- Information om hur du konfigurerar podden för att autentisera med hjälp av en arbetsbelastningsidentitet som migreringsalternativ finns i Modernisera programautentisering med Microsoft Entra-arbetsbelastnings-ID.
- Se Distribuera och konfigurera ett AKS-kluster med Microsoft Entra-arbetsbelastnings-ID, som hjälper dig att distribuera ett kluster och konfigurera ett exempelprogram för att använda en arbetsbelastningsidentitet.
- Mer information om AKS Automatics förkonfigurerade säkerhetsstandarder, inklusive arbetsbelastningsidentitet, finns i Vad är Azure Kubernetes Service Automatisk?