Udostępnij za pośrednictwem


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

Wtyczka kubelogin na platformie Azure to wtyczka poświadczeń języka 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.

Klastry usługi Azure Kubernetes Service (AKS), które są zintegrowane z identyfikatorem Entra firmy Microsoft i uruchomionym rozwiązaniem Kubernetes w wersji 1.24 lub nowszej, automatycznie używają formatu kubelogin.

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

  • W oświadczeniu microsoft Entra JSON Web Token (JWT) można uwzględnić maksymalnie 200 grup. Jeśli masz więcej niż 200 grup, rozważ użycie ról aplikacji.
  • Grupy utworzone w identyfikatorze Entra firmy Microsoft 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.
  • W usłudze AKS metoda uwierzytelniania jednostki usługi działa tylko z zarządzanym identyfikatorem Microsoft Entra ID, a nie z wcześniejszą wersją usługi Azure Active Directory.
  • Metoda uwierzytelniania kodu urządzenia nie działa, gdy zasady dostępu warunkowego firmy Microsoft entra są ustawione w dzierżawie firmy Microsoft Entra. W tym scenariuszu użyj uwierzytelniania interakcyjnego przeglądarki internetowej.

Jak działa uwierzytelnianie

W przypadku większości interakcji z rozwiązaniem kubelogin należy użyć convert-kubeconfig podpolecenia. Podpolecenia używa pliku kubeconfig określonego w --kubeconfig zmiennej środowiskowej lub w KUBECONFIG zmiennej środowiskowej, aby przekonwertować końcowy 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. Następujące flagi parametrów są często używane w podpoleceniach kubelogin. Ogólnie rzecz biorąc, te flagi są gotowe do użycia podczas pobierania pliku kubeconfig z usługi AKS.

  • --tenant-id: Identyfikator dzierżawy entra firmy Microsoft.
  • --client-id: identyfikator aplikacji publicznej aplikacji klienckiej. Ta aplikacja kliencka jest używana tylko w kodzie urządzenia, interakcyjnej przeglądarce internetowej i uwierzytelnieniu OAuth 2.0 Poświadczenia hasła właściciela zasobu (ROPC) (tożsamość przepływu pracy).
  • --server-id: identyfikator aplikacji internetowej lub serwera zasobów. Token jest wystawiany dla tego zasobu.

Uwaga

W każdej metodzie uwierzytelniania token nie jest buforowany w systemie plików.

Metody uwierzytelniania

W następnych sekcjach opisano obsługiwane metody uwierzytelniania i sposób ich używania:

  • Kod urządzenia
  • Interfejs wiersza polecenia platformy Azure
  • Interaktywna przeglądarka sieci Web
  • Jednostka usługi
  • Tożsamość zarządzana
  • Tożsamość obciążenia

Kod urządzenia

Kod urządzenia to domyślna metoda uwierzytelniania dla convert-kubeconfig podpolecenia. Parametr -l devicecode jest opcjonalny. Ta metoda uwierzytelniania wyświetla monit o zalogowanie się użytkownika z sesji przeglądarki.

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 ona zgodna z zarządzanym identyfikatorem usługi Microsoft Entra usługi AKS, który używa przepływu w imieniu (OBO). Po uruchomieniu convert-kubeconfig podpolecenia kubelogin usuwa spn: prefiks z oświadczenia odbiorców.

Jeśli wymagania obejmują korzystanie z funkcji z wcześniejszych wersji, dodaj --legacy argument . Jeśli używasz pliku kubeconfig we wcześniejszej wersji klastra usługi Azure Active Directory, narzędzie kubelogin automatycznie dodaje flagę --legacy .

W tej metodzie logowania token dostępu i token odświeżania są buforowane w katalogu ${HOME}/.kube/cache/kubelogin . Aby zastąpić tę ścieżkę --token-cache-dir , dołącz parametr .

Jeśli zintegrowany klaster usługi AKS Firmy Microsoft Entra używa rozwiązania Kubernetes 1.24 lub starszego, musisz ręcznie przekonwertować format pliku kubeconfig, uruchamiając następujące polecenia:

export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Aby wyczyścić buforowane tokeny, uruchom następujące polecenie:

kubelogin remove-tokens

Uwaga

Metoda logowania kodu urządzenia nie działa, gdy zasady dostępu warunkowego są skonfigurowane w dzierżawie firmy Microsoft Entra. W tym scenariuszu użyj metody interaktywnej przeglądarki internetowej.

Interfejs wiersza polecenia platformy Azure

Metoda uwierzytelniania interfejsu wiersza polecenia platformy Azure 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 firmy Microsoft Entra co az login. Platforma kubelogin nie zapisuje tokenów w pliku pamięci podręcznej tokenów, ponieważ są one już zarządzane przez interfejs wiersza polecenia platformy Azure.

Uwaga

Ta metoda uwierzytelniania działa tylko z zarządzanym identyfikatorem firmy Microsoft w usłudze AKS.

W poniższym przykładzie pokazano, jak używać metody interfejsu wiersza polecenia platformy Azure do uwierzytelniania:

az login

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l azurecli

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Jeśli katalog konfiguracji interfejsu wiersza polecenia platformy Azure znajduje się poza katalogiem ${HOME} , użyj parametru --azure-config-dir convert-kubeconfig z podpolecenia. Polecenie generuje plik kubeconfig ze skonfigurowaną zmienną środowiskową. Tę samą konfigurację można uzyskać, ustawiając AZURE_CONFIG_DIR zmienną środowiskową na ten katalog po uruchomieniu polecenia kubectl.

