Použití ID úloh Microsoft Entra se službou Azure Kubernetes Service (AKS)

Úlohy nasazené v clusteru Azure Kubernetes Services (AKS) vyžadují přihlašovací údaje aplikace Microsoft Entra nebo spravované identity pro přístup k prostředkům chráněným Microsoft Entra, jako je Azure Key Vault a Microsoft Graph. ID úloh Microsoft Entra se integruje s možnostmi nativními pro Kubernetes pro federaci s externími zprostředkovateli identit.

ID úloh Microsoft Entra používá projekci tokenu účtu služby, která umožňuje podům používat identitu Kubernetes (to znamená účet služby). Vystavil se token Kubernetes a federace OIDC umožňuje aplikacím Kubernetes bezpečně přistupovat k prostředkům Azure pomocí ID Microsoft Entra založeného na účtech služby s poznámkami.

ID úloh Microsoft Entra dobře funguje s Klientské knihovny Azure Identity a kolekce Microsoft Authentication Library (MSAL), pokud používáte registraci aplikace. Vaše úloha může k bezproblémovému ověřování a přístupu ke cloudovým prostředkům Azure používat libovolnou z těchto knihoven.

Tento článek vám pomůže pochopit tuto novou funkci ověřování a zkontroluje možnosti, které jsou k dispozici pro plánování strategie projektu a potenciální migrace z identity spravované podem Microsoft Entra.

Poznámka:

Místo ruční konfigurace všech kroků existuje další implementace s názvem Service Připojení or, která vám pomůže automaticky nakonfigurovat některé kroky. Viz také: Co je service Připojení or?

Závislosti

  • AKS podporuje ID úloh Microsoft Entra ve verzi 1.22 a vyšší.
  • Azure CLI verze 2.47.0 nebo novější. Spuštěním příkazu vyhledejte az --version verzi a spusťte az upgrade upgrade verze. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Klientské knihovny Azure Identity

V klientských knihovnách Azure Identity zvolte jeden z následujících přístupů:

  • Použijte DefaultAzureCredential, který se pokusí použít WorkloadIdentityCredential.
  • Vytvořte ChainedTokenCredential instanci, která zahrnuje WorkloadIdentityCredential.
  • Použijte WorkloadIdentityCredential přímo.

Následující tabulka obsahuje minimální verzi balíčku potřebnou pro klientskou knihovnu každého jazykového ekosystému.

Ekosystém Knihovna Minimální verze
.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/identita 3.2.0
Python azure-identity 1.13.0

V následujících ukázkách DefaultAzureCredential kódu se používá. Tento typ přihlašovacích údajů používá proměnné prostředí vložené službou Azure Workload Identity mutating webhook k ověření ve službě 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)

Následující klientské knihovny jsou minimální požadovanou verzí.

Ekosystém Knihovna Image Příklad Má Windows
.NET Microsoft Authentication Library-for-dotnet ghcr.io/azure/azure-workload-identity/msal-net:latest Odkaz Ano
Go Microsoft Authentication Library for-go ghcr.io/azure/azure-workload-identity/msal-go:latest Odkaz Ano
Java Microsoft Authentication Library-for-java ghcr.io/azure/azure-workload-identity/msal-java:latest Odkaz No
JavaScript Microsoft Authentication Library-for-js ghcr.io/azure/azure-workload-identity/msal-node:latest Odkaz No
Python Microsoft Authentication Library-for-python ghcr.io/azure/azure-workload-identity/msal-python:latest Odkaz No

Omezení

  • Pro každou spravovanou identitu můžete mít jenom 20 přihlašovacích údajů federované identity.
  • Rozšíření přihlašovacích údajů federované identity po počátečním přidání trvá několik sekund.
  • Virtuální uzly se přidávají na základě opensourcového projektu Virtual Kubelet, nejsou podporované.
  • Vytváření přihlašovacích údajů federované identity se nepodporuje u spravovaných identit přiřazených uživatelem v těchto oblastech.

Jak to funguje

V tomto modelu zabezpečení funguje cluster AKS jako vystavitel tokenu, Id Microsoft Entra používá openID Připojení ke zjišťování veřejných podpisových klíčů a ověření pravosti tokenu účtu služby před výměnou tokenu microsoft Entra. Vaše úloha může vyměnit token účtu služby promítaný na jeho svazek pro token Microsoft Entra pomocí klientské knihovny Azure Identity nebo Microsoft Authentication Library.

Diagram modelu zabezpečení identit úloh AKS

Následující tabulka popisuje požadované koncové body vystavitele OIDC pro ID úloh Microsoft Entra:

Koncový bod Popis
{IssuerURL}/.well-known/openid-configuration Označuje se také jako dokument zjišťování OIDC. Obsahuje metadata o konfiguracích vystavitele.
{IssuerURL}/openid/v1/jwks Obsahuje veřejné podpisové klíče, které Microsoft Entra ID používá k ověření pravosti tokenu účtu služby.

Následující diagram shrnuje posloupnost ověřování pomocí openID Připojení.

Diagram sekvence ověřování OIDC identity úlohy AKS

Automatická obměně certifikátu Webhooku

Podobně jako u jiných doplňků webhooků se certifikát obměňuje operací automatického obměny certifikátu clusteru.

Popisky a poznámky k účtům služby

ID úloh Microsoft Entra podporuje následující mapování související s účtem služby:

  • 1:1, kde účet služby odkazuje na objekt Microsoft Entra.
  • N:1, kde více účtů služeb odkazuje na stejný objekt Microsoft Entra.
  • 1:N, kde účet služby odkazuje na více objektů Microsoft Entra změnou poznámky ID klienta. Další informace najdete v tématu Postup federace více identit pomocí účtu služby Kubernetes.

