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

Úlohy nasazené v clusteru 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. Microsoft Entra Workload ID se integruje s funkcemi nativními pro Kubernetes, které se federují s externími poskytovateli identity, což umožňuje přiřadit identity úloh vašim úlohám pro ověřování a přístup k dalším službám a prostředkům.

Poznámka:

ID úlohy se zabývá scénářem identity pod-to-Azure v AKS – jak se aplikace spuštěné v podech ověřují ve službách chráněných Microsoft Entra. Další scénáře identit (ověřování a autorizace roviny řízení a spravované identity mezi clustery a Azure) najdete v tématu Možnosti přístupu a identit pro AKS.

Microsoft Entra Workload ID používá Service Account Token Volume Projection (nebo service account), aby pody mohly používat identitu Kubernetes. Vystavil se token Kubernetes a federace OpenID Connect (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 úlohy Microsoft Entra můžete použít s klientskými knihovnami Azure Identity nebo kolekcí Microsoft Authentication Library (MSAL) společně s registrací aplikací k bezproblémovému ověřování a přístupu ke cloudovým prostředkům Azure.

Poznámka:

Pomocí konektoru Service Connector můžete automaticky nakonfigurovat některé kroky. Další informace najdete v tématu Co je Service Connector?

Požadavky

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

Omezení

  • Pro každou spravovanou identitu můžete mít maximálně 20 přihlašovacích údajů federované identity.
  • Rozšíření údajů o federované identitě po počátečním přidání trvá několik sekund.
  • Doplněk virtuálních uzlů založený na opensourcovém projektu Virtual Kubelet není podporovaný.
  • Vytváření přihlašovacích údajů federované identity se v těchto oblastech nepodporuje u spravovaných identit přiřazených uživatelem.

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
platforma .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

Ukázky kódu klientské knihovny Azure Identity

Následující ukázky kódu používají .DefaultAzureCredential Tento typ přihlašovacích údajů používá proměnné prostředí vložené mutující webhook identitou úlohy k ověření identity pomocí služby Azure Key Vault. Pokud chcete zobrazit ukázky pomocí některého z dalších přístupů, podívejte se na klientské knihovny specifické pro ekosystém.

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);

Microsoft Authentication Library (MSAL)

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

Ekosystém Knihovna Obrázek Příklad Má Windows
platforma .NET Knihovna Microsoft Authentication pro platformu .NET ghcr.io/azure/azure-workload-identity/msal-net:latest Odkaz Ano
Go Microsoft Authentication Library pro 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 Ne
JavaScript Microsoft Authentication Library-for-js ghcr.io/azure/azure-workload-identity/msal-node:latest Odkaz Ne
Python Microsoft Authentication Library-for-python ghcr.io/azure/azure-workload-identity/msal-python:latest Odkaz Ne

Jak to funguje

V tomto modelu zabezpečení funguje cluster AKS jako vystavitel tokenu. Microsoft Entra ID používá OIDC ke zjišťování veřejných podpisových klíčů a ověření pravosti tokenu účtu služby před výměnou za token Microsoft Entra. Vaše pracovní zátěž může vyměnit token účtu služby promítnutý do jeho svazku za token Microsoft Entra pomocí klientské knihovny Azure Identity nebo MSAL.

Diagram modelu zabezpečení ID úloh AKS Microsoft Entra

Následující tabulka popisuje požadované koncové body identifikátoru OIDC pro Microsoft Entra Workload ID:

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í OIDC:

Diagram sekvence ověřování AKS Microsoft Entra Workload ID OIDC

Automatická obměna certifikátu Webhook

Podobně jako jiné doplňky webhooku, operace automatické rotace certifikátu clusteru obměňuje certifikát.

Popisky a poznámky ke služebním účtům

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.
  • Jeden-na-mnoho, kde účet služby změnou poznámky ID klienta odkazuje na více objektů Microsoft Entra. Další informace najdete v tématu Postup federace více identit pomocí účtu služby Kubernetes.

Poznámka:

Pokud aktualizujete anotace účtu služby, musíte restartovat pod, aby se změny projevily.

Pokud jste použili identitu spravovanou podem Microsoft Entra, představte si služební účet jako bezpečnostní subjekt Azure, s tím rozdílem, že služební účet je součástí základního rozhraní Kubernetes API, nikoli vlastní definice prostředku (CRD). Následující části popisují seznam dostupných popisků a poznámek, které můžete 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é má být použito s podem.
azure.workload.identity/tenant-id Představuje ID tenanta Azure.
Aplikace Microsoft Entra je zaregistrovaná.
extrahovaná proměnná prostředí AZURE_TENANT_ID
z azure-wi-webhook-config ConfigMapu.
azure.workload.identity/service-account-token-expiration Představuje pole expirationSeconds pro token účtu plánované 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í. 3600
Podporovaný rozsah je 3600–86400.

Popisky modulů

Poznámka:

U aplikací, které používají ID úlohy Microsoft Entra, je nutné 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 úlohy. 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 štítek je vyžadován ve specifikaci šablony podu. Pouze pody s tímto štítkem jsou mutovány mutujícím vstupním webhookem azure-workload-identity, aby se injikovaly konkrétní proměnné prostředí Azure a objem projekce tokenů účtu služby. pravda Ano

Pod anotace

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 Podrobnosti najdete v poznámkách k účtu služby . Anotace podů mají přednost před anotacemi účtu služby. 3600
Podporovaný rozsah je 3600–86400.
azure.workload.identity/skip-containers Představuje seznam kontejnerů oddělených středníkem, ke kterým se přeskočí přidání objemu promítaného tokenu účtu služby. Například container1;container2. Ve výchozím nastavení se objem projekčního tokenu účtu služby přidá do všech kontejnerů, pokud je pod 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 sidecar se používá k zachycení žádostí o token na IMDS a získání tokenu Microsoft Entra jménem uživatele s federovanými identitními údaji. Nepravda
azure.workload.identity/proxy-sidecar-port Představuje port proxy sidecaru. 8000

Migrace na ID úlohy Microsoft Entra

Clustery, na kterých už běží identita spravovaná podem, můžete nakonfigurovat tak, aby používaly ID úlohy Microsoft Entra jedním ze dvou způsobů:

  • Použijte stejnou konfiguraci, kterou jste implementovali pro podem spravovanou identitu. K povolení Microsoft Entra Workload ID a vložení anotací do podů můžete přidat poznámky ke služebnímu účtu v rámci oboru názvů s identitou.
  • Přepište aplikaci tak, aby používala nejnovější verzi klientské knihovny Azure Identity.

Abychom zjednodušili a usnadnili proces migrace, vyvinuli jsme pomocnou komponentu pro migraci, která převádí transakce služby Instance Metadata Service (IMDS) vaší aplikace na OIDC. Sídlo pro migraci není určené jako trvalé řešení, ale jako způsob, jak rychle nastartovat s Microsoft Entra Workload ID. Spuštěním migration sidecaru v rámci vaší aplikace dojde k přesměrování transakcí IMDS aplikace 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 váš cluster AKS:

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 ID pracovní zátěže Microsoft Entra v novém clusteru
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