Interaktywna przeglądarka sieci Web

Interaktywna metoda uwierzytelniania w przeglądarce internetowej automatycznie otwiera przeglądarkę internetową w celu zalogowania użytkownika. Po uwierzytelnieniu użytkownika przeglądarka przekierowuje do lokalnego serwera internetowego przy użyciu zweryfikowanych poświadczeń. Ta metoda uwierzytelniania jest zgodna z zasadami dostępu warunkowego.

Podczas uwierzytelniania przy użyciu tej metody token dostępu jest buforowany w katalogu ${HOME}/.kube/cache/kubelogin . Tę ścieżkę można zastąpić przy użyciu parametru --token-cache-dir .

Token elementu nośnego

W poniższym przykładzie pokazano, jak używać tokenu elementu nośnego z interaktywnym przepływem przeglądarki internetowej:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Token dowodu posiadania

W poniższym przykładzie pokazano, jak używać tokenu Weryfikacji posiadania (PoP) z interaktywnym przepływem przeglądarki internetowej:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Jednostka usługi

Ta 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świadczeń w argumencie wiersza polecenia. Obsługiwane poświadczenia, których można użyć, to hasło lub certyfikat klienta wymiany informacji osobistych (PFX).

Przed użyciem tej metody należy wziąć pod uwagę następujące ograniczenia:

  • Ta metoda działa tylko z zarządzanym identyfikatorem Entra firmy Microsoft.
  • Jednostka usługi może należeć do maksymalnie 200 grup firmy Microsoft Entra.

Zmienne środowiskowe

W poniższym przykładzie pokazano, jak skonfigurować klucz tajny klienta przy użyciu zmiennych środowiskowych:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<Service Principal Name (SPN) client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Następnie uruchom następujące polecenie:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_SECRET=<SPN secret>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Argument wiersza polecenia

W poniższym przykładzie pokazano, jak skonfigurować wpis tajny klienta w argumencie wiersza polecenia:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --client-id <SPN client ID> --client-secret <SPN client secret>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Ostrzeżenie

Metoda argumentu wiersza polecenia przechowuje wpis tajny w pliku kubeconfig.

Certyfikat klienta

W poniższym przykładzie pokazano, jak skonfigurować klucz tajny klienta przy użyciu certyfikatu klienta:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE=/path/to/cert.pfx
export AAD_SERVICE_PRINCIPAL_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Następnie uruchom następujące polecenie:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn

export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pfx
export AZURE_CLIENT_CERTIFICATE_PASSWORD=<PFX password>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Token poP i zmienne środowiskowe

W poniższym przykładzie pokazano, jak skonfigurować token poP, który używa klucza tajnego klienta pobieranego ze zmiennych środowiskowych:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l spn --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"

export AAD_SERVICE_PRINCIPAL_CLIENT_ID=<SPN client ID>
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=<SPN secret>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Tożsamość zarządzana

Użyj metody uwierzytelniania tożsamości zarządzanej 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.

Domyślna tożsamość zarządzana

W poniższym przykładzie pokazano, jak używać domyślnej tożsamości zarządzanej:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Określona tożsamość

W poniższym przykładzie pokazano, jak używać tożsamości zarządzanej z określoną tożsamością:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l msi --client-id <msi-client-id>

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

Tożsamość obciążenia

Metoda uwierzytelniania tożsamości obciążenia używa poświadczeń tożsamości, które są sfederowane z firmą Microsoft Entra do uwierzytelniania dostępu do klastrów usługi AKS. Metoda używa zintegrowanego uwierzytelniania firmy Microsoft Entra. Działa przez ustawienie następujących zmiennych środowiskowych:

  • AZURE_CLIENT_ID: identyfikator aplikacji Entra firmy Microsoft, który jest sfederowy z tożsamością obciążenia.
  • AZURE_TENANT_ID: Identyfikator dzierżawy entra firmy Microsoft.
  • AZURE_FEDERATED_TOKEN_FILE: plik zawierający podpisaną asercja tożsamości obciążenia, na przykład przewidywany token konta usługi (JWT) platformy Kubernetes.
  • AZURE_AUTHORITY_HOST: podstawowy adres URL urzędu entra firmy Microsoft. Na przykład https://login.microsoftonline.com/.

Tożsamość obciążenia umożliwia dostęp do klastrów Kubernetes z systemów ciągłej integracji/ciągłego wdrażania, takich jak GitHub lub ArgoCD, bez przechowywania poświadczeń jednostki usługi w systemach zewnętrznych. Aby skonfigurować federację openID Connect (OIDC) z usługi GitHub, zobacz przykład federacji OIDC.

W poniższym przykładzie pokazano, jak używać tożsamości obciążenia:

export KUBECONFIG=/path/to/kubeconfig

kubelogin convert-kubeconfig -l workloadidentity

Uruchom to polecenie kubectl, aby uzyskać informacje o węźle:

kubectl get nodes

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

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

Identyfikator aplikacji serwera microsoft Entra usługi AKS używany po stronie 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ć z kubelogin get-token.--server-id

Identyfikator aplikacji klienckiej AKS Firmy Microsoft Entra, 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.