Udostępnij przez


Używanie narzędzia kubelogin do uwierzytelniania użytkowników w usłudze Azure Kubernetes Service (AKS)

Wtyczka kubelogin na platformie Azure to wtyczka poświadczeń client-go, która implementuje uwierzytelnianie Microsoft Entra. Wtyczka kubelogin oferuje funkcje, które nie są dostępne w narzędziu wiersza polecenia kubectl. Aby uzyskać więcej informacji, zobacz wprowadzenie do rozwiązania kubelogin i wprowadzenie do narzędzia kubectl.

Ten artykuł zawiera omówienie i przykłady użycia narzędzia kubelogin dla wszystkich obsługiwanych metod uwierzytelniania firmy Microsoft Entra w usłudze AKS.

Ograniczenia uwierzytelniania przy użyciu kubelogin w AKS

  • Grupy utworzone w usłudze Microsoft Entra są uwzględniane tylko przez ich wartość ObjectID , a nie przez ich nazwę wyświetlaną. Polecenie sAMAccountName jest dostępne tylko dla grup synchronizowanych z lokalnej usługi Active Directory systemu Windows Server.
  • Metoda uwierzytelniania jednostki usługi działa tylko z zarządzaną firmą Microsoft Entra, a nie z wcześniejszą wersją usługi Azure Active Directory.
  • Jednostka usługi może należeć do maksymalnie 200 grup firmy Microsoft Entra. Jeśli masz więcej niż 200 grup, rozważ użycie ról aplikacji.
  • Metoda uwierzytelniania kodu urządzenia nie działa, gdy zasady dostępu warunkowego firmy Microsoft Entra są ustawione w dzierżawie Microsoft Entra. W tym scenariuszu zamiast tego użyj uwierzytelniania interakcyjnego przeglądarki internetowej.
  • Metoda uwierzytelniania Azure CLI działa tylko z usługą AKS zarządzaną przez Microsoft Entra.

Jak działa uwierzytelnianie

Note

Pamiętaj o poniższych informacjach na temat uwierzytelniania za pomocą kubelogin w klastrach AKS zintegrowanych z Microsoft Entra.

  • Klastry z uruchomioną platformą Kubernetes w wersji 1.24 lub nowszej automatycznie używają formatu kubelogin.
  • Klastry z uruchomioną platformą Kubernetes w wersji 1.24 lub starszej wymagają konwersji ręcznej. Możesz użyć metody uwierzytelniania kodu urządzenia, aby przekonwertować plik kubeconfig w celu użycia formatu wtyczki exec.

W przypadku większości interakcji z kubelogin używa się subkomendy convert-kubeconfig. Podpolecenie używa pliku kubeconfig określonego w --kubeconfig lub w zmiennej środowiskowej KUBECONFIG, aby przekonwertować ostateczny plik kubeconfig na format exec na podstawie określonej metody uwierzytelniania.

Metody uwierzytelniania implementowane przez rozwiązanie kubelogin to przepływy udzielania tokenów entra OAuth 2.0 firmy Microsoft. W każdej metodzie uwierzytelniania token nie jest buforowany w systemie plików.

Uwierzytelnianie kodu urządzenia

Kod urządzenia to domyślna metoda uwierzytelniania dla convert-kubeconfig podpolecenia. Ta metoda uwierzytelniania wyświetla kod urządzenia, który umożliwia użytkownikowi zalogowanie się z sesji przeglądarki.

Note

Przed wprowadzeniem wtyczek kubelogin i exec metoda uwierzytelniania platformy Azure w narzędziu kubectl obsługiwała tylko przepływ kodu urządzenia. Użyto wcześniejszej wersji biblioteki, która generuje token z audience oświadczeniem z prefiksem spn: . Nie jest zgodna z zarządzaną przez AKS usługą Microsoft Entra, która używa przepływu w imieniu (OBO). Po uruchomieniu convert-kubeconfig podpolecenia kubelogin usuwa spn: prefiks z oświadczenia odbiorców.

Parametry uwierzytelniania kodu urządzenia

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem kodu urządzenia:

Parameter Description
-l devicecode (opcjonalny) Określa metodę uwierzytelniania kubelogin. Ten parametr jest opcjonalny, ponieważ kod urządzenia jest metodą domyślną.
--legacy Używa starszego zachowania we wcześniejszych wersjach klastrów usługi Azure Active Directory. Jeśli używasz pliku kubeconfig we wcześniejszej wersji klastra usługi Azure Active Directory, narzędzie kubelogin automatycznie dodaje flagę --legacy .
--token-cache-dir Zmienia domyślną ścieżkę katalogu pamięci podręcznej tokenu, która to ${HOME}/.kube/cache/kubelogin.

