Verwenden der rollenbasierten Zugriffssteuerung in Azure für die Kubernetes-Autorisierung
In diesem Artikel wird beschrieben, wie Sie Azure RBAC für die Kubernetes-Autorisierung verwenden, die eine einheitliche Verwaltungs- und Zugriffssteuerung für Azure-Ressourcen, AKS- und Kubernetes-Ressourcen ermöglicht. Weitere Informationen finden Sie unter Verwenden von Azure RBAC für die Kubernetes-Autorisierung.
Hinweis
Wenn Sie die integrierte Authentifizierung zwischen Microsoft Entra ID und AKS nutzen, können Sie Microsoft Entra-Benutzer, -Gruppen oder -Dienstprinzipale als Entitäten in der rollenbasierten Zugriffssteuerung in Kubernetes (Kubernetes RBAC) verwenden. Dank dieser Funktion müssen Sie Benutzeridentitäten und Anmeldeinformationen für Kubernetes nicht separat verwalten. Sie müssen jedoch weiterhin Azure RBAC und Kubernetes RBAC separat einrichten und verwalten.
Voraussetzungen
- Azure CLI-Version 2.24.0 oder höher muss installiert und konfiguriert sein. 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. - Sie benötigen
kubectl
mit der Mindestversion 1.18.3. - Sie müssen die verwaltete Microsoft Entra-Integration in Ihrem Cluster aktiviert haben, bevor Sie die Azure RBAC für Kubernetes-Autorisierung hinzufügen können. Wenn Sie die verwaltete Microsoft Entra-Integration aktivieren müssen, lesen Sie Verwenden der Microsoft Entra-ID in AKS.
- Wenn Sie CRDs verwenden und benutzerdefinierte Rollendefinitionen erstellen, besteht zurzeit die einzige Möglichkeit zum Abdecken von CRDs darin,
Microsoft.ContainerService/managedClusters/*/read
einzusetzen. Für die restlichen Objekte können Sie die spezifischen API-Gruppen verwenden, z. B.Microsoft.ContainerService/apps/deployments/read
. - Es kann bis zu fünf Minuten dauern, bis neue Rollenzuweisungen verteilt und vom Autorisierungsserver aktualisiert werden.
- Azure RBAC für die Kubernetes-Autorisierung erfordert, dass der für die Authentifizierung konfigurierte Microsoft Entra-Mandant der gleiche ist wie der Mandant für das Abonnement, das ihren AKS-Cluster enthält.
Erstellen Sie einen neuen AKS-Cluster mit verwalteter Microsoft Entra-Integration und Azure RBAC für Kubernetes-Autorisierung
Erstellen Sie mithilfe des Befehls
az group create
eine Azure-Ressourcengruppe.export RESOURCE_GROUP=<resource-group-name> export LOCATION=<azure-region> az group create --name $RESOURCE_GROUP --location $LOCATION
Erstellen Sie mit dem Befehl
az aks create
einen AKS-Cluster mit verwalteter Microsoft Entra-Integration und Azure RBAC für Kubernetes-Autorisierung.export CLUSTER_NAME=<cluster-name> az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --enable-azure-rbac \ --generate-ssh-keys
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
"AADProfile": { "adminGroupObjectIds": null, "clientAppId": null, "enableAzureRbac": true, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "****-****-****-****-****" }
Aktivieren von Azure RBAC in einem vorhandenen AKS-Cluster
Verwenden Sie den Befehl
az aks update
mit dem Flag--enable-azure-rbac
, um die Azure RBAC für die Kubernetes-Autorisierung für einen vorhandenen AKS-Cluster zu aktivieren.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-azure-rbac
Deaktivieren der Azure RBAC für Kubernetes-Autorisierung über einen AKS-Cluster
Verwenden Sie den Befehl
az aks update
mit dem Flag--disable-azure-rbac
, um Azure RBAC für Kubernetes-Autorisierung aus einem vorhandenen AKS-Cluster zu entfernen.az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-azure-rbac
Integrierte AKS-Rollen
AKS stellt die folgenden vier integrierten Rollen bereit.
Role | Beschreibung |
---|---|
RBAC-Leser von Azure Kubernetes Service | Ermöglicht schreibgeschützten Zugriff, um die meisten Objekte in einem Namespace anzuzeigen. Es ist nicht möglich, Rollen oder Rollenbindungen anzuzeigen. Diese Rolle lässt das Anzeigen von Secrets nicht zu, da das Lesen des Inhalts von Geheimnissen den Zugriff auf ServiceAccount-Anmeldeinformationen im Namespace ermöglicht, was den API-Zugriff als beliebiges Dienstkonto im Namespace ermöglichen würde (eine Form von Berechtigungsausweitung). |
RBAC-Writer von Azure Kubernetes Service | Ermöglicht Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Diese Rolle lässt das Anzeigen oder Ändern von Rollen oder Rollenbindungen nicht zu. Diese Rolle ermöglicht jedoch den Zugriff auf Secrets und das Ausführen von Pods als beliebiges Dienstkonto im Namespace, sodass sie verwendet werden kann, um die API-Zugriffsebenen eines beliebigen ServiceAccount im Namespace zu erhalten. |
RBAC-Administrator von Azure Kubernetes Service | Ermöglicht Administratorzugriff, der in einem Namespace erteilt werden soll. Ermöglicht Lese-/Schreibzugriff auf die meisten Ressourcen in einem Namespace (oder Clusterbereich), einschließlich der Möglichkeit zum Erstellen von Rollen und Rollenbindungen innerhalb des Namespace. Diese Rolle lässt keinen Schreibzugriff auf das Ressourcenkontingent oder den Namespace selbst zu. |
RBAC-Clusteradministrator von Azure Kubernetes Service | Ermöglicht Superuserzugriff, um beliebige Aktionen für beliebige Ressourcen auszuführen. Diese Rolle ermöglicht die vollständige Kontrolle über alle Ressourcen im Cluster und in allen Namespaces. |
Erstellen von Rollenzuweisungen für Benutzer für den Clusterzugriff
Rufen Sie Ihre AKS-Ressourcen-ID mithilfe des Befehls
az aks show
ab.AKS_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --query id --output tsv)
Erstellen Sie eine Rollenzuweisung anhand des Befehls
az role assignment create
.<AAD-ENTITY-ID>
kann ein Benutzername oder die Client-ID eines Dienstprinzipals sein. Im folgenden Beispiel wird eine Rollenzuweisung für die Rolle RBAC-Administrator für Azure Kubernetes Service erstellt.az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Hinweis
Sie können die Azure Kubernetes Service RBAC Reader- und Azure Kubernetes Service RBAC Writer-Rollenzuweisungen erstellen, die auf einen bestimmten Namespace innerhalb des Clusters ausgerichtet sind, indem Sie den Befehl
az role assignment create
verwenden und den Bereich auf den gewünschten Namespace festlegen.az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Erstellen von benutzerdefinierten Rollendefinitionen
Im Folgenden finden Sie ein Beispiel für eine benutzerdefinierte Rollendefinition, die es Benutzern ermöglicht, nur Bereitstellungen zu lesen. Andere Berechtigungen bestehen nicht. Eine vollständige Liste der möglichen Aktionen finden Sie unter Microsoft.ContainerService-Vorgänge.
Um Ihre eigenen benutzerdefinierten Rollendefinitionen zu erstellen, kopieren Sie die folgende Datei, ersetzen Sie
<YOUR SUBSCRIPTION ID>
durch Ihre eigene Abonnement-ID, und speichern Sie sie dann unterdeploy-view.json
.{ "Name": "AKS Deployment Reader", "Description": "Lets you view all deployments in cluster/namespace.", "Actions": [], "NotActions": [], "DataActions": [ "Microsoft.ContainerService/managedClusters/apps/deployments/read" ], "NotDataActions": [], "assignableScopes": [ "/subscriptions/<YOUR SUBSCRIPTION ID>" ] }
Erstellen Sie die Rollendefinition mithilfe des Befehls
az role definition create
und legen Sie die--role-definition
auf diedeploy-view.json
-Datei fest, die Sie im vorherigen Schritt erstellt haben.az role definition create --role-definition @deploy-view.json
Weisen Sie die Rollendefinition mithilfe des
az role assignment create
-Befehls einem Benutzer oder einer anderen Identität zu.az role assignment create --role "AKS Deployment Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID
Verwenden von Azure RBAC für Kubernetes-Autorisierung mit kubectl
Stellen Sie sicher, dass Sie über die integrierte Rolle Azure Kubernetes Service Clusterbenutzer verfügen, und rufen Sie dann mithilfe des Befehls
az aks get-credentials
die kubeconfig Ihres AKS-Clusters ab.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Jetzt können Sie über
kubectl
Ihren Cluster verwalten. Beispielsweise können Sie die Knoten in Ihrem Cluster mitkubectl get nodes
auflisten.kubectl get nodes
Beispielausgabe:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Verwenden von Azure RBAC für Kubernetes-Autorisierung mit kubelogin
AKS hat das kubelogin
-Plug-In erstellt, um Szenarien wie nicht interaktive Anmeldungen, ältere kubectl
-Versionen oder die Nutzung des einmaligen Anmeldens für mehrere Cluster zu entsperren, ohne dass Sie sich bei einem neuen Cluster anmelden müssen.
Verwenden Sie das
kubelogin
-Plug-In, indem Sie den folgenden Befehl ausführen:export KUBECONFIG=/path/to/kubeconfig kubelogin convert-kubeconfig
Jetzt können Sie über
kubectl
Ihren Cluster verwalten. Beispielsweise können Sie die Knoten in Ihrem Cluster mitkubectl get nodes
auflisten.kubectl get nodes
Beispielausgabe:
NAME STATUS ROLES AGE VERSION aks-nodepool1-93451573-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-93451573-vmss000002 Ready agent 3h6m v1.15.11
Bereinigen von Ressourcen
Löschen von Rollenzuweisungen
Listen Sie Rollenzuweisungen mithilfe des Befehls
az role assignment list
auf:az role assignment list --scope $AKS_ID --query [].id --output tsv
Löschen Sie Rollenzuweisungen mithilfe des Befehls
az role assignment delete
:az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Löschen einer Rollendefinition
Löschen Sie die benutzerdefinierte Rollendefinition mithilfe des Befehls
az role definition delete
:az role definition delete --name "AKS Deployment Reader"
Löschen der Ressourcengruppe und des AKS-Clusters
Löschen Sie mithilfe des Befehls
az group delete
die Ressourcengruppe und den AKS-Cluster:az group delete --name $RESOURCE_GROUP --yes --no-wait
Nächste Schritte
Weitere Informationen zu AKS-Authentifizierung und -Autorisierung, Kubernetes RBAC und Azure RBAC finden Sie hier:
Azure Kubernetes Service