Použití kubeloginu k ověřování uživatelů ve službě Azure Kubernetes Service
Modul plug-in kubelogin v Azure je modul plug-in přihlašovacích údajů klienta, který implementuje ověřování Microsoft Entra. Modul plug-in kubelogin nabízí funkce, které nejsou dostupné v nástroji příkazového řádku kubectl.
Clustery Azure Kubernetes Service (AKS), které jsou integrované s ID Microsoft Entra a spouštět Kubernetes verze 1.24 nebo novější, automaticky používají formát kubelogin.
Tento článek obsahuje přehled a příklady použití kubelogin pro všechny podporované metody ověřování Microsoft Entra v AKS.
Omezení
- Do deklarace identity webového tokenu Microsoft Entra JSON (JWT) můžete zahrnout maximálně 200 skupin. Pokud máte více než 200 skupin, zvažte použití aplikačních rolí.
- Skupiny vytvořené v ID Microsoft Entra jsou zahrnuty pouze podle jejich hodnoty ObjectID , a ne podle jejich zobrazovaného názvu. Příkaz
sAMAccountName
je k dispozici pouze pro skupiny, které jsou synchronizované z místní služby Windows Server Active Directory. - V AKS funguje metoda ověřování instančního objektu pouze se spravovaným ID Microsoft Entra, a ne se starší verzí Azure Active Directory.
- Metoda ověřování kódu zařízení nefunguje, pokud je v tenantovi Microsoft Entra nastavená zásada podmíněného přístupu Microsoft Entra. V tomto scénáři použijte interaktivní ověřování ve webovém prohlížeči.
Jak funguje ověřování
Pro většinu interakcí s kubeloginem použijete convert-kubeconfig
podpříkaz. Podpříkaz používá soubor kubeconfig zadaný v --kubeconfig
proměnné prostředí nebo v KUBECONFIG
proměnné prostředí k převodu konečného souboru kubeconfig na formát exec na základě zadané metody ověřování.
Metody ověřování, které kubelogin implementují, jsou toky udělení tokenu Microsoft Entra OAuth 2.0. Následující příznaky parametrů se běžně používají v dílčích příkazech kubelogin. Obecně platí, že tyto příznaky jsou připravené k použití při získání souboru kubeconfig z AKS.
--tenant-id
: ID tenanta Microsoft Entra.--client-id
: ID aplikace veřejné klientské aplikace. Tato klientská aplikace se používá pouze v metodách přihlašování pomocí kódu zařízení, interaktivního webového prohlížeče a přihlašovacích údajů vlastníka prostředku OAuth 2.0 (ROPC) (identita pracovního postupu).--server-id
: ID aplikace webové aplikace nebo serveru prostředků. Token se vydává pro tento prostředek.
Poznámka:
V každé metodě ověřování není token uložen v mezipaměti systému souborů.
Metody ověřování
Následující části popisují podporované metody ověřování a jejich použití:
- Kód zařízení
- Azure CLI
- Interaktivní webový prohlížeč
- Instanční objekt
- Spravovaná identita
- Identita úloh
Kód zařízení
Kód zařízení je výchozí metoda ověřování pro convert-kubeconfig
podpříkaz. Parametr -l devicecode
je volitelný. Tato metoda ověřování vyzve kód zařízení, aby se uživatel přihlásil z relace prohlížeče.
Než byly zavedeny moduly plug-in kubelogin a exec, metoda ověřování Azure v kubectl podporovala pouze tok kódu zařízení. Použila starší verzi knihovny, která vytváří token s audience
deklarací identity s předponou spn:
. Není kompatibilní s AKS spravovaným ID Microsoft Entra, které používá tok on-behalf-of (OBO). Při spuštění podpříkazu convert-kubeconfig
kubelogin odebere předponu spn:
z deklarace cílové skupiny.
Pokud vaše požadavky zahrnují použití funkcí z dřívějších verzí, přidejte --legacy
argument. Pokud používáte soubor kubeconfig ve starší verzi clusteru Azure Active Directory, kubelogin automaticky přidá --legacy
příznak.
V této metodě přihlášení se přístupový token a obnovovací token ukládají do mezipaměti v adresáři ${HOME}/.kube/cache/kubelogin . Pokud chcete tuto cestu přepsat, zahrňte parametr --token-cache-dir
.
Pokud váš integrovaný cluster AKS Microsoft Entra používá Kubernetes 1.24 nebo starší, musíte ručně převést formát souboru kubeconfig spuštěním následujících příkazů:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Pokud chcete vyčistit tokeny uložené v mezipaměti, spusťte následující příkaz:
kubelogin remove-tokens
Poznámka:
Metoda přihlášení kódu zařízení nefunguje, když je v tenantovi Microsoft Entra nakonfigurovaná zásada podmíněného přístupu. V tomto scénáři použijte interaktivní metodu webového prohlížeče.
Azure CLI
Metoda ověřování Azure CLI používá přihlášený kontext, který Azure CLI vytvoří k získání přístupového tokenu. Token se vydává ve stejném tenantovi Microsoft Entra jako az login
. Kubelogin nezapisuje tokeny do souboru mezipaměti tokenů, protože je už spravuje Azure CLI.
Poznámka:
Tato metoda ověřování funguje pouze se spravovaným ID Microsoft Entra pro AKS.
Následující příklad ukazuje, jak použít metodu Azure CLI k ověření:
az login
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l azurecli
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Pokud je konfigurační adresář Azure CLI mimo adresář ${HOME} , použijte --azure-config-dir
parametr s podpříkazem convert-kubeconfig
. Příkaz vygeneruje soubor kubeconfig s nakonfigurovanou proměnnou prostředí. Stejnou konfiguraci můžete získat nastavením AZURE_CONFIG_DIR
proměnné prostředí do tohoto adresáře při spuštění příkazu kubectl.
Interaktivní webový prohlížeč
Interaktivní metoda ověřování webového prohlížeče automaticky otevře webový prohlížeč pro přihlášení uživatele. Po ověření uživatele se prohlížeč přesměruje na místní webový server pomocí ověřených přihlašovacích údajů. Tato metoda ověřování splňuje zásady podmíněného přístupu.
Při ověřování pomocí této metody se přístupový token ukládá do mezipaměti v adresáři ${HOME}/.kube/cache/kubelogin . Tuto cestu můžete přepsat pomocí parametru --token-cache-dir
.
Nosný token
Následující příklad ukazuje, jak používat nosný token s interaktivním tokem webového prohlížeče:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l interactive
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Doklad o vlastnictví tokenu
Následující příklad ukazuje, jak použít token Proof-of-Possession (PoP) s interaktivním tokem webového prohlížeče:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Instanční objekt
Tato metoda ověřování používá instanční objekt k přihlášení uživatele. Přihlašovací údaje můžete zadat nastavením proměnné prostředí nebo použitím přihlašovacích údajů v argumentu příkazového řádku. Podporované přihlašovací údaje, které můžete použít, jsou heslo nebo klientský certifikát PFX (Personal Information Exchange).
Před použitím této metody zvažte následující omezení:
- Tato metoda funguje pouze se spravovaným ID Microsoft Entra.
- Instanční objekt může být členem maximálně 200 skupin Microsoft Entra.
Proměnné prostředí
Následující příklad ukazuje, jak nastavit tajný klíč klienta pomocí proměnných prostředí:
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>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Pak spusťte tento příkaz:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn
export AZURE_CLIENT_ID=<SPN client ID>
export AZURE_CLIENT_SECRET=<SPN secret>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Argument příkazového řádku
Následující příklad ukazuje, jak nastavit tajný klíč klienta v argumentu příkazového řádku:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l spn --client-id <SPN client ID> --client-secret <SPN client secret>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Upozorňující
Metoda argumentu příkazového řádku ukládá tajný kód do souboru kubeconfig.
Klientský certifikát
Následující příklad ukazuje, jak nastavit tajný klíč klienta pomocí klientského certifikátu:
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>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Pak spusťte tento příkaz:
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>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Token PoP a proměnné prostředí
Následující příklad ukazuje, jak nastavit token PoP, který používá tajný klíč klienta, který získává z proměnných prostředí:
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>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Spravovaná identita
Použijte metodu ověřování spravované identity pro aplikace, které se připojují k prostředkům podporujícím ověřování Microsoft Entra. Mezi příklady patří přístup k prostředkům Azure, jako je virtuální počítač Azure, škálovací sada virtuálních počítačů nebo Azure Cloud Shell.
Výchozí spravovaná identita
Následující příklad ukazuje, jak použít výchozí spravovanou identitu:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l msi
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Konkrétní identita
Následující příklad ukazuje, jak používat spravovanou identitu s konkrétní identitou:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l msi --client-id <msi-client-id>
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Identita úloh
Metoda ověřování identit úloh používá k ověřování přístupu ke clusterům AKS přihlašovací údaje identity, které jsou federované s Microsoft Entra. Metoda používá integrované ověřování Microsoft Entra. Funguje nastavením následujících proměnných prostředí:
AZURE_CLIENT_ID
: ID aplikace Microsoft Entra, které je federované s identitou úlohy.AZURE_TENANT_ID
: ID tenanta Microsoft Entra.AZURE_FEDERATED_TOKEN_FILE
: Soubor, který obsahuje podepsaný kontrolní výraz identity úlohy, jako je token projektu služby Kubernetes (JWT).AZURE_AUTHORITY_HOST
: Základní adresa URL autority Microsoft Entra. Napříkladhttps://login.microsoftonline.com/
.
Identitu úloh můžete použít pro přístup ke clusterům Kubernetes ze systémů CI/CD, jako je GitHub nebo ArgoCD, aniž byste museli ukládat přihlašovací údaje instančního objektu do externích systémů. Informace o konfiguraci federace OpenID Připojení (OIDC) z GitHubu najdete v příkladu federace OIDC.
Následující příklad ukazuje, jak používat identitu úlohy:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig -l workloadidentity
Spuštěním tohoto příkazu kubectl získejte informace o uzlu:
kubectl get nodes
Jak používat kubelogin s AKS
AKS používá dvojici aplikací Microsoft Entra od první strany. Tato ID aplikací jsou ve všech prostředích stejná.
ID aplikace serveru AKS Microsoft Entra, které používá strana serveru, je 6dae42f8-4368-4678-94ff-3960e28e3630
. Přístupový token, který přistupuje ke clusterům AKS, musí být vydán pro tuto aplikaci. Ve většině metod ověřování kubelogin je nutné použít s --server-id
kubelogin get-token
.
ID klientské aplikace AKS Microsoft Entra, které kubelogin používá k provedení ověřování veřejného klienta jménem uživatele je 80faf920-1908-4b52-b5ef-a8e7bedfc67a
. ID klientské aplikace se používá v kódu zařízení a metodách interaktivního ověřování webového prohlížeče.
Související obsah
- Přečtěte si, jak integrovat AKS s Microsoft Entra ID v článku s postupy integrace Microsoft Entra ID spravovaného službou AKS.
- Pokud chcete začít se spravovanými identitami v AKS, přečtěte si téma Použití spravované identity v AKS.
- Pokud chcete začít s identitami úloh v AKS, přečtěte si téma Použití identity úloh v AKS.