Poznámka:

Pokud se aktualizují poznámky k účtu služby, je potřeba restartovat pod, aby se změny projevily.

Pokud jste použili identitu spravovanou podem Microsoft Entra, představte si účet služby jako identitu Azure s výjimkou účtu služby, který je součástí základního rozhraní KUBERNEtes API, nikoli vlastní definice prostředků (CRD). Následující článek popisuje seznam dostupných popisků a poznámek, které lze použít ke konfiguraci chování při výměně tokenu účtu služby pro přístupový token Microsoft Entra.

Poznámky k účtu služby

Všechny poznámky jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.

Poznámka Popis Výchozí
azure.workload.identity/client-id Představuje aplikaci Microsoft Entra.
ID klienta, které se má použít s podem.
azure.workload.identity/tenant-id Představuje ID tenanta Azure, ve kterém je
Aplikace Microsoft Entra je zaregistrovaná.
extrahovaná proměnná prostředí AZURE_TENANT_ID
z azure-wi-webhook-config objektu ConfigMap.
azure.workload.identity/service-account-token-expiration expirationSeconds Představuje pole pro
promítaný token účtu služby. Jedná se o volitelné pole, které nakonfigurujete tak, aby se zabránilo výpadkům.
způsobené chybami při aktualizaci tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší za 24 hodin po jejich vydání.
3600
Podporovaný rozsah je 3600–86400.

Popisky podů

Poznámka:

U aplikací, které používají identitu úloh, je potřeba přidat popisek azure.workload.identity/use: "true" do specifikace podu pro AKS, aby se identita úlohy přesunula do scénáře selhání a poskytovala konzistentní a spolehlivé chování podů, které potřebují používat identitu úloh. V opačném případě se pody po restartování nezdaří.

Štítek Popis Doporučená hodnota Požaduje se
azure.workload.identity/use Tento popisek je vyžadován ve specifikaci šablony podu. Webhook s identitou azure-workload ztlumí pouze pody s tímto popiskem, které vloží proměnné prostředí Azure a svazek tokenu účtu projektované služby. true Ano

Poznámky podů

Všechny poznámky jsou volitelné. Pokud není zadána poznámka, použije se výchozí hodnota.

Poznámka Popis Výchozí
azure.workload.identity/service-account-token-expiration expirationSeconds Představuje pole pro token účtu projektované služby. Jedná se o volitelné pole, které nakonfigurujete tak, aby se zabránilo výpadkům způsobeným chybami během aktualizace tokenu účtu služby. Vypršení platnosti tokenu účtu služby Kubernetes neodpovídá tokenům Microsoft Entra. Platnost tokenů Microsoft Entra vyprší za 24 hodin po jejich vydání. 1 3600
Podporovaný rozsah je 3600–86400.
azure.workload.identity/skip-containers Představuje seznam kontejnerů oddělených středníkem, který přeskočí přidání svazku tokenu účtu služby s projektem. Například container1;container2. Ve výchozím nastavení se do všech kontejnerů přidá svazek tokenu pro projektovaný účet služby, pokud je účet služby označený azure.workload.identity/use: true.
azure.workload.identity/inject-proxy-sidecar Vloží do podu inicializační kontejner proxy serveru a sajdkár proxy serveru. Proxy sajdkára se používá k zachycení žádostí o token na IMDS a získání tokenu Microsoft Entra jménem uživatele s přihlašovacími údaji federované identity. true
azure.workload.identity/proxy-sidecar-port Představuje port proxy sajdkáře. 8000

1 Má přednost, pokud je také účet služby opatřen poznámkami.

Jak migrovat na identitu úloh

V clusteru, na kterém už běží identita spravovaná podem, můžete ji nakonfigurovat tak, aby používala identitu úloh jedním ze dvou způsobů. První možnost umožňuje použít stejnou konfiguraci, kterou jste v současnosti implementovali pro identitu spravovanou podem. Stačí přidat poznámky k účtu služby v rámci oboru názvů s identitou a umožní identitě úloh vložit poznámky do podů.

Druhou možností je přepsat aplikaci tak, aby používala nejnovější verzi klientské knihovny Azure Identity.

Abychom usnadnili a usnadnili proces migrace, vyvinuli jsme sajdkár migrace, který převádí transakce IMDS, které vaše aplikace provádí, na OpenID Připojení (OIDC). Sajdkárna migrace není určená jako dlouhodobé řešení, ale způsob, jak rychle začít pracovat s identitou úloh. Spuštěním sajdkáře migrace v proxy vaší aplikace se transakce IMDS aplikace přepne na OIDC. Alternativním přístupem je upgrade na podporovanou verzi klientské knihovny Azure Identity , která podporuje ověřování OIDC.

Následující tabulka shrnuje naše doporučení pro migraci nebo nasazení pro identitu úloh.

Scénář Popis
Nové nebo existující nasazení clusteru spouští podporovanou verzi klientské knihovny Azure Identity. Nevyžadují se žádné kroky migrace.
Ukázkové prostředky nasazení:
- Nasazení a konfigurace identity úloh v novém clusteru
- Kurz: Použití identity úlohy s aplikací v AKS
Nové nebo existující nasazení clusteru spouští nepodporovanou verzi klientské knihovny Azure Identity. Aktualizujte image kontejneru tak, aby používala podporovanou verzi sady Azure Identity SDK, nebo použijte sajdkáru migrace.

Další kroky