Freigeben über


Rollenbasierte Zugriffssteuerung in Azure Operator Nexus Kubernetes-Clustern

Dieser Artikel enthält einen umfassenden Leitfaden zum Verwalten des Zugriffs auf Nexus Kubernetes-Cluster mithilfe von Microsoft Entra ID. Insbesondere konzentrieren wir uns auf die rollenbasierte Zugriffssteuerung, mit der Sie Benutzern basierend auf ihren Rollen oder Zuständigkeiten innerhalb Ihrer Organisation Berechtigungen erteilen können.

Voraussetzungen

  1. Erstellen Sie zunächst eine Microsoft Entra-Gruppe für Ihre Clusteradministratoren, und weisen Sie ihr Mitglieder zu. Microsoft Entra ID ermöglicht den Zugriff auf die Gruppe als Ganzes, anstatt Berechtigungen für jeden Benutzer einzeln zu verwalten.
  2. Verwenden Sie die Gruppen-ID, die Sie beim Erstellen des Nexus Kubernetes-Clusters als Wert für „adminGroupObjectIds“ erstellt haben, um sicherzustellen, dass die Mitglieder der Gruppe Berechtigungen zum Verwalten des Clusters erhalten. Anweisungen zum Erstellen und Zugreifen auf das Nexus Kubernetes-Cluster finden Sie in der Schnellstartanleitung.

Administratorzugriff auf das Cluster

Nexus erstellt eine Kubernetes-Clusterrollenbindung mit der Kubernetes-Standardrolle cluster-admin und den Microsoft Entra-Gruppen, die Sie als adminGroupObjectIds angegeben haben. Die Clusteradministratoren haben Vollzugriff auf das Cluster und können alle Vorgänge auf dem Cluster ausführen. Die Clusteradministratoren können auch anderen Benutzern Zugriff gewähren, indem sie sie der entsprechenden Microsoft Entra-Gruppe zuweisen.

Hinweis

Wenn Sie einen Nexus Kubernetes-Cluster erstellen, erstellt Nexus automatisch eine verwaltete Ressourcengruppe, die zum Speichern der Clusterressourcen bestimmt ist. Innerhalb dieser Gruppe wird die mit Arc verbundene Clusterressource eingerichtet.

Um auf Ihren Cluster zuzugreifen, müssen Sie die Clusterverbindung kubeconfig festlegen. Nachdem Sie sich mit der entsprechenden Microsoft Entra-Entität bei Azure CLI angemeldet haben, können Sie die kubeconfig abrufen, die notwendig ist, um von überall aus mit dem Cluster zu kommunizieren, sogar außerhalb der Firewall, die ihn umgibt.

  1. Legen Sie die Variablen CLUSTER_NAME, RESOURCE_GROUP und SUBSCRIPTION_ID fest.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Abfragen einer verwalteten Ressourcengruppe mit az und Speichern in MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Der folgende Befehl startet einen connectedk8s-Proxy, mit dem Sie mit dem Kubernetes-API-Server für den angegebenen Nexus Kubernetes-Cluster eine Verbindung herstellen können.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Verwenden Sie kubectl, um Anforderungen an den Cluster zu senden:

    kubectl get pods -A
    

    Sie sollten jetzt eine Antwort des Clusters sehen, die die Liste aller Knoten enthält.

Hinweis

Wenn Sie die Fehlermeldung „Zugriffstoken konnte nicht für den Client proxyFailed veröffentlicht werden, um eine Verbindung mit MSI herzustellen“ sehen, müssen Sie möglicherweise ein az login durchführen, um sich erneut bei Azure zu authentifizieren.

Rollenbasierte Zugriffssteuerung

Als Administrator können Sie rollenbasierte Zugriffssteuerung für das Cluster bereitstellen, indem Sie eine Rollenbindung mit der Microsoft Entra-Gruppenobjekt-ID erstellen. Für Benutzer, die nur „Anzeigeberechtigungen“ benötigen, können Sie die Aufgabe ausführen, indem Sie sie einer Microsoft Entra-Gruppe hinzufügen, die an die Rolle „Anzeigen“ gebunden ist.

  1. Erstellen Sie eine Microsoft Entra-Gruppe für Benutzer, die Zugriff auf „Anzeigen“ benötigen, und verweisen Sie auf die standardmäßige Kubernetes-Rolle namens view. Diese Rolle ist nur ein Beispiel, und bei Bedarf können Sie benutzerdefinierte Rollen erstellen und stattdessen verwenden. Weitere Informationen zu benutzerorientierten Rollen in Kubernetes finden Sie in der offiziellen Dokumentation unter Rollenbasierte Zugriffsrollen in Kubernetes.

  2. Notieren Sie sich die beim Erstellen generierte Microsoft Entra-Gruppenobjekt-ID.

  3. Verwenden Sie den Kubectl-Befehl, um eine Clusterrollenbindung mit der Rolle „Anzeigen“ zu erstellen und sie der Microsoft Entra-Gruppe zuzuordnen. Ersetzen Sie AZURE_AD_GROUP_OBJECT_ID durch die Objekt-ID Ihrer Microsoft Entra-Gruppe.

    kubectl create clusterrolebinding nexus-read-only-users --clusterrole view --group=AZURE_AD_GROUP_OBJECT_ID
    

    Mit diesem Befehl wird eine Clusterrollenbindung namens nexus-read-only-users erstellt, die den Mitgliedern der angegebenen Microsoft Entra-Gruppe die view-Rolle zuweist.

  4. Überprüfen Sie, ob die Rollenbindung erfolgreich erstellt wurde.

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. Jetzt haben die Benutzer in der Microsoft Entra-Gruppe Zugriff auf das Cluster. Sie können auf das Cluster zugreifen, indem Sie mithilfe von az connectedk8s proxy die Ressourcen anzeigen, können aber keine Änderungen vornehmen

Nächste Schritte

Sie können die Zugriffssteuerung weiter optimieren, indem Sie benutzerdefinierte Rollen mit bestimmten Berechtigungen erstellen. Die Erstellung dieser Rollen umfasst Kubernetes-native RoleBinding- oder ClusterRoleBinding-Ressourcen. Detaillierte Anleitungen zum Erstellen von benutzerdefinierten Rollen und Rollenbindungen gemäß Ihren Anforderungen finden Sie in der offiziellen Dokumentation von Kubernetes.