Udostępnij za pośrednictwem


Używanie Identyfikatora obciążeń Microsoft Entra w usłudze Azure Kubernetes Service (AKS)

Obciążenia wdrożone w klastrze usług Azure Kubernetes Services (AKS) wymagają poświadczeń aplikacji Microsoft Entra lub zarządzanych tożsamości w celu uzyskania dostępu do chronionych zasobów firmy Microsoft, takich jak Azure Key Vault i Microsoft Graph. Identyfikator obciążeń Microsoft Entra integruje się z natywnymi funkcjami platformy Kubernetes w celu federacji z zewnętrznymi dostawcami tożsamości.

Microsoft Entra Workload ID używa Service Account Token Volume Projection (czyli konta usługi), aby umożliwić zasobnikom korzystanie z tożsamości Kubernetes. Wystawiony jest token Kubernetes, a federacja OIDC umożliwia aplikacjom Kubernetes bezpieczne uzyskiwanie dostępu do zasobów platformy Azure za pomocą identyfikatora Entra firmy Microsoft na podstawie kont usług z adnotacjami.

Tożsamość obciążeń Microsoft Entra działa szczególnie dobrze z bibliotekami klienckimi tożsamości Azure lub kolekcją biblioteki Microsoft Authentication Library (MSAL) wraz z rejestracją aplikacji. Obciążenie może używać dowolnej z tych bibliotek do bezproblemowego uwierzytelniania zasobów w chmurze platformy Azure i uzyskiwania do nich dostępu.

Ten artykuł pomaga zrozumieć pojęcie Workload ID w Microsoft Entra oraz omawia dostępne opcje planowania strategii projektu i potencjalnej migracji z tożsamości zarządzanej przez pod w Microsoft Entra.

Uwaga

Możesz użyć łącznika usługi, aby ułatwić automatyczne konfigurowanie niektórych kroków. Zobacz również: Co to jest łącznik usługi?

Zależności

  • Usługa AKS obsługuje Tożsamość obciążeń Microsoft Entra w wersji 1.22 lub nowszej.
  • Interfejs wiersza polecenia platformy Azure w wersji 2.47.0 lub nowszej. Uruchom polecenie az --version , aby znaleźć wersję i uruchomić polecenie az upgrade , aby uaktualnić wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Biblioteki klienta tożsamości platformy Azure

W bibliotekach klienta usługi Azure Identity wybierz jedną z następujących metod:

  • Użyj elementu DefaultAzureCredential, który próbuje użyć elementu WorkloadIdentityCredential.
  • Utwórz instancję ChainedTokenCredential, która obejmuje WorkloadIdentityCredential.
  • Użyj WorkloadIdentityCredential bezpośrednio.

Poniższa tabela zawiera minimalną wersję pakietu wymaganą dla biblioteki klienta ekosystemu języka.

Ekosystem Biblioteka Minimalna wersja
.NET Azure.Identity 1.9.0
C++ azure-identity-cpp 1.6.0
Idź azidentity 1.3.0
Java azure-identity 1.9.0
Node.js @azure/identity 3.2.0
Python azure-identity 1.13.0

W poniższych przykładach kodu używany jest DefaultAzureCredential. Ten typ poświadczeń używa zmiennych środowiskowych wstrzykiwanych przez modyfikujący webhook tożsamości obciążenia dla Azure do logowania się w usłudze Azure Key Vault. Aby wyświetlić przykłady korzystające z jednego z innych podejść, zapoznaj się z powyższymi linkami biblioteki klienta specyficznymi dla ekosystemu.

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

Biblioteka uwierzytelniania firmy Microsoft (MSAL)

Następujące biblioteki klienckie są wymaganą minimalną wersją.

Ekosystem Biblioteka Obraz Przykład Posiada system Windows
.NET Biblioteka uwierzytelniania firmy Microsoft dla dotnet ghcr.io/azure/azure-workload-identity/msal-net:latest Link Tak
Idź Biblioteka uwierzytelniania Microsoft dla języka Go ghcr.io/azure/azure-workload-identity/msal-go:latest Link Tak
Java Biblioteka uwierzytelniania firmy Microsoft dla języka Java ghcr.io/azure/azure-workload-identity/msal-java:latest Link Nie.
JavaScript Biblioteka uwierzytelniania firmy Microsoft dla języka js ghcr.io/azure/azure-workload-identity/msal-node:latest Link Nie.
Python Biblioteka uwierzytelniania firmy Microsoft dla języka Python ghcr.io/azure/azure-workload-identity/msal-python:latest Link Nie.