Uwierzytelnianie CLI platformy Azure

Metoda uwierzytelniania interfejsu wiersza polecenia platformy Azure (polecenie: -l azurecli) używa kontekstu logowania, który interfejs wiersza polecenia platformy Azure ustanawia w celu uzyskania tokenu dostępu. Token jest wystawiany w tej samej dzierżawie Microsoft Entra co az login. kubelogin nie zapisuje tokenów w pliku pamięci podręcznej tokenów, ponieważ Azure CLI już nimi zarządza.

Parametry uwierzytelniania CLI platformy Azure

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem interfejsu wiersza polecenia platformy Azure:

Parameter Description
-l azurecli Określa metodę uwierzytelniania kubelogin.
--azure-config-dir Określa katalog konfiguracji interfejsu wiersza polecenia platformy Azure. Katalog domyślny to ${HOME}/.azure.

Zaloguj się do Azure

Zaloguj się do platformy Azure przy użyciu polecenia az login.

az login

Interakcyjne uwierzytelnianie przeglądarki internetowej

Interaktywna metoda uwierzytelniania w przeglądarce internetowej (polecenie: -l interactive) automatycznie otwiera przeglądarkę internetową w celu zalogowania użytkownika. Po pomyślnym uwierzytelnieniu użytkownika przeglądarka automatycznie przekierowuje do lokalnego serwera WWW z użyciem zweryfikowanych danych uwierzytelniających. Ta metoda uwierzytelniania jest zgodna z zasadami dostępu warunkowego.

Możesz użyć tokenu nośnikowego lub tokenu Proof-of-Possession (PoP) z tą metodą uwierzytelniania.

Parametry uwierzytelniania tokenu elementu nośnego

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem tokenu elementu nośnego:

Parameter Description
-l interactive Określa metodę uwierzytelniania kubelogin.
--token-cache-dir Zastępuje domyślną ścieżkę katalogu pamięci podręcznej dla tokenów, czyli ${HOME}/.kube/cache/kubelogin.

Parametry uwierzytelniania tokenu poP

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem tokenu PoP:

Parameter Description
-l interactive Określa metodę uwierzytelniania kubelogin.
--pop-enabled Włącza uwierzytelnianie tokenu poP.
--pop-claims Określa atrybuty tokenu PoP w formacie pary klucz-wartość. Na przykład u=/ARM/ID/OF/CLUSTER.

Uwierzytelnianie głównego elementu usługi

Jednostka usługi (polecenie: -l spn) metoda uwierzytelniania używa jednostki usługi do logowania użytkownika. Poświadczenie można podać, ustawiając zmienną środowiskową lub używając poświadczenia jako argumentu wiersza polecenia. Obsługiwane poświadczenia, których można użyć, to hasło lub certyfikat klienta wymiany informacji osobistych (PFX).

Parametry uwierzytelniania jednostki usługi

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem jednostki usługi:

Parameter Description
-l spn Określa metodę uwierzytelniania kubelogin.
--client-id Identyfikator aplikacji (client-id) jednostki usługi.
--client-secret Tajny klucz klienta pryncypała usługi.

Uwierzytelnianie tożsamości zarządzanej

Użyj metody uwierzytelniania tożsamości zarządzanej (polecenie: -l msi) dla aplikacji łączących się z zasobami obsługującymi uwierzytelnianie Firmy Microsoft Entra. Przykłady obejmują uzyskiwanie dostępu do zasobów platformy Azure, takich jak maszyna wirtualna platformy Azure, zestaw skalowania maszyn wirtualnych lub usługa Azure Cloud Shell.

Możesz użyć domyślnej tożsamości zarządzanej przypisanej do zasobu lub określonej tożsamości zarządzanej przypisanej przez użytkownika.

Parametry uwierzytelniania tożsamości zarządzanej

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem tożsamości zarządzanej:

Parameter Description
-l msi Określa metodę uwierzytelniania kubelogin.
--client-id Identyfikator aplikacji (client-id) tożsamości zarządzanej przypisanej przez użytkownika. Jeśli nie określisz tego parametru, zostanie użyta domyślna tożsamość zarządzana.

Uwierzytelnianie tożsamości obciążenia roboczego

