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ć 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.
  • ChainedTokenCredential Utwórz wystąpienie, które zawiera WorkloadIdentityCredentialelement .
  • 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

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.

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

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.

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

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:

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 elementu
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 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