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
- Ermöglicht den Zugriff auf den API-Aufruf
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action
. Dieser API-Aufruf führt die Administratoranmeldeinformationen für den Cluster auf. - Lädt kubeconfig für die Rolle clusterAdmin herunter.
- Ermöglicht den Zugriff auf den API-Aufruf
Benutzerrolle für Azure Kubernetes Service-Cluster
- Ermöglicht den Zugriff auf den API-Aufruf
Microsoft.ContainerService/managedClusters/listClusterUserCredential/action
. Dieser API-Aufruf führt die Benutzeranmeldeinformationen für den Cluster auf. - Lädt kubeconfig für die Rolle clusterUser herunter.
- Ermöglicht den Zugriff auf den API-Aufruf
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:
- 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. - Verwenden Sie die Befehle
az account show
undaz ad user show
, um Ihre Benutzer-ID abzurufen. - 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.
Azure Kubernetes Service