Metoda uwierzytelniania tożsamości obciążenia roboczego (polecenie: -l workloadidentity) używa poświadczeń tożsamości, które są sfederowane z usługą Microsoft Entra, aby uwierzytelniać dostęp do klastrów AKS. Metoda używa zintegrowanego uwierzytelniania firmy Microsoft Entra. Działa przez ustawienie następujących zmiennych środowiskowych:

Variable Description
AZURE_CLIENT_ID Identyfikator aplikacji Microsoft Entra, który jest sfederowany z tożsamością obciążenia.
AZURE_TENANT_ID Identyfikator dzierżawcy Microsoft Entra.
AZURE_FEDERATED_TOKEN_FILE Plik zawierający podpisaną asercję tożsamości obciążenia roboczego, na przykład token (JWT) projekcji konta usługi platformy Kubernetes.
AZURE_AUTHORITY_HOST Podstawowy adres URL autorytetu Microsoft Entra. Na przykład https://login.microsoftonline.com/.

Możesz użyć tożsamości roboczej do uzyskiwania dostępu do klastrów Kubernetes z systemów CI/CD, takich jak GitHub lub ArgoCD, bez przechowywania poświadczeń tożsamości usługi w systemach zewnętrznych. Aby skonfigurować federację openID Connect (OIDC) z usługi GitHub, zobacz przykład federacji OIDC.

Parametry uwierzytelniania tożsamości dla obciążenia roboczego

W poniższej tabeli przedstawiono parametry, których można używać z uwierzytelnianiem tożsamości obciążenia:

Parameter Description
-l workloadidentity Określa metodę uwierzytelniania kubelogin.

Eksportowanie ścieżki pliku kubeconfig

Przed uruchomieniem podpolecenia convert-kubeconfig, wyeksportuj ścieżkę pliku kubeconfig do zmiennej środowiskowej KUBECONFIG. Przykład:

export KUBECONFIG=/path/to/kubeconfig

Konwertowanie pliku kubeconfig

convert-kubeconfig Uruchom polecenie podrzędne, aby przekonwertować plik kubeconfig, aby użyć wtyczki exec dla wybranej metody uwierzytelniania.

kubelogin convert-kubeconfig
kubelogin convert-kubeconfig -l azurecli
# Bearer token authentication
kubelogin convert-kubeconfig -l interactive

# Proof-of-Possession (PoP) token authentication
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
  1. convert-kubeconfig Uruchom polecenie podrzędne, aby przekonwertować plik kubeconfig, aby użyć wtyczki exec.

    kubelogin convert-kubeconfig -l spn
    
  2. Ustaw zmienne środowiskowe dla identyfikatora klienta i klucza tajnego klienta lub certyfikatu klienta. Przykład:

    export AZURE_CLIENT_ID=<service-principal-client-id>
    export AZURE_CLIENT_SECRET=<service-principal-client-secret>
    
# Default managed identity authentication
kubelogin convert-kubeconfig -l msi

# Specific managed identity authentication
kubelogin convert-kubeconfig -l msi --client-id <managed-identity-client-id>
kubelogin convert-kubeconfig -l workloadidentity

Usuwanie buforowanych tokenów

Usuń buforowane tokeny przy użyciu kubelogin remove-tokens polecenia .

kubelogin remove-tokens

Pobieranie informacji o węźle

Pobierz informacje o węźle przy użyciu kubectl get polecenia .

kubectl get nodes

Jak używać narzędzia kubelogin z usługą AKS

Usługa AKS używa pary aplikacji Microsoft Entra. Te identyfikatory aplikacji są takie same we wszystkich środowiskach.

Identyfikator aplikacji serwera AKS Microsoft Entra (identyfikator serwera), używany przez stronę serwera, to 6dae42f8-4368-4678-94ff-3960e28e3630. Token dostępu, który uzyskuje dostęp do klastrów usługi AKS, musi być wystawiony dla tej aplikacji. W większości metod uwierzytelniania kubelogin należy używać --server-id z kubelogin get-token.

Identyfikator aplikacji klienckiej AKS Firmy Microsoft Entra (client-id), który kubelogin używa do przeprowadzania publicznego uwierzytelniania klienta w imieniu użytkownika to 80faf920-1908-4b52-b5ef-a8e7bedfc67a. Identyfikator aplikacji klienckiej jest używany w kodzie urządzenia i metodach uwierzytelniania interakcyjnego przeglądarki internetowej.