Microsoft Entra Workload-ID gebruiken met Azure Kubernetes Service (AKS)
Voor workloads die zijn geïmplementeerd op een AKS-cluster (Azure Kubernetes Services) zijn microsoft Entra-toepassingsreferenties of beheerde identiteiten vereist voor toegang tot met Microsoft Entra beveiligde resources, zoals Azure Key Vault en Microsoft Graph. Microsoft Entra Workload-ID integreert met de mogelijkheden die systeemeigen zijn voor Kubernetes om te federeren met externe id-providers.
Microsoft Entra Workload-ID gebruikt projectie van het tokenvolume van het serviceaccount (een serviceaccount) om pods in staat te stellen een Kubernetes-identiteit te gebruiken. Een Kubernetes-token wordt uitgegeven en OIDC-federatie stelt Kubernetes-toepassingen in staat om veilig toegang te krijgen tot Azure-resources met Microsoft Entra-id, op basis van geannoteerde serviceaccounts.
Microsoft Entra Workload-ID werkt vooral goed met de Azure Identity-clientbibliotheken of de msal-verzameling (Microsoft Authentication Library) samen met toepassingsregistratie. Uw workload kan elk van deze bibliotheken gebruiken om azure-cloudresources naadloos te verifiëren en te openen.
Dit artikel helpt u inzicht te krijgen in Microsoft Entra Workload-ID en bekijkt de beschikbare opties voor het plannen van uw projectstrategie en potentiële migratie van door Microsoft Entra beheerde identiteit.
Notitie
U kunt serviceconnector gebruiken om bepaalde stappen automatisch te configureren. Zie ook: Wat is serviceconnector?
Afhankelijkheden
- AKS ondersteunt Microsoft Entra Workload-ID op versie 1.22 en hoger.
- Azure CLI versie 2.47.0 of hoger. Voer
az --version
deze uit om de versie te vinden en voer deze uitaz upgrade
om de versie te upgraden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Azure Identity-clientbibliotheken
Kies in de Azure Identity-clientbibliotheken een van de volgende methoden:
- Gebruik
DefaultAzureCredential
, waarmee wordt geprobeerd deWorkloadIdentityCredential
. - Maak een
ChainedTokenCredential
exemplaar metWorkloadIdentityCredential
. - Rechtstreeks gebruiken
WorkloadIdentityCredential
.
De volgende tabel bevat de minimale pakketversie die vereist is voor de clientbibliotheek van elk taalecosysteem.
Ecosysteem | Bibliotheek | Minimumversie |
---|---|---|
.NET | Azure.Identity | 1.9.0 |
C++ | azure-identity-cpp | 1.6.0 |
Go | azidentity | 1.3.0 |
Java | azure-identity | 1.9.0 |
Node.js | @azure/identiteit | 3.2.0 |
Python | azure-identity | 1.13.0 |
In de volgende codevoorbeelden wordt DefaultAzureCredential
gebruikgemaakt. Dit referentietype maakt gebruik van de omgevingsvariabelen die door de Azure Workload Identity zijn geïnjecteerd om de webhook te dempen voor verificatie met Azure Key Vault.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
string keyVaultUrl = Environment.GetEnvironmentVariable("KEYVAULT_URL");
string secretName = Environment.GetEnvironmentVariable("SECRET_NAME");
var client = new SecretClient(
new Uri(keyVaultUrl),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync(secretName);
Microsoft Authentication Library (MSAL)
De volgende clientbibliotheken zijn de minimale versie die vereist is.
Ecosysteem | Bibliotheek | Afbeelding | Opmerking | Heeft Windows |
---|---|---|---|---|
.NET | Microsoft Authentication Library-for-dotnet | ghcr.io/azure/azure-workload-identity/msal-net:latest |
Koppeling | Ja |
Go | Microsoft Authentication Library-for-go | ghcr.io/azure/azure-workload-identity/msal-go:latest |
Koppeling | Ja |
Java | Microsoft Authentication Library-for-java | ghcr.io/azure/azure-workload-identity/msal-java:latest |
Koppeling | Nee |
JavaScript | Microsoft Authentication Library-for-js | ghcr.io/azure/azure-workload-identity/msal-node:latest |
Koppeling | Nee |
Python | Microsoft Authentication Library-for-python | ghcr.io/azure/azure-workload-identity/msal-python:latest |
Koppeling | Nee |
Beperkingen
- U kunt maximaal 20 federatieve identiteitsreferenties per beheerde identiteit hebben.
- Het duurt een aantal seconden voordat de federatieve identiteitsreferentie wordt doorgegeven nadat deze in eerste instantie is toegevoegd.
- De virtuele knooppunten worden niet ondersteund op basis van het opensource-project Virtual Kubelet.
- Het maken van federatieve identiteitsreferenties wordt niet ondersteund voor door de gebruiker toegewezen beheerde identiteiten in deze regio's.
Hoe het werkt
In dit beveiligingsmodel fungeert het AKS-cluster als de tokenverlener. Microsoft Entra ID maakt gebruik van OpenID Connect om sleutels voor openbare ondertekening te detecteren en de echtheid van het serviceaccounttoken te verifiëren voordat u het uitwisselt voor een Microsoft Entra-token. Uw workload kan een serviceaccounttoken uitwisselen dat is geprojecteerd naar het volume voor een Microsoft Entra-token met behulp van de Azure Identity-clientbibliotheek of de Microsoft Authentication Library (MSAL).
In de volgende tabel worden de vereiste eindpunten voor OIDC-verleners voor Microsoft Entra Workload-ID beschreven:
Eindpunt | Beschrijving |
---|---|
{IssuerURL}/.well-known/openid-configuration |
Ook wel bekend als het OIDC-detectiedocument. Dit bevat de metagegevens over de configuraties van de verlener. |
{IssuerURL}/openid/v1/jwks |
Dit bevat de openbare ondertekeningssleutel(s) die door Microsoft Entra ID worden gebruikt om de echtheid van het serviceaccounttoken te verifiëren. |
In het volgende diagram ziet u een overzicht van de verificatiereeks met behulp van OpenID Connect.
Automatische rotatie van webhookcertificaat
Net als bij andere webhook-invoegtoepassingen wordt het certificaat geroteerd door de automatische rotatiebewerking van het clustercertificaat.
Serviceaccountlabels en aantekeningen
Microsoft Entra Workload-ID ondersteunt de volgende toewijzingen met betrekking tot een serviceaccount:
- Een-op-een, waarbij een serviceaccount verwijst naar een Microsoft Entra-object.
- Veel-op-een, waarbij meerdere serviceaccounts verwijzen naar hetzelfde Microsoft Entra-object.
- Een-op-veel, waarbij een serviceaccount verwijst naar meerdere Microsoft Entra-objecten door de aantekening van de client-id te wijzigen. Zie Meerdere identiteiten federeren met een Kubernetes-serviceaccount voor meer informatie.
Notitie
Als de aantekeningen van het serviceaccount worden bijgewerkt, moet u de pod opnieuw starten om de wijzigingen van kracht te laten worden.
Als u een door Microsoft Entra-pod beheerde identiteit hebt gebruikt, kunt u een serviceaccount beschouwen als een Azure-beveiligingsprincipaal, behalve dat een serviceaccount deel uitmaakt van de Kubernetes-kern-API in plaats van een AANGEPASTe resourcedefinitie (CRD). In de volgende secties wordt een lijst met beschikbare labels en aantekeningen beschreven die kunnen worden gebruikt om het gedrag te configureren bij het uitwisselen van het serviceaccounttoken voor een Microsoft Entra-toegangstoken.
Aantekeningen voor serviceaccounts
Alle aantekeningen zijn optioneel. Als de aantekening niet is opgegeven, wordt de standaardwaarde gebruikt.
Annotatie | Beschrijving | Standaard |
---|---|---|
azure.workload.identity/client-id |
Vertegenwoordigt de Microsoft Entra-toepassing client-id die moet worden gebruikt met de pod. |
|
azure.workload.identity/tenant-id |
Vertegenwoordigt de Azure-tenant-id waar de De Microsoft Entra-toepassing is geregistreerd. |
AZURE_TENANT_ID omgevingsvariabele geëxtraheerd van azure-wi-webhook-config ConfigMap. |
azure.workload.identity/service-account-token-expiration |
Vertegenwoordigt het expirationSeconds veld voor deprojected service account token. Het is een optioneel veld dat u configureert om downtime te voorkomen veroorzaakt door fouten tijdens het vernieuwen van het serviceaccounttoken. Het verlopen van het token van het Kubernetes-serviceaccount is niet gecorreleerd met Microsoft Entra-tokens. Microsoft Entra-tokens verlopen binnen 24 uur nadat ze zijn uitgegeven. |
3600 Ondersteund bereik is 3600-86400. |
Podlabels
Notitie
Voor toepassingen die workloadidentiteit gebruiken, is het vereist om het label azure.workload.identity/use: "true"
toe te voegen aan de podspecificatie voor AKS om de workloadidentiteit te verplaatsen naar een scenario met fail close om een consistent en betrouwbaar gedrag te bieden voor pods die workloadidentiteit moeten gebruiken. Anders mislukken de pods nadat ze opnieuw zijn opgestart.
Etiket | Beschrijving | Aanbevolen waarde | Vereist |
---|---|---|---|
azure.workload.identity/use |
Dit label is vereist in de sjabloonspecificatie voor pods. Alleen pods met dit label worden gedempt door de azure-workload-identity waarmee de toegangswebhook wordt gedempt om de specifieke Omgevingsvariabelen van Azure en het geprojecteerde tokenvolume van het serviceaccount te injecteren. | true | Ja |
Podaantekeningen
Alle aantekeningen zijn optioneel. Als de aantekening niet is opgegeven, wordt de standaardwaarde gebruikt.
Annotatie | Beschrijving | Standaard |
---|---|---|
azure.workload.identity/service-account-token-expiration |
Vertegenwoordigt het expirationSeconds veld voor het projected serviceaccounttoken. Het is een optioneel veld dat u configureert om downtime te voorkomen die wordt veroorzaakt door fouten tijdens het vernieuwen van het serviceaccounttoken. Het verlopen van het token van het Kubernetes-serviceaccount is niet gecorreleerd met Microsoft Entra-tokens. Microsoft Entra-tokens verlopen binnen 24 uur nadat ze zijn uitgegeven. 1 |
3600 Ondersteund bereik is 3600-86400. |
azure.workload.identity/skip-containers |
Vertegenwoordigt een door puntkomma's gescheiden lijst met containers om het toevoegen van een projected serviceaccounttokenvolume over te slaan. Bijvoorbeeld: container1;container2 . |
Standaard wordt het tokenvolume van het geprojecteerde serviceaccount toegevoegd aan alle containers als het serviceaccount is gelabeld met azure.workload.identity/use: true . |
azure.workload.identity/inject-proxy-sidecar |
Hiermee injecteert u een init-container en proxy-sidecar in de pod. De proxy-sidecar wordt gebruikt voor het onderscheppen van tokenaanvragen voor IMDS en het verkrijgen van een Microsoft Entra-token namens de gebruiker met federatieve identiteitsreferenties. | true |
azure.workload.identity/proxy-sidecar-port |
Vertegenwoordigt de poort van de proxy-sidecar. | 8000 |
1 Heeft voorrang als het serviceaccount ook een aantekening heeft.
Migreren naar Microsoft Entra Workload-ID
Op een cluster waarop al een door pod beheerde identiteit wordt uitgevoerd, kunt u deze configureren voor het gebruik van workloadidentiteit op twee manieren. Met de eerste optie kunt u dezelfde configuratie gebruiken die u hebt geïmplementeerd voor door pods beheerde identiteit. U kunt aantekeningen toevoegen aan het serviceaccount in de naamruimte met de identiteit om Microsoft Entra Workload-ID in te schakelen en de aantekeningen in de pods in te voeren.
De tweede optie is het herschrijven van uw toepassing voor het gebruik van de nieuwste versie van de Azure Identity-clientbibliotheek.
Om het migratieproces te stroomlijnen en te vereenvoudigen, hebben we een migratie-sidecar ontwikkeld waarmee de IMDS-transacties die uw toepassing uitvoert, worden geconverteerd naar OpenID Connect (OIDC). De sidecar van de migratie is niet bedoeld als een langetermijnoplossing, maar een manier om snel aan de slag te gaan met workloadidentiteit. Door de migratie-sidecar in uw toepassing uit te voeren, worden de IMDS-transacties van de toepassing naar OIDC uitgevoerd. U kunt ook upgraden naar een ondersteunde versie van de Azure Identity-clientbibliotheek , die ondersteuning biedt voor OIDC-verificatie.
De volgende tabel bevat een overzicht van onze aanbevelingen voor migratie of implementatie voor de workloadidentiteit.
Scenario | Beschrijving |
---|---|
Nieuwe of bestaande clusterimplementatie voert een ondersteunde versie van de Azure Identity-clientbibliotheek uit | Er zijn geen migratiestappen vereist. Voorbeeldimplementatieresources: Workloadidentiteit implementeren en configureren op een nieuw cluster |
Nieuwe of bestaande clusterimplementatie voert een niet-ondersteunde versie van de Azure Identity-clientbibliotheek uit | Werk containerinstallatiekopieën bij om een ondersteunde versie van de Azure Identity SDK te gebruiken of gebruik de migratie-sidecar. |
Volgende stappen
- Zie Toepassingsverificatie moderniseren met workloadidentiteit voor meer informatie over het instellen van uw pod voor verificatie met behulp van een workloadidentiteit als migratieoptie.
- Zie Een AKS-cluster implementeren en configureren met workloadidentiteit, waarmee u een Azure Kubernetes Service-cluster kunt implementeren en configureren om een voorbeeldtoepassing te configureren voor het gebruik van een workloadidentiteit.
Azure Kubernetes Service