Używanie Tożsamość obciążeń Microsoft Entra z usługą Azure Kubernetes Service (AKS)
Obciążenia wdrożone w klastrze usług Azure Kubernetes Services (AKS) wymagają poświadczeń aplikacji entra firmy Microsoft lub tożsamości zarządzanych w celu uzyskania dostępu do chronionych zasobów firmy Microsoft, takich jak Azure Key Vault i Microsoft Graph. Tożsamość obciążeń Microsoft Entra integruje się z możliwościami natywnymi dla platformy Kubernetes w celu federacji z zewnętrznymi dostawcami tożsamości.
Tożsamość obciążeń Microsoft Entra używa projekcji woluminu tokenu konta usługi, umożliwiając zasobnikom korzystanie z tożsamości Kubernetes (czyli konta usługi). 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 Biblioteki klienta tożsamości platformy Azure i kolekcja biblioteki Microsoft Authentication Library (MSAL), jeśli używasz rejestracji 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ć tę nową funkcję uwierzytelniania i przeglądać opcje dostępne do planowania strategii projektu i potencjalnej migracji z tożsamości zarządzanej przez zasobnika firmy Microsoft.
Uwaga
Zamiast ręcznie konfigurować wszystkie kroki, istnieje inna implementacja o nazwie Service Połączenie or, która ułatwi automatyczne skonfigurowanie niektórych kroków. Zobacz też: Co to jest usługa Połączenie or?
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ć polecenieaz 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ć elementuWorkloadIdentityCredential
. ChainedTokenCredential
Utwórz wystąpienie, które zawieraWorkloadIdentityCredential
element .- 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 |
Go | azidentity | 1.3.0 |
Java | azure-identity | 1.9.0 |
Node.js | @azure/tożsamość | 3.2.0 |
Python | azure-identity | 1.13.0 |
W poniższych przykładach DefaultAzureCredential
kodu jest używany. Ten typ poświadczeń używa zmiennych środowiskowych wstrzykiwanych przez element webhook tożsamości obciążenia platformy Azure do uwierzytelniania w usłudze 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);
Biblioteka uwierzytelniania firmy Microsoft (MSAL)
Następujące biblioteki klienckie są wymaganą minimalną wersją.
Ekosystem | Biblioteka | Obraz | Przykład | Ma system Windows |
---|---|---|---|---|
.NET | Biblioteka uwierzytelniania firmy Microsoft dla dotnet | ghcr.io/azure/azure-workload-identity/msal-net:latest |
Link | Tak |
Go | Biblioteka uwierzytelniania firmy 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
- Dla tożsamości zarządzanej można mieć tylko 20 poświadczeń tożsamości federacyjnej.
- Propagacja poświadczeń tożsamości federacyjnej po ich dodaniu trwa kilka sekund.
- Dodawanie węzłów wirtualnych na podstawie projektu open source Virtual Kubelet nie jest obsługiwane.
- 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, identyfikator Entra firmy Microsoft używa identyfikatora OpenID Połączenie do odnajdywania publicznych kluczy podpisywania i weryfikowania autentyczności tokenu konta usługi przed wymianą go na token Entra firmy Microsoft. Obciążenie może wymienić token konta usługi przewidywany na jego wolumin dla tokenu entra firmy Microsoft przy użyciu biblioteki klienta tożsamości platformy Azure lub biblioteki uwierzytelniania firmy Microsoft.
W poniższej tabeli opisano wymagane punkty końcowe wystawcy OIDC dla Tożsamość obciążeń Microsoft Entra:
Punkt końcowy | opis |
---|---|
{IssuerURL}/.well-known/openid-configuration |
Znany również jako dokument odnajdywania 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 Połączenie OpenID.
Automatyczne obracanie certyfikatu elementu webhook
Podobnie jak w przypadku innych dodatków elementu webhook, certyfikat jest obracany przez operację automatycznego obracania certyfikatu klastra.
Etykiety i adnotacje konta usługi
Tożsamość obciążeń Microsoft Entra obsługuje następujące mapowania związane z kontem usługi:
- Jeden do jednego, w którym konto usługi odwołuje się do obiektu Microsoft Entra.
- Wiele do jednego, gdzie wiele kont usług odwołuje się do tego samego obiektu Microsoft Entra.
- Jeden do wielu, w którym konto usługi odwołuje się do wielu obiektów firmy Microsoft Entra, zmieniając adnotację identyfikatora klienta. Aby uzyskać więcej informacji, zobacz How to federate multiple identities with a Kubernetes service account (Jak sfederować wiele tożsamości przy użyciu konta usługi Kubernetes).
Uwaga
Jeśli adnotacje konta usługi zostaną zaktualizowane, musisz ponownie uruchomić zasobnik, aby zmiany zaczęły obowiązywać.
Jeśli używasz tożsamości zarządzanej przez zasobników firmy Microsoft, pomyśl o koncie usługi jako tożsamości platformy Azure, z wyjątkiem konta usługi jest częścią podstawowego interfejsu API Kubernetes, a nie niestandardowej definicji zasobów (CRD). Poniżej 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, który ma być używany z zasobnikiem. |
|
azure.workload.identity/tenant-id |
Reprezentuje identyfikator dzierżawy platformy Azure, w którym Zarejestrowano aplikację Microsoft Entra. |
AZURE_TENANT_ID wyodrębnionej zmiennej środowiskowej z azure-wi-webhook-config obiektu ConfigMap. |
azure.workload.identity/service-account-token-expiration |
expirationSeconds Reprezentuje pole dla elementuprzewidywany 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 korzystających z tożsamości obciążenia należy dodać etykietę azure.workload.identity/use: "true"
do specyfikacji zasobnika dla usługi AKS, aby przenieść tożsamość obciążenia do scenariusza zamykania awaryjnego, aby zapewnić spójne i niezawodne zachowanie zasobników, które muszą używać tożsamości obciążenia. W przeciwnym razie zasobniki kończą się niepowodzeniem po ponownym uruchomieniu.
Etykieta | opis | Zalecana wartość | Wymagania |
---|---|---|---|
azure.workload.identity/use |
Ta etykieta jest wymagana w specyfikacji szablonu zasobnika. Tylko zasobniki z tą etykietą są zmutowane przez element webhook przyjęcia azure-workload-identity, aby wstrzyknąć zmienne środowiskowe specyficzne dla platformy Azure i przewidywany wolumin 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 konto usługi jest oznaczone etykietą azure.workload.identity/use: true . |
azure.workload.identity/inject-proxy-sidecar |
Wprowadza kontener init serwera proxy i przyczepkę serwera proxy do zasobnika. Przyczepka serwera proxy służy do przechwytywania żądań tokenu do usługi IMDS i uzyskiwania tokenu Microsoft Entra w imieniu użytkownika z poświadczeniami tożsamości federacyjnej. | 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ż oznaczone adnotacjami.
Jak przeprowadzić migrację do tożsamości obciążenia
W klastrze, w którym jest już uruchomiona tożsamość zarządzana zasobnika, można skonfigurować ją tak, aby korzystała z tożsamości obciążenia na jeden z dwóch sposobów. Pierwsza opcja umożliwia korzystanie z tej samej konfiguracji, która została już zaimplementowana dla tożsamości zarządzanej przez zasobniki. Wystarczy dodać adnotacje do konta usługi w przestrzeni nazw przy użyciu tożsamości i umożliwić tożsamości obciążenia wprowadzanie adnotacji 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, które aplikacja wykonuje na openID Połączenie (OIDC). Przyczepka migracji nie ma być rozwiązaniem długoterminowym, ale sposobem szybkiego uruchomienia tożsamości obciążenia. Uruchamianie przyczepki migracji w ramach serwerów proxy aplikacji transakcji 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 |
---|---|
Nowe lub istniejące wdrożenie klastra uruchamia obsługiwaną wersję biblioteki klienta tożsamości platformy Azure | Nie są wymagane żadne kroki migracji. Przykładowe zasoby wdrażania: - Wdrażanie i konfigurowanie tożsamości obciążenia w nowym klastrze - Samouczek: używanie tożsamości obciążenia z aplikacją w usłudze AKS |
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 zestawu Azure Identity SDK lub użyć przyczepki migracji. |
Następne kroki
- Aby dowiedzieć się, jak skonfigurować zasobnik do uwierzytelniania przy użyciu tożsamości obciążenia jako opcji migracji, zobacz Modernizowanie uwierzytelniania aplikacji przy użyciu tożsamości obciążenia.
- Zobacz samouczek Używanie tożsamości obciążenia z aplikacją w usłudze Azure Kubernetes Service (AKS), co ułatwia wdrażanie klastra usługi Azure Kubernetes Service i konfigurowanie przykładowej aplikacji do korzystania z tożsamości obciążenia.