Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das kubelogin-Plug-In in Azure ist ein client-go-Anmeldeinformations-Plug-In, das die Microsoft Entra-Authentifizierung implementiert. Das kubelogin-Plug-In bietet Funktionen, die im kubectl-Befehlszeilenstool nicht verfügbar sind. Weitere Informationen finden Sie in der Einführung zu kubelogin Einführung und kubectl.
Dieser Artikel bietet eine Übersicht und Beispiele zur Verwendung von kubelogin für die für AKS empfohlenen unterstützten Microsoft Entra-Authentifizierungsmethoden.
Einschränkungen der Kubelogin-Authentifizierung in AKS
- Gruppen, die in Microsoft Entra erstellt werden, werden nur durch ihren ObjectID-Wert und nicht durch ihren Anzeigenamen eingeschlossen. Der Befehl
sAMAccountNameist nur für Gruppen verfügbar, die aus dem lokalen Windows Server Active Directory synchronisiert werden.
- Die Methode für die Dienstprinzipalauthentifizierung funktioniert nur mit verwalteter Microsoft Entra ID Integration, nicht bei der Legacy-Microsoft Entra ID-Integration.
- Der Dienstprinzipal kann Mitglied von maximal 200 Microsoft Entra Gruppen sein. Wenn Sie mehr als 200 Gruppen haben, sollten Sie Anwendungsrollen verwenden.
- Die Gerätecode-Authentifizierungsmethode funktioniert nicht, wenn eine Microsoft Entra-Richtlinie für den bedingten Zugriff auf einen Microsoft Entra-Mandanten festgelegt ist. Verwenden Sie in diesem Szenario stattdessen die interaktive Webbrowserauthentifizierung.
- Die Azure CLI-Authentifizierungsmethode funktioniert nur mit Microsoft Entra.
Funktionsweise der Kubelogin-Authentifizierung in AKS
AKS-Cluster mit Kubernetes Version 1.24 oder höher verwenden automatisch das Kubelogin exec-Plug-In-Format. Cluster mit Kubernetes-Versionen vor 1.24 erfordern eine manuelle Konvertierung in dieses Format.
Verwenden Sie für die meisten Interaktionen mit Kubelogin den convert-kubeconfig Unterbefehl. Der Unterbefehl verwendet die kubeconfig-Datei, die Sie in --kubeconfig oder in der KUBECONFIG Umgebungsvariable angeben, um die endgültige Kubeconfig-Datei basierend auf der angegebenen Authentifizierungsmethode in das Exec-Format zu konvertieren.
Die von kubelogin implementierten Authentifizierungsmethoden sind Microsoft-Entra-OAuth-2.0-Token-Grant-Flows. Das Cacheverhalten hängt von der Authentifizierungsmethode ab. Gerätecode-, interaktive Webbrowser- und Resource-Owner-Password-Credential-(ROPC)-Authentifizierungen speichern Authentifizierungsdatensätze im kubelogin-Cacheverzeichnis. Methoden wie Azure CLI und Azure Developer CLI verwenden den vom jeweiligen Befehlszeilentool verwalteten Cache anstelle des Kubelogin-Caches.
Gerätecodeauthentifizierung
Der Gerätecode ist die Standardauthentifizierungsmethode für den Unterbefehl convert-kubeconfig. Bei dieser Authentifizierungsmethode wird der Gerätecode abgefragt, damit sich der Benutzer über eine Browsersitzung anmelden kann.
Hinweis
Bevor die Plug-Ins kubelogin und exec eingeführt wurden, unterstützte die Azure-Authentifizierungsmethode in kubectl ausschließlich den Gerätecodeflow. Es wurde eine frühere Version einer Bibliothek verwendet, die ein Token erzeugt, das das audience-Anspruch mit einem spn:-Präfix enthält. Es ist nicht kompatibel mit Microsoft Entra, das einen on-behalf-of (OBO) Flow verwendet. Wenn Sie den Unterbefehl convert-kubeconfig ausführen, entfernt kubelogin das spn:-Präfix aus dem Zielgruppenanspruch.
Parameter für die Gerätecodeauthentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der Gerätecodeauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l devicecode (wahlweise) |
Gibt die Kubelogin-Authentifizierungsmethode an. Dieser Parameter ist optional, da Gerätecode die Standardmethode ist. |
--legacy |
Verwendet Legacy-Verhalten für Cluster, die mit Legacy-Microsoft Entra ID-Integration konfiguriert sind. Wenn die Kubeconfig-Datei für einen solchen Cluster ist, fügt Kubelogin automatisch das --legacy Flag hinzu. |
--cache-dir |
Überschreibt den Standardpfad des Tokencacheverzeichnisses, das ${HOME}/.kube/cache/kubelogin ist. |
Azure CLI-Authentifizierung
Die Azure CLI -Authentifizierungsmethode (Befehl: -l azurecli) verwendet den angemeldeten Kontext, den die Azure CLI zum Abrufen des Zugriffstokens herstellt. Das Token wird in demselben Microsoft Entra-Mandanten wie az login ausgegeben. Kubelogin schreibt keine Token in die Tokencachedatei, da die Azure CLI sie bereits verwaltet.
Parameter für die Azure CLI-Authentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der Azure CLI-Authentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l azurecli |
Gibt die Kubelogin-Authentifizierungsmethode an. |
--azure-config-dir |
Gibt das Azure CLI-Konfigurationsverzeichnis an. Das Standardverzeichnis ist ${HOME}/.azure. |
Anmelden bei Azure
Melden Sie sich mit dem az login Befehl bei Azure an.
az login
Interaktive Authentifizierung des Webbrowsers
Die interaktive Authentifizierungsmethode öffnet automatisch einen Webbrowser, um den Benutzer anzumelden (Befehl: -l interactive). Nachdem der Benutzer authentifiziert wurde, leitet der Browser mithilfe der überprüften Anmeldeinformationen an den lokalen Webserver um. Diese Authentifizierungsmethode entspricht der Richtlinie für bedingten Zugriff.
Sie können entweder ein Bearertoken oder ein PoP-Token (Proof-of-Possession) mit dieser Authentifizierungsmethode verwenden.
Parameter für die Bearertokenauthentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der Bearertokenauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l interactive |
Gibt die Kubelogin-Authentifizierungsmethode an. |
--cache-dir |
Überschreibt den Standardpfad des Tokencacheverzeichnisses, das ${HOME}/.kube/cache/kubelogin ist. |
Parameter für die PoP-Tokenauthentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der PoP-Tokenauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l interactive |
Gibt die Kubelogin-Authentifizierungsmethode an. |
--pop-enabled |
Aktiviert die PoP-Tokenauthentifizierung. |
--pop-claims |
Gibt die PoP-Tokenansprüche in einem Schlüsselwert-Paarformat an. Beispiel: u=/ARM/ID/OF/CLUSTER. |
Dienstprinzipalauthentifizierung
Die Dienstprinzipal-Authentifizierungsmethode (Befehl: -l spn) nutzt einen Dienstprinzipal, um den Benutzer zu authentifizieren. Sie können die Anmeldeinformation durch Setzen einer Umgebungsvariablen oder durch Verwendung der Anmeldeinformationen in einem Befehlszeilenargument bereitstellen. Die unterstützten Anmeldeinformationen, die Sie verwenden können, sind ein Kennwort oder ein PFX-Clientzertifikat (Personal Information Exchange).
Parameter für die Authentifizierung des Dienstprinzipals
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der Dienstprinzipalauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l spn |
Gibt die Kubelogin-Authentifizierungsmethode an. |
--client-id |
Die Anwendungs-ID (Client-ID) des Dienstprinzipals. |
--client-secret |
Das Kundengeheimnis des Dienstherrn. |
Authentifizierung der verwalteten Identität
Verwenden Sie die Verwaltete Identität (Befehl: -l msi) Authentifizierungsmethode für Anwendungen, die eine Verbindung mit Ressourcen herstellen, die die Microsoft Entra-Authentifizierung unterstützen. Beispiele hierfür sind der Zugriff auf Azure Ressourcen wie ein Azure virtueller Computer (VM), Virtual Machine Scale Sets oder Azure Cloud Shell.
Sie können die standardverwaltete Identität verwenden, die der Ressource oder einer bestimmten vom Benutzer zugewiesenen verwalteten Identität zugewiesen ist.
Parameter für die verwaltete Identitätsauthentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit verwalteter Identitätsauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l msi |
Gibt die Kubelogin-Authentifizierungsmethode an. |
--client-id |
Die Anwendungs-ID (Client-ID) der vom Benutzer zugewiesenen verwalteten Identität. Wenn Sie diesen Parameter nicht angeben, wird die standardmäßige verwaltete Identität verwendet. |
Workload-Identitätsauthentifizierung
Die Workload-Identitätsmethode (Befehl: -l workloadidentity) verwendet Identitätsanmeldeinformationen, die mit Microsoft Entra verbunden sind, um den Zugriff auf AKS-Cluster zu authentifizieren. Die Methode verwendet die integrierte Authentifizierung von Microsoft Entra. Sie funktioniert, indem die folgenden Umgebungsvariablen festgelegt werden:
| Variable | Description |
|---|---|
AZURE_CLIENT_ID |
Die Microsoft Entra-Anwendungs-ID, die mit der Workload-Identität verbunden ist. |
AZURE_TENANT_ID |
Die Microsoft Entra-Mandanten-ID. |
AZURE_FEDERATED_TOKEN_FILE |
Die Datei, die eine signierte Assertion der Workload-Identität enthält, z. B. ein Kubernetes-Token (Projected Service Account, JWT). |
AZURE_AUTHORITY_HOST |
Die Basis-URL einer Microsoft Entra-Autorität. Beispiel: https://login.microsoftonline.com/. |
Sie können eine Workload-Identität verwenden, um von CI/CD-Systemen wie GitHub oder Argo CD aus auf Kubernetes-Cluster zuzugreifen, ohne in den externen Systemen Anmeldeinformationen für Dienstprinzipale zu speichern. Um OpenID Connect (OIDC) Federation von GitHub aus zu konfigurieren, sehen Sie sich das Beispiel mit dem OIDC-Partnerverbund an.
Parameter für die Workload-Identitätsauthentifizierung
In der folgenden Tabelle sind Parameter aufgeführt, die Sie mit der Workload-Identitätsauthentifizierung verwenden können:
| Parameter | Description |
|---|---|
-l workloadidentity |
Gibt die Kubelogin-Authentifizierungsmethode an. |
Azure Entwickler-CLI-Authentifizierung
Die Authentifizierungsmethode der Azure Developer CLI (Befehl: -l azd) verwendet den Anmeldekontext, den die Azure Developer CLI zum Abrufen des Zugriffstokens bereitstellt. Das Token wird in demselben Microsoft Entra-Mandanten wie azd auth login ausgegeben. Kubelogin schreibt keine Token in den Tokencache, da die Azure Developer CLI sie verwaltet.
Diese Authentifizierungsmethode funktioniert nur mit verwaltetem Microsoft Entra in AKS. Weitere Informationen finden Sie in der Übersicht über die Azure Developer CLI.
Azure Pipelines-Authentifizierung
Die Azure Pipelines (Befehl: -l azurepipelines) Authentifizierungsmethode verwendet eine Azure Resource Manager Dienstverbindung und das Systemzugriffstoken der Pipeline zur Authentifizierung. Diese Methode funktioniert nur in Azure Pipelines. Die Pipeline muss über eine Azure Resource Manager Dienstverbindung verfügen und Skripts den Zugriff auf das OAuth-Token ermöglichen.
Wenn Sie eine AzureCLI@2 Aufgabe mit einer Azure Resource Manager Dienstverbindung verwenden, kann Kubelogin die Mandanten-ID, Client-ID und Dienstverbindungs-ID verwenden, die Azure Pipelines als Umgebungsvariablen bereitstellt. Weitere Informationen finden Sie unter Azure Pipelines Dienstverbindungen.
Warning
Kubelogin unterstützt auch die RoPC-Authentifizierungsmethode (Resource Owner Password Credential). Microsoft empfiehlt, ROPC nicht zu verwenden, da sie nicht mit mehrstufiger Authentifizierung und einigen Hybrididentitätsszenarien kompatibel ist. Weitere Informationen finden Sie in den Microsoft Identity Platform ROPC-Anleitungen.
Exportieren des Kubeconfig-Dateipfads
Bevor Sie den convert-kubeconfig Unterbefehl ausführen, exportieren Sie den Kubeconfig-Dateipfad in die KUBECONFIG Umgebungsvariable. Beispiel:
export KUBECONFIG=/path/to/kubeconfig
Konvertieren der Kubeconfig-Datei
Führen Sie den convert-kubeconfig Unterbefehl aus, um die Kubeconfig-Datei zu konvertieren, um das exec-Plug-In für die ausgewählte Authentifizierungsmethode zu verwenden.
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"
- Verwenden von Umgebungsvariablen
- Verwenden von Befehlszeilenargumenten
- Verwenden eines Clientzertifikats
- Verwenden eines PoP-Tokens mit Umgebungsvariablen
Führen Sie den
convert-kubeconfigUnterbefehl aus, um die Kubeconfig-Datei zu konvertieren, um das exec-Plug-In zu verwenden.kubelogin convert-kubeconfig -l spnLegen Sie die Umgebungsvariablen für die Client-ID und den geheimen Clientschlüssel oder das Clientzertifikat fest. Beispiel:
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
Konvertieren der Kubeconfig-Datei mithilfe der Azure Developer CLI
Melden Sie sich mit der Azure Developer CLI an.
azd auth loginKonvertieren Sie die Kubeconfig-Datei, um die Azure Developer CLI-Authentifizierungsmethode zu verwenden.
kubelogin convert-kubeconfig -l azd
Konvertieren der Kubeconfig-Datei in Azure Pipelines
Konvertieren Sie in einer AzureCLI@2-Aufgabe, die eine Azure Resource Manager-Dienstverbindung verwendet, die kubeconfig-Datei so, dass sie die Azure Pipelines-Authentifizierung verwendet.
kubelogin convert-kubeconfig -l azurepipelines
Entfernen zwischengespeicherter Token
Entfernen Sie zwischengespeicherte Token mithilfe des kubelogin remove-cache-dir Befehls.
kubelogin remove-cache-dir
Abrufen von Knoteninformationen
Abrufen von Knoteninformationen mithilfe des kubectl get Befehls.
kubectl get nodes
So verwenden Sie kubelogin-Anwendungs-IDs mit AKS
AKS verwendet zwei Erstanbieteranwendungen von Microsoft Entra. Diese Anwendungs-IDs sind in allen Umgebungen identisch.
| Application | Anwendungs-ID (GUID) | Verwendet in |
|---|---|---|
AKS-Serveranwendung (--server-id) |
6dae42f8-4368-4678-94ff-3960e28e3630 |
Die Zielgruppe des Tokens für alle unterstützten kubelogin-Authentifizierungsmethoden beim Zugriff auf AKS. |
Öffentliche AKS-Clientanwendung (--client-id) |
80faf920-1908-4b52-b5ef-a8e7bedfc67a |
Gerätecode, interaktive Webbrowserauthentifizierung und ROPC-Authentifizierung. |
Wenn Sie kubelogin get-token direkt für AKS aufrufen, geben Sie die AKS-Serveranwendungs-ID mit --server-id an. Modespezifische Parameter finden Sie in der Kubelogin-Referenzget-token.
Hinweis
Die Anwendungs-ID des öffentlichen AKS-Clients in diesem Abschnitt ist der Wert --client-id für die Gerätecode-, interaktive Webbrowser- und ROPC-Authentifizierung. Bei der Authentifizierung mit Dienstprinzipal und verwalteter Identität identifiziert --client-id stattdessen den Dienstprinzipal oder die benutzerseitig zugewiesene verwaltete Identität.
Rufen Sie beispielsweise ein Token mithilfe der Gerätecodeauthentifizierung und der AKS-Anwendungs-IDs ab:
kubelogin get-token \
--login devicecode \
--server-id 6dae42f8-4368-4678-94ff-3960e28e3630 \
--client-id 80faf920-1908-4b52-b5ef-a8e7bedfc67a \
--tenant-id <microsoft-entra-tenant-id>
Verwandte Inhalte
- Erfahren Sie, wie Sie AKS mit Microsoft Entra im How-to-Artikel zur Integration von Microsoft Entra integrieren.
- Informationen zu den ersten Schritten mit verwalteten Identitäten in AKS finden Sie unter Verwenden einer verwalteten Identität in AKS.
- Informationen zu den ersten Schritten mit Workloadidentitäten in AKS finden Sie unter Verwenden einer Workloadidentität in AKS.