Ograniczenia

  • Możesz mieć maksymalnie 20 poświadczeń tożsamości federacyjnej dla tożsamości zarządzanej.
  • Propagacja federacyjnych poświadczeń tożsamości po ich dodaniu trwa kilka sekund.
  • Dodatek węzłów wirtualnych, oparty na projekcie typu otwartego źródła Virtual Kubelet, nie jest obsługiwany.
  • Tworzenie poświadczeń tożsamości federacyjnej nie jest obsługiwane w przypadku tożsamości zarządzanych przypisanych przez użytkownika w tych regionach.

Jak to działa

W tym modelu zabezpieczeń klaster usługi AKS działa jako wystawca tokenu. Microsoft Entra ID używa openID Connect do odnajdywania publicznych kluczy podpisywania i weryfikowania autentyczności tokenu konta usługi przed wymianą go dla tokenu Microsoft Entra. Twoje obciążenie pracą może wymienić token konta usługi przypisanego do jego wolumenu na token Microsoft Entra, korzystając z biblioteki klienta Azure Identity lub biblioteki Microsoft Authentication Library (MSAL).

Diagram modelu zabezpieczeń tożsamości obciążenia usługi AKS.

W poniższej tabeli opisano wymagane punkty końcowe wystawcy OIDC dla Microsoft Entra Workload ID.

Punkt końcowy opis
{IssuerURL}/.well-known/openid-configuration Znaany również jako dokument odkrywania OIDC. Zawiera metadane dotyczące konfiguracji wystawcy.
{IssuerURL}/openid/v1/jwks Zawiera on publiczne klucze podpisywania używane przez firmę Microsoft Entra ID w celu zweryfikowania autentyczności tokenu konta usługi.

Na poniższym diagramie przedstawiono podsumowanie sekwencji uwierzytelniania przy użyciu programu OpenID Connect.

Diagram sekwencji uwierzytelniania OIDC tożsamości obciążenia usługi AKS.

Automatyczne odnawianie certyfikatu webhook

Podobnie jak w przypadku innych dodatków webhook, certyfikat podlega automatycznej rotacji certyfikatu klastra.

Etykiety i adnotacje konta usługi

Tożsamość obciążeń Microsoft Entra obsługuje następujące mapowania odnoszące się do konta usługi:

Uwaga

Jeśli adnotacje konta usługi zostały zaktualizowane, należy ponownie uruchomić zasobnik, aby zmiany weszły w życie.

Jeśli używasz tożsamości zarządzanej przez zasobniki Microsoft Entra, pomyśl o koncie usługi jako jednostce zabezpieczeń platformy Azure, z tą różnicą, że konto usługi jest częścią podstawowego interfejsu API Kubernetes, a nie niestandardowej definicji zasobów (CRD). W poniższych sekcjach opisano listę dostępnych etykiet i adnotacji, które mogą służyć do konfigurowania zachowania podczas wymiany tokenu konta usługi dla tokenu dostępu firmy Microsoft Entra.

Adnotacje konta usługi

Wszystkie adnotacje są opcjonalne. Jeśli adnotacja nie zostanie określona, zostanie użyta wartość domyślna.

Adnotacja opis Wartość domyślna
azure.workload.identity/client-id Reprezentuje aplikację Firmy Microsoft Entra
identyfikator klienta do użycia z pod.
azure.workload.identity/tenant-id Reprezentuje identyfikator dzierżawy platformy Azure, w którym
Zarejestrowano aplikację Microsoft Entra.
Zmienna środowiskowa AZURE_TENANT_ID została wyodrębniona
z azure-wi-webhook-config obiektu ConfigMap.
azure.workload.identity/service-account-token-expiration Reprezentuje pole expirationSeconds dla
przewidywany token konta usługi. Jest to pole opcjonalne, które można skonfigurować, aby zapobiec przestojom
spowodowane błędami podczas odświeżania tokenu konta usługi. Wygaśnięcie tokenu konta usługi Kubernetes nie jest skorelowane z tokenami firmy Microsoft Entra. Tokeny firmy Microsoft Entra wygasają po upływie 24 godzin od ich wystawienia.
3600
Obsługiwany zakres to 3600-86400.

Etykiety zasobników

Uwaga

W przypadku aplikacji używających tożsamości obciążenia roboczego, należy dodać etykietę azure.workload.identity/use: "true" do specyfikacji zasobnika dla usługi AKS, aby przenieść tożsamość obciążenia roboczego do scenariusza Fail Close, zapewniając spójne i niezawodne działanie dla zasobników, które muszą korzystać z tożsamości obciążenia roboczego. W przeciwnym razie pody ulegają awarii po ponownym uruchomieniu.

