Definieren des Zugriffs auf die Kubernetes-Konfigurationsdatei in Azure Kubernetes Service (AKS) mithilfe der rollenbasierten Zugriffssteuerung von Azure

Sie können das Tool kubectl verwenden, um mit Kubernetes-Clustern zu interagieren. Über die Azure-Befehlszeilenschnittstelle können Sie ganz einfach die Anmeldeinformationen und die kubeconfig-Konfigurationsdatei für den Zugriff sowie die Konfigurationsinformationen abrufen, die Sie benötigen, um über kubectl eine Verbindung mit Ihren AKS-Clustern herzustellen. Sie können die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) verwenden, um den Zugriff auf die kubeconfig-Datei und die Berechtigungen zu begrenzen.

In diesem Artikel erfahren Sie, wie Sie Azure-Rollen zuweisen, die einschränken, wer die Konfigurationsinformationen für einen AKS-Cluster abrufen kann.

Voraussetzungen

  • Es wird vorausgesetzt, dass Sie über ein AKS-Cluster verfügen. Wenn Sie einen AKS-Cluster benötigen, erstellen Sie einen mithilfe der Azure CLI, von Azure PowerShell oder des Azure-Portals.
  • Für den Artikel wird außerdem Version 2.0.65 oder höher der Azure CLI benötigt. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Verfügbare Berechtigungen für Clusterrollen

Wenn Sie das Tool kubectl verwenden, um mit einem AKS-Cluster zu interagieren, definiert eine Konfigurationsdatei namens kubeconfig die Clusterverbindungsinformationen. Diese Konfigurationsdatei ist üblicherweise unter ~/.kube/config gespeichert. In dieser Datei vom Typ kubeconfig können mehrere Cluster definiert werden. Mit dem Befehl kubectl config use-context können Sie zwischen Clustern wechseln.

Der Befehl az aks get-credentials ermöglicht das Abrufen der Anmeldeinformationen für den Zugriff auf einen AKS-Cluster und führt diese in der Datei kubeconfig zusammen. Der Zugriff auf diese Anmeldeinformationen kann mithilfe von Azure RBAC gesteuert werden. Mithilfe dieser Azure-Rollen können Sie definieren, wer die Datei kubeconfig abrufen kann und über welche Berechtigungen diese Personen innerhalb des Clusters verfügen sollen.

Es gibt zwei Azure-Rollen, die Sie auf einen Microsoft Entra-Benutzer oder eine Gruppe anwenden können:

  • Administratorrolle für Azure Kubernetes Service-Cluster

  • Benutzerrolle für Azure Kubernetes Service-Cluster

Hinweis

In Clustern, die Microsoft Entra ID verwenden, verfügen Benutzer mit der Rolle clusterUser über eine leere Datei kubeconfig, die zur Anmeldung auffordert. Nachdem die Benutzer angemeldet sind, haben Sie Zugriff basierend auf ihren Microsoft Entra-Benutzer- oder -Gruppeneinstellungen. Benutzer mit der Rolle clusterAdmin haben Administratorzugriff.

Bei Clustern, bei denen Microsoft Entra nicht verwendet wird, hat die clusterUser-Rolle die gleiche Auswirkung wie die clusterAdmin-Rolle.

Zuweisen von Rollenberechtigungen zu einem Benutzer oder einer Gruppe

Wenn Sie eine der Azure-Rollen zuweisen möchten, benötigen Sie die Ressourcen-ID des AKS-Clusters und die ID des Microsoft Entra-Benutzerkontos oder -Gruppe. Gehen Sie wie folgt vor:

  1. Rufen Sie die Clusterressourcen-ID mithilfe des Befehls az aks show für den Cluster myAKSCluster in der Ressourcengruppe myResourceGroup ab. Geben Sie nach Bedarf Ihren eigenen Cluster- und Ressourcengruppennamen an.
  2. Verwenden Sie die Befehle az account show und az ad user show, um Ihre Benutzer-ID abzurufen.
  3. Weisen Sie die Rolle mit dem Befehl az role assignment create zu.

