Verwenden der rollenbasierten Zugriffssteuerung (Azure Role-Based Access Control, RBAC) für die Kubernetes-Autorisierung
Gilt für: AKS auf Azure Stack HCI 23H2
Infrastrukturadministratoren können die rollenbasierte Zugriffssteuerung (Azure RBAC) von Azure verwenden, um zu steuern, wer auf die Kubeconfig-Datei und die berechtigungen zugreifen kann, die sie besitzen. Kubernetes-Operatoren können mithilfe des Kubectl-Tools basierend auf den angegebenen Berechtigungen mit Kubernetes-Clustern interagieren. Azure CLI bietet eine einfache Möglichkeit, die Zugriffsanmeldeinformationen und kubeconfig-Konfigurationsdatei abzurufen, um mithilfe von Kubectl eine Verbindung mit Ihren AKS-Clustern herzustellen.
Wenn Sie die integrierte Authentifizierung zwischen Microsoft Entra ID und AKS verwenden, können Sie Microsoft Entra-Benutzer, Gruppen oder Dienstprinzipale als Themen in Kubernetes rollenbasierte Zugriffssteuerung (Kubernetes RBAC) verwenden. Dank dieser Funktion müssen Sie Benutzeridentitäten und Anmeldeinformationen für Kubernetes nicht separat verwalten. Sie müssen azure RBAC und Kubernetes RBAC jedoch weiterhin separat einrichten und verwalten.
In diesem Artikel wird beschrieben, wie Sie Azure RBAC für Kubernetes-Clusterautorisierung mit Microsoft Entra ID und Azure-Rollenzuweisungen verwenden.
Eine konzeptionelle Übersicht finden Sie unter Azure RBAC für Kubernetes-Autorisierung für AKS, die von Azure Arc aktiviert sind.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
AKS unterstützt derzeit die Aktivierung von Azure RBAC nur während der erstbereitstellung und der Kubernetes-Clustererstellung. Sie können Azure RBAC nicht aktivieren, nachdem der Kubernetes-Cluster erstellt wurde.
Azure-Befehlszeilenschnittstelle. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Installieren Sie die neueste Version der
aksarc
connectedk8s
Azure CLI-Erweiterung. Beachten Sie, dass Sie erweiterungsversion 1.1.1 oder höher ausführenaksarc
müssen, um Azure RBAC zu aktivieren.az extension add --name aksarc az extension add --name connectedk8s
Wenn Sie die Erweiterung bereits installiert haben, aktualisieren Sie die
aksarc
Erweiterung auf die neueste Version:az extension update --name aksarc az extension update --name connectedk8s
Um mit Kubernetes-Clustern zu interagieren, müssen Sie Kubectl und Kubelogin installieren.
Sie benötigen die folgenden Berechtigungen, um Azure RBAC beim Erstellen eines Kubernetes-Clusters zu aktivieren.
- Zum Erstellen eines Kubernetes-Clusters benötigen Sie die Rolle "Azure Kubernetes Service Arc Contributor ".
- Um den
--enable-azure-rbac
Parameter zu verwenden, benötigen Sie die Rolle "Rollenbasierte Zugriffssteuerungsadministrator " für den Zugriff auf die Berechtigung "Microsoft.Authorization/roleAssignments/Write". Weitere Informationen finden Sie unter Integrierte Azure-Rollen. - Es kann bis zu fünf Minuten dauern, bis neue Rollenzuweisungen verteilt und vom Autorisierungsserver aktualisiert werden.
Schritt 1: Erstellen eines Azure RBAC-fähigen Kubernetes-Clusters
Sie können einen Azure RBAC-fähigen Kubernetes-Cluster für die Autorisierung und eine Microsoft Entra-ID für die Authentifizierung erstellen.
az aksarc create -n $aks_cluster_name -g $resource_group_name --custom-location $customlocation_ID --vnet-ids $logicnet_Id --generate-ssh-keys --control-plane-ip $controlplaneIP --enable-azure-rbac
Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster im JSON-Format zurückgegeben.
Schritt 2: Erstellen von Rollenzuweisungen für Benutzer für den Zugriff auf den Cluster
AKS, die von Azure Arc aktiviert sind, bietet die folgenden integrierten Rollen:
Role | Beschreibung |
---|---|
Anzeigeberechtigter für Azure Arc Kubernetes | Ermöglicht schreibgeschützten Zugriff, um die meisten Objekte in einem Namespace anzuzeigen. Ermöglicht nicht das Anzeigen von Rollen oder Rollenbindungen. Lässt die Anzeige secrets nicht zu, da read die Berechtigung für geheime Schlüssel den Zugriff auf ServiceAccount Anmeldeinformationen im Namespace ermöglicht, wodurch der API-Zugriff als jeder ServiceAccount im Namespace möglich ist (eine Form der Berechtigungseskalation). |
Schreibberechtigter für Azure Arc Kubernetes | Ermöglicht Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace. Ermöglicht das Anzeigen oder Ändern von Rollen oder Rollenbindungen nicht. Ermöglicht den Zugriff und secrets die Ausführung von Pods als beliebiger ServiceAccount Namespace, sodass er verwendet werden kann, um die API-Zugriffsebenen eines ServiceAccount beliebigen Namespaces zu erhalten. |
Azure Arc Kubernetes-Administrator | 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. Ermöglicht keinen Schreibzugriff auf das Ressourcenkontingent oder den Namespace selbst. |
Azure Arc Kubernetes-Clusteradministrator | Ermöglicht den "Superbenutzer"-Zugriff, um jede Aktion für jede Ressource auszuführen. Ermöglicht die vollständige Kontrolle über alle Ressourcen im Cluster und in allen Namespaces. |
Sie können den az role assignment create
Befehl verwenden, um Rollenzuweisungen zu erstellen.
Rufen Sie zunächst den $ARM-ID
Zielcluster ab, dem Sie eine Rolle zuweisen möchten.
$ARM_ID = (az connectedk8s show -g "$resource_group_name" -n $aks_cluster_name --query id -o tsv)
Verwenden Sie dann den az role assignment create
Befehl, um Ihrem Kubernetes-Cluster Rollen zuzuweisen. Sie müssen den $ARM_ID
ersten Schritt und den assignee-object-id
für diesen Schritt angeben. Dies assignee-object-id
kann eine Microsoft Entra-ID oder eine Dienstprinzipal-Client-ID sein.
Im folgenden Beispiel wird die Azure Arc Kubernetes Viewer-Rolle dem Kubernetes-Cluster zugewiesen:
az role assignment create --role "Azure Arc Kubernetes Viewer" --assignee <assignee-object-id> --scope $ARM_ID
In diesem Beispiel ist der Bereich die Azure Resource Manager-ID des Clusters. Es kann auch die Ressourcengruppe sein, die den Kubernetes-Cluster enthält.
Erstellen benutzerdefinierter Rollendefinitionen
Sie können Ihre eigene Rollendefinition für die Verwendung in den Rollenzuweisungen erstellen.
Das folgende Beispiel zeigt eine Rollendefinition, mit der ein Benutzer nur Bereitstellungen lesen kann. Weitere Informationen finden Sie in der vollständigen Liste der Datenaktionen, die zum Erstellen einer Rollendefinition verwendet werden können. Weitere Informationen zum Erstellen einer benutzerdefinierten Rolle finden Sie in den Schritten zum Erstellen einer benutzerdefinierten Rolle.
Um eigene benutzerdefinierte Rollendefinitionen zu erstellen, kopieren Sie das folgende JSON-Objekt in eine Datei namens custom-role.json. Ersetzen Sie den Platzhalter <subscription-id>
durch die tatsächliche Abonnement-ID. Die benutzerdefinierte Rolle verwendet eine der Datenaktionen. Sie ermöglicht Ihnen die Anzeige aller Bereitstellungen in dem Bereich (Cluster oder Namespace), in dem die Rollenzuweisung erstellt wird.
{
"Name": "AKS Arc Deployment Reader",
"Description": "Lets you view all deployments in cluster/namespace.",
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.Kubernetes/connectedClusters/apps/deployments/read"
],
"NotDataActions": [],
"assignableScopes": [
"/subscriptions/<YOUR SUBSCRIPTION ID>"
]
}
Informationen zu benutzerdefinierten Rollen und deren Erstellung finden Sie unter Azure custom roles.
Erstellen Sie die Rollendefinition mithilfe des az role definition create
Befehls, und legen Sie den --role-definition
Parameter auf die deploy-view.json Datei fest, die Sie im vorherigen Schritt erstellt haben:
az role definition create --role-definition @deploy-view.json
Weisen Sie die Rollendefinition einem Benutzer oder einer anderen Identität mithilfe des az role assignment create
Befehls zu:
az role assignment create --role "AKS Arc Deployment Reader" --assignee <assignee-object-id> --scope $ARM_ID
Schritt 3: Verwenden von Azure RBAC für Kubernetes-Autorisierung mit kubectl
Für den Zugriff auf den Kubernetes-Cluster mit den angegebenen Berechtigungen benötigt der Kubernetes-Operator die Microsoft Entra kubeconfig, die Sie mit dem az aksarc get-credentials
Befehl abrufen können. Dieser Befehl bietet Zugriff auf den admin-basierten Kubeconfig sowie eine benutzerbasierte Kubeconfig. Die admin-basierte Kubeconfig-Datei enthält geheime Schlüssel und sollte regelmäßig sicher gespeichert und gedreht werden. Andererseits enthält die benutzerbasierte Microsoft Entra ID kubeconfig keine geheimen Schlüssel und kann an Benutzer verteilt werden, die von ihren Clientcomputern eine Verbindung herstellen.
Um diesen Azure CLI-Befehl auszuführen, müssen Sie über Azure Kubernetes Service Arc Cluster-Benutzerrollenberechtigungen für den Cluster verfügen.
az aksarc get-credentials -g "$resource_group_name" -n $aks_cluster_name --file <file-name>
Jetzt können Sie Den Cluster mithilfe von Kubectl verwalten. Beispielsweise können Sie die Knoten in Ihrem Cluster mit kubectl get nodes
auflisten. Wenn Sie sie zum ersten Mal ausführen, müssen Sie sich anmelden, wie im folgenden Beispiel gezeigt:
kubectl get nodes
Um sich anzumelden, verwenden Sie einen Webbrowser, um die Seite https://microsoft.com/devicelogin
zu öffnen, und geben Sie den Code AAAAAAAAA ein, um sich zu authentifizieren.
Verwenden von Azure RBAC für Kubernetes-Autorisierung mit Kubelogin
AKS stellt das kubelogin
Plug-In bereit, um zusätzliche Szenarien wie nicht interaktive Anmeldungen, ältere kubectl
Versionen oder SSO über mehrere Cluster hinweg zu entsperren, ohne sich bei einem neuen Cluster anmelden zu müssen.
Sie können das kubelogin
-Plug-In verwenden, indem Sie den folgenden Befehl ausführen:
export KUBECONFIG=/path/to/kubeconfig
kubelogin convert-kubeconfig
Ähnlich wie kubectl
bei der ersten Ausführung müssen Sie sich anmelden, wie im folgenden Beispiel gezeigt:
kubectl get nodes
Um sich anzumelden, verwenden Sie einen Webbrowser, um die Seite https://microsoft.com/devicelogin
zu öffnen, und geben Sie den Code AAAAAAAAA ein, um sich zu authentifizieren.
Bereinigen von Ressourcen
Löschen von Rollenzuweisungen
# List role assignments
az role assignment list --scope $ARM_ID --query [].id -o tsv
# Delete role assignments
az role assignment delete --ids <LIST OF ASSIGNMENT IDS>
Löschen einer Rollendefinition
az role definition delete -n "AKS Arc Deployment Reader"
Nächste Schritte
- Rollenbasierte Zugriffssteuerung von Azure (Azure-RBAC)
- Zugriffs- und Identitätsoptionen für von Azure Arc aktivierte AKS
- Erstellen eines Azure-Dienstprinzipals mit der Azure CLI
- Verfügbare Azure-Berechtigungen für Hybrid + Multicloud
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für