Etykieta opis Zalecana wartość Wymagane
azure.workload.identity/use Ta etykieta jest wymagana w specyfikacji szablonu zasobnika. Tylko zasobniki z tą etykietą są zmodyfikowane przez webhook przyjęcia mutującego azure-workload-identity, aby wstrzyknąć zmienne środowiskowe specyficzne dla platformy Azure i wolumin przewidywanego tokenu konta usługi. prawda Tak

Adnotacje zasobników

Wszystkie adnotacje są opcjonalne. Jeśli adnotacja nie zostanie określona, zostanie użyta wartość domyślna.

Adnotacja opis Wartość domyślna
azure.workload.identity/service-account-token-expiration expirationSeconds Reprezentuje pole dla przewidywanego tokenu konta usługi. Jest to opcjonalne pole, które można skonfigurować, aby zapobiec wszelkim przestojom spowodowanym przez błędy podczas odświeżania tokenu konta usługi. Wygaśnięcie tokenu konta usługi Kubernetes nie jest skorelowane z tokenami firmy Microsoft Entra. Tokeny firmy Microsoft Entra wygasają po upływie 24 godzin od ich wystawienia. 1 3600
Obsługiwany zakres to 3600-86400.
azure.workload.identity/skip-containers Reprezentuje rozdzieloną średnikami listę kontenerów, aby pominąć dodawanie przewidywanego woluminu tokenu konta usługi. Na przykład container1;container2. Domyślnie przewidywany wolumin tokenu konta usługi jest dodawany do wszystkich kontenerów, jeśli zasobnik ma etykietę azure.workload.identity/use: true.
azure.workload.identity/inject-proxy-sidecar Wprowadza kontener init serwera proxy i przyczepkę serwera proxy do zasobnika. Element pomocniczy proxy jest używany do przechwytywania żądań tokenu do IMDS i uzyskiwania tokenu Microsoft Entra w imieniu użytkownika z federacyjnym poświadczeniem tożsamości. prawda
azure.workload.identity/proxy-sidecar-port Reprezentuje port przyczepki serwera proxy. 8000

1 Ma pierwszeństwo, jeśli konto usługi jest również opatrzone adnotacjami.

Jak przeprowadzić migrację do Microsoft Entra Workload ID

Na klastrze, w którym jest już uruchomiona tożsamość zarządzana przez pod, można ją skonfigurować do korzystania z tożsamości obciążenia pracą na jeden z dwóch sposobów. Pierwsza opcja umożliwia użycie tej samej konfiguracji, którą zaimplementowano dla pod-managed identity. Możesz dodać adnotacje do konta usługi w przestrzeni nazw przy użyciu tożsamości, aby włączyć Tożsamość obciążeń Microsoft Entra i wstrzyknąć adnotacje do zasobników.

Drugą opcją jest ponowne zapisywanie aplikacji w celu korzystania z najnowszej wersji biblioteki klienta tożsamości platformy Azure.

Aby usprawnić i ułatwić proces migracji, opracowaliśmy przyczepkę migracji, która konwertuje transakcje IMDS tworzone przez aplikację na openID Connect (OIDC). Sidecar migracyjny nie jest przeznaczony jako rozwiązanie długoterminowe, lecz jako sposób na szybkie rozpoczęcie pracy z tożsamością obciążenia roboczego. Uruchamianie sidecaru migracyjnego wewnątrz aplikacji pośredniczy w transakcjach IMDS do OIDC. Alternatywną metodą jest uaktualnienie do obsługiwanej wersji biblioteki klienta tożsamości platformy Azure, która obsługuje uwierzytelnianie OIDC.

W poniższej tabeli podsumowano nasze zalecenia dotyczące migracji lub wdrożenia dotyczące tożsamości obciążenia.

Scenariusz opis
Istniejące lub nowe wdrożenie klastra uruchamia obsługiwaną wersję biblioteki klienta tożsamości Azure Nie są wymagane żadne kroki migracji.
Przykładowe zasoby wdrażania: wdrażanie i konfigurowanie tożsamości obciążenia w nowym klastrze
Nowe lub istniejące wdrożenie klastra uruchamia nieobsługiwaną wersję biblioteki klienta tożsamości platformy Azure Zaktualizuj obraz kontenera, aby użyć obsługiwanej wersji Azure Identity SDK lub użyj usługi dodatkowej migracji.

Następne kroki