Im folgenden Beispiel wird die Administratorrolle für Azure Kubernetes Service-Cluster einem einzelnen Benutzerkonto zugewiesen:

# Get the resource ID of your AKS cluster
AKS_CLUSTER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query id -o tsv)

# Get the account credentials for the logged in user
ACCOUNT_UPN=$(az account show --query user.name -o tsv)
ACCOUNT_ID=$(az ad user show --id $ACCOUNT_UPN --query objectId -o tsv)

# Assign the 'Cluster Admin' role to the user
az role assignment create \
    --assignee $ACCOUNT_ID \
    --scope $AKS_CLUSTER \
    --role "Azure Kubernetes Service Cluster Admin Role"

Wenn Sie einer Microsoft Entra-Gruppe Berechtigungen zuweisen möchten, aktualisieren Sie den im vorherigen Beispiel gezeigten Parameter --assignee mit der Objekt-ID der Gruppe anstatt der des Benutzers.

Verwenden Sie den Befehl az ad group show, um die Objekt-ID für eine Gruppe abzurufen. Der folgende Befehl ruft die Objekt-ID der Microsoft Entra-Gruppe namens appdev ab:

az ad group show --group appdev --query objectId -o tsv

Wichtig

In manchen Fällen, wie bei Microsoft Entra-Gastbenutzern, weicht der user.name im Konto vom userPrincipalName ab.

$ az account show --query user.name -o tsv
user@contoso.com

$ az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv
user_contoso.com#EXT#@contoso.onmicrosoft.com

Legen Sie in diesem Fall den Wert von ACCOUNT_UPN auf den userPrincipalName des Microsoft Entra-Benutzers fest. Wenn Ihr Konto user.name beispielsweise user@contoso.com lautet, sieht diese Aktion wie folgt aus:

ACCOUNT_UPN=$(az ad user list --query "[?contains(otherMails,'user@contoso.com')].{UPN:userPrincipalName}" -o tsv)

Abrufen und Überprüfen der Konfigurationsinformationen

Rufen Sie nach dem Zuweisen der Rollen mithilfe des Befehls az aks get-credentials die Definition der Kubernetes-Konfiguration (kubeconfig) für Ihren AKS-Cluster ab. Im folgenden Beispiel werden die Anmeldeinformationen vom Typ --admin abgerufen, die ordnungsgemäß funktionieren, wenn dem Benutzer die Clusteradministratorrolle erteilt wurde:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --admin

Anschließend können Sie sich mithilfe des Befehls kubectl config view anhand des Kontexts für den Cluster vergewissern, dass die Administratorkonfigurationsinformationen angewendet wurden.

$ kubectl config view

Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://myaksclust-myresourcegroup-19da35-4839be06.hcp.eastus.azmk8s.io:443
  name: myAKSCluster
contexts:
- context:
    cluster: myAKSCluster
    user: clusterAdmin_myResourceGroup_myAKSCluster
  name: myAKSCluster-admin
current-context: myAKSCluster-admin
kind: Config
preferences: {}
users:
- name: clusterAdmin_myResourceGroup_myAKSCluster
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: e9f2f819a4496538b02cefff94e61d35

Entfernen von Rollenberechtigungen

Verwenden Sie den Befehl az role assignment delete, um Rollenzuweisungen zu entfernen. Geben Sie die mit den vorherigen Schritten abgerufene Konto-ID und Clusterressourcen-ID an. Wenn Sie die Rolle nicht einem Benutzer, sondern einer Gruppe zugewiesen haben, geben Sie für den Parameter --assignee die entsprechende Gruppenobjekt-ID und nicht die Kontoobjekt-ID an.

az role assignment delete --assignee $ACCOUNT_ID --scope $AKS_CLUSTER

Nächste Schritte

Integrieren Sie die Microsoft Entra-Authentifizierung, um die Sicherheit des Zugriffs auf AKS-Cluster zu verbessern.