Konfigurieren von RBAC

In diesem Thema wird erläutert, wie Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Tanzu Kubernetes Grid konfigurieren.

Informationen zum Konfigurieren von RBAC

Wenn Sie beabsichtigen, standardmäßige, nicht administrative kubeconfig-Dateien für den Clusterzugriff zu verwenden, müssen Sie die RBAC-Autorisierung konfigurieren, nachdem Sie die Identitätsverwaltung aktiviert und konfiguriert haben. Weitere Informationen zu kubeconfig-Dateien finden Sie nachstehend unter Administrative und nicht administrative kubeconfig-Dateien.

Um die RBAC-Autorisierung zu konfigurieren, erstellen Sie eine oder mehrere Rollenbindungen für jeden Verwaltungs- und Arbeitslastcluster, in dem Sie standardmäßige, nicht administrative kubeconfig-Dateien verwenden möchten:

  1. Nachdem Sie die Identitätsverwaltung wie unter Konfigurieren der Identitätsverwaltung beschrieben aktiviert und konfiguriert haben, erstellen Sie eine oder mehrere Rollenbindungen für den Verwaltungscluster. Anweisungen finden Sie nachstehend unter Konfigurieren von RBAC für einen Verwaltungscluster.
  2. Erstellen Sie eine oder mehrere Rollenbindungen für jeden Arbeitslastcluster. Anweisungen finden Sie nachstehend unter Konfigurieren von RBAC für einen Arbeitslastcluster.

Weitere Informationen zu Rollenbindungen finden Sie nachstehend unter Rollen und Rollenbindungen.

Administrative und nicht administrative kubeconfig-Dateien

Um Benutzern Zugriff auf einen Verwaltungs- oder Arbeitslastcluster zu gewähren, generieren Sie eine kubeconfig-Datei und geben Sie die Datei dann für diese Benutzer frei. Wenn Sie ihnen die Admin-kubeconfig für den Cluster zur Verfügung stellen, haben sie Vollzugriff auf den Cluster und müssen nicht authentifiziert werden. Wenn Sie Benutzern jedoch die standardmäßige, nicht administrative kubeconfig zur Verfügung stellen, müssen sie über ein Benutzerkonto in Ihrem OIDC- oder LDAP-Identitätsanbieter verfügen, und Sie müssen RBAC im Cluster konfigurieren, um dem vorgesehenen Benutzer Zugriffsberechtigungen zu gewähren.

Um eine kubeconfig-Datei für einen Verwaltungs- oder Arbeitslastcluster zu generieren, führen Sie tanzu mc kubeconfig get für den Verwaltungscluster oder tanzu cluster kubeconfig get für den Arbeitslastcluster aus. Wenn Sie einen dieser Befehle mit oder ohne die Option --admin ausführen, funktioniert der Befehl wie folgt:

  • Mit der Option --admin generiert der Befehl eine Admin-kubeconfig, die eingebettete Anmeldedaten enthält. Mit dieser admin-Version der kubeconfig haben alle Benutzer, für die Sie die Datei freigeben, Vollzugriff auf den Cluster, und die Identitätsanbieter-Authentifizierung wird umgangen.
  • Ohne die Option --admin generiert der Befehl eine standardmäßige, nicht administrative kubeconfig, die Benutzer zur Authentifizierung bei einem externen Identitätsanbieter auffordert. Der Identitätsanbieter überprüft dann die Identität des Benutzers, bevor der Benutzer auf die Ressourcen des Clusters zugreifen kann.

Weitere Informationen zu diesen Befehlen finden Sie unter:

Rollen und Rollenbindungen

Eine Rolle definiert einen Satz von Berechtigungen. Sie können eine Rolle innerhalb eines bestimmten Namespace definieren, indem Sie eine Role erstellen, oder eine clusterweite Rolle, indem Sie eine ClusterRole erstellen. Um einem Benutzer oder einer Benutzergruppe die in dieser Rolle definierten Berechtigungen zu gewähren, müssen Sie eine Rollenbindung erstellen.

Ressource Geltungsbereich Beschreibung
Role Namespace Definiert Berechtigungen, die in einer Namespace-spezifischen RoleBinding verwendet werden können.
ClusterRole Cluster Definiert Berechtigungen, die in einer ClusterRoleBinding oder einer Namespace-spezifischen RoleBinding verwendet werden können.
RoleBinding Namespace Gewährt Berechtigungen innerhalb eines bestimmten Namespace. Kann auf eine Role oder eine ClusterRole verweisen.
ClusterRoleBinding Cluster Gewährt Berechtigungen für alle Namespaces im Cluster. Kann nur auf eine ClusterRole verweisen.

Zu den Standardbenutzerrollen gehören:

  • cluster-admin: Vollzugriff auf den Cluster. Bei Verwendung in einer RoleBinding gewährt diese Rolle Vollzugriff auf jede Ressource in dem Namespace, der in der Bindung angegeben ist.
  • admin: Administratorzugriff auf die meisten Ressourcen in einem Namespace. Kann Rollen und Rollenbindungen innerhalb des Namespace erstellen und ändern.
  • edit: Lese-/Schreibzugriff auf die meisten Objekte in einem Namespace, z. B. Bereitstellungen, Dienste und Pods. Rollen und Rollenbindungen können nicht angezeigt, erstellt oder geändert werden.
  • view: Schreibgeschützter Zugriff auf die meisten Objekte in einem Namespace. Rollen und Rollenbindungen können nicht angezeigt, erstellt oder geändert werden.

Weitere Informationen zu diesen Rollen finden Sie unter Verwenden der RBAC-Autorisierung in der Kubernetes-Dokumentation.

Konfigurieren von RBAC für einen Verwaltungscluster

In diesem Abschnitt wird erläutert, wie Sie Folgendes durchführen:

  1. Generieren und Testen einer nicht administrativen kubeconfig-Datei für den Verwaltungscluster
  2. Erstellen einer Rollenbindung im Verwaltungscluster

Generieren und Testen einer nicht administrativen kubeconfig-Datei für den Verwaltungscluster

Mit diesem Verfahren können Sie den Anmeldeschritt des Authentifizierungsvorgangs testen, wenn ein Browser auf dem Computer vorhanden ist, auf dem Sie tanzu- und kubectl-Befehle ausführen. Wenn der Computer nicht über einen Browser verfügt, finden Sie weitere Informationen unter Authentifizieren von Benutzern auf einem Computer ohne Browser.

  1. Exportieren Sie die Standard-kubeconfig für den Verwaltungscluster in eine lokale Datei, z. B. /tmp/id_mgmt_test_kubeconfig. Beachten Sie, dass der Befehl die Option --admin nicht enthält. Daher handelt es sich bei der exportierten kubeconfig um die Standard-kubeconfig und nicht um die admin-Version.

    tanzu mc kubeconfig get --export-file /tmp/id_mgmt_test_kubeconfig
    

    Ihnen sollte die folgende Bestätigungsmeldung angezeigt werden: You can now access the cluster by specifying '--kubeconfig /tmp/id_mgmt_test_kubeconfig' flag when using 'kubectl' command.

  2. Stellen Sie mithilfe der neu erstellten kubeconfig-Datei eine Verbindung zum Verwaltungscluster her:

    kubectl get pods -A --kubeconfig /tmp/id_mgmt_test_kubeconfig
    

    Für den Authentifizierungsvorgang muss ein Browser auf dem Computer vorhanden sein, über den Benutzer eine Verbindung mit Clustern herstellen, da bei Ausführung von kubectl-Befehlen automatisch die IdP-Anmeldeseite geöffnet wird, sodass sich Benutzer beim Cluster anmelden können. Ihr Browser sollte öffnen und die Anmeldeseite für Ihren OIDC-Anbieter oder eine LDAPS-Anmeldeseite anzeigen.

    LDAPS:

    LDAPS-Anmeldeseite

    OIDC:

    OIDC-Anmeldeseite

    Geben Sie die Anmeldedaten eines Benutzerkontos ein, das in Ihrem OIDC- oder LDAP-Server vorhanden ist. Nach einer erfolgreichen Anmeldung sollte der Browser Folgendes anzeigen:

    Anmeldung erfolgreich

  3. Wechseln Sie wieder zu dem Terminal, auf dem Sie die tanzu- und kubectl-Befehle ausführen:

    • Wenn Sie bereits eine Rollenbindung im Cluster für den authentifizierten Benutzer konfiguriert haben, wird die Ausgabe von kubectl get pods -A mit den Pod-Informationen angezeigt.

    • Wenn Sie keine Rollenbindung im Cluster konfiguriert haben, wird eine Meldung angezeigt, die besagt, dass dem Benutzerkonto der Zugriff auf die Pods verweigert wird: Error from server (Forbidden): pods is forbidden: User "[email protected]" cannot list resource "pods" in API group "" at the cluster scope. Dies geschieht, weil der Benutzer erfolgreich authentifiziert wurde, aber noch nicht berechtigt ist, auf Ressourcen im Cluster zuzugreifen. Um den Benutzer für den Zugriff auf die Clusterressourcen zu autorisieren, müssen Sie das nachfolgend unter Erstellen einer Rollenbindung im Verwaltungscluster beschriebene Verfahren durchführen.

Erstellen einer Rollenbindung im Verwaltungscluster

Um Nicht-Admin-Benutzern Zugriff auf den Verwaltungscluster zu erteilen, generieren und verteilen Sie eine kubeconfig-Datei wie oben unter Generieren und Testen einer nicht administrativen kubeconfig-Datei für den Verwaltungscluster beschrieben ist. Damit diese kubeconfig funktioniert, müssen Sie zuerst RBAC einrichten, indem Sie eine Rollenbindung für den Verwaltungscluster erstellen. Diese Rollenbindung weist einzelnen authentifizierten Benutzern oder Benutzergruppen rollenbasierte Berechtigungen zu.

So erstellen Sie eine Rollenbindung:

  1. Stellen Sie sicher, dass Sie den admin-Kontext des Verwaltungsclusters verwenden:

    kubectl config current-context
    

    Wenn der Kontext nicht der admin-Kontext des Verwaltungsclusters ist, legen Sie kubectl für die Verwendung dieses Kontexts fest. Beispiel:

    kubectl config use-context id-mgmt-test-admin@id-mgmt-test
    
  2. Listen Sie Ihre vorhandenen Rollen auf:

    • Führen Sie folgenden Befehl aus, um die vollständige Liste der Rollen im Geltungsbereich des Namespace anzuzeigen:

      kubectl get roles --all-namespaces
      
    • Führen Sie folgenden Befehl aus, um die vollständige Liste der Rollen im Geltungsbereich des Clusters anzuzeigen:

      kubectl get clusterroles
      
  3. Um einen bestimmten Benutzer mit einer Rolle zu verknüpfen, erstellen Sie eine Rollenbindung.

    • Eine RoleBinding kann auf eine Role oder eine ClusterRole verweisen.
    • Eine ClusterRoleBinding kann nur auf eine ClusterRole verweisen.

    Im folgenden Beispiel wird eine Clusterrollenbindung mit dem Namen id-mgmt-test-rb erstellt, die die Clusterrolle cluster-admin an den Benutzer [email protected] bindet:

    kubectl create clusterrolebinding id-mgmt-test-rb --clusterrole cluster-admin --user [email protected]
    

    Geben Sie für --user den OIDC- oder LDAP-Benutzernamen des Benutzers an. Sie haben das Attribut „username“ sowie weitere Identitätsanbieterdetails im Abschnitt „Identitätsverwaltung (Identity Management)“ der Tanzu Kubernetes Grid-Installationsprogramm-Schnittstelle oder durch Festlegen der LDAP_*- oder OIDC_*-Variablen konfiguriert:

    • OIDC: Das Attribut „username“ wird im Feld Benutzernamensanspruch (Username Claim) unter OIDC-Identitätsverwaltungsquelle (OIDC Identity Management Source) in der Installationsprogramm-Schnittstelle oder in der Konfigurationsvariablen OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM festgelegt.
    • LDAPS: Das Attribut „username“ wird im Feld Benutzername (Username) unter LDAPS-Identitätsverwaltungsquelle (LDAPS Identity Management Source) –> Benutzer-Suchattribute (User Search Attributes) in der Installationsprogramm-Schnittstelle oder in der Konfigurationsvariablen LDAP_USER_SEARCH_NAME_ATTRIBUTE festgelegt.

    Beispielsweise ist für OIDC der Benutzername oft die E-Mail-Adresse des Benutzers. Bei LDAPS ist es der LDAP-Benutzername, nicht die E-Mail-Adresse.

  4. Versuchen Sie mithilfe der kubeconfig-Datei, die Sie im vorherigen Verfahren erstellt haben, erneut eine Verbindung mit dem Verwaltungscluster herzustellen:

    kubectl get pods -A --kubeconfig /tmp/id_mgmt_test_kubeconfig
    

    Da der Benutzer in diesem Verwaltungscluster an die Rolle cluster-admin gebunden ist, sollte dieses Mal die Liste der Pods angezeigt werden. Sie können die generierte kubeconfig-Datei für alle Benutzer freigeben, für die Sie Rollenbindungen im Verwaltungscluster konfigurieren.

Konfigurieren von RBAC für einen Arbeitslastcluster

In diesem Abschnitt wird erläutert, wie Sie Folgendes durchführen:

Generieren und Testen einer nicht administrativen kubeconfig-Datei für einen Arbeitslastcluster

Mit diesem Verfahren können Sie den Anmeldeschritt des Authentifizierungsvorgangs testen, wenn ein Browser auf dem Computer vorhanden ist, auf dem Sie tanzu- und kubectl-Befehle ausführen. Wenn der Computer nicht über einen Browser verfügt, finden Sie weitere Informationen unter Authentifizieren von Benutzern auf einem Computer ohne Browser.

Führen Sie die folgenden Schritte aus, um Benutzer auf einem Arbeitslastcluster zu authentifizieren:

  1. Rufen Sie die standardmäßige, nicht administrative kubeconfig für den Arbeitslastcluster ab und exportieren Sie sie in eine Datei. Im folgenden Beispiel wird die kubeconfig für den Cluster my-cluster in die Datei my-cluster-kubeconfig exportiert.

    tanzu cluster kubeconfig get my-cluster --export-file /tmp/my-cluster-kubeconfig
    
  2. Verwenden Sie die generierte Datei, um zu versuchen, einen Vorgang auf dem Cluster auszuführen. Führen Sie zum Beispiel folgenden Befehl aus:

    kubectl get pods -A --kubeconfig /tmp/my-cluster-kubeconfig
    

    Sie sollten zur Anmeldeseite für Ihren Identitätsanbieter umgeleitet werden. Wenn Sie bereits eine Rollenbindung im Cluster für den authentifizierten Benutzer erstellt haben, zeigt nach erfolgreicher Anmeldung mit einem Benutzerkonto Ihres Identitätsanbieters die Ausgabe die Pod-Informationen an.

    Wenn Sie keine Rollenbindung im Cluster konfiguriert haben, wird die folgende Meldung angezeigt: Error from server (Forbidden): pods is forbidden: User "<user>" cannot list resource "pods" in API group "" at the cluster scope. Dies geschieht, weil dieser Benutzer noch keine Berechtigungen für den Cluster hat. Um den Benutzer für den Zugriff auf die Clusterressourcen zu autorisieren, müssen Sie eine Rollenbindung in einem Arbeitslastcluster erstellen.

Erstellen einer Rollenbindung in einem Arbeitslastcluster

Um die Identitätsverwaltungskonfiguration des Arbeitslastclusters abzuschließen, müssen Sie Rollenbindungen für die Benutzer erstellen, die die im vorherigen Schritt generierte kubeconfig verwenden.

  1. Legen Sie den kubectl-Kontext auf die admin kubeconfig des Arbeitslastclusters fest. Sie müssen zum admin-Kontext des Arbeitslastclusters wechseln, damit Sie eine Rollenbindung erstellen können. Führen Sie beispielsweise die folgenden beiden Befehle aus, um zum admin-Kontext zu wechseln:

    1. kubeconfig abrufen:

      tanzu cluster kubeconfig get my-cluster --admin
      
    2. Kontext wechseln:

      kubectl config use-context my-cluster-admin@my-cluster
      
  2. So zeigen Sie Ihre vorhandenen Rollen an:

    • Führen Sie folgenden Befehl aus, um die vollständige Liste der Rollen im Geltungsbereich des Namespace anzuzeigen:

      kubectl get roles --all-namespaces
      
    • Führen Sie folgenden Befehl aus, um die vollständige Liste der Rollen im Geltungsbereich des Clusters anzuzeigen:

      kubectl get clusterroles
      
  3. Um einen bestimmten Benutzer mit einer Rolle zu verknüpfen, erstellen Sie eine Rollenbindung.

    • Eine RoleBinding kann auf eine Role oder eine ClusterRole verweisen.
    • Eine ClusterRoleBinding kann nur auf eine ClusterRole verweisen.

    Im folgenden Beispiel wird eine Clusterrollenbindung mit dem Namen workload-test-rb erstellt, die die Clusterrolle cluster-admin an den Benutzer [email protected] bindet:

    kubectl create clusterrolebinding workload-test-rb --clusterrole cluster-admin --user [email protected]
    

    Geben Sie für --user den OIDC- oder LDAP-Benutzernamen des Benutzers an. Sie haben das Attribut „username“ sowie weitere Identitätsanbieterdetails im Abschnitt „Identitätsverwaltung (Identity Management)“ der Tanzu Kubernetes Grid-Installationsprogramm-Schnittstelle oder durch Festlegen der LDAP_*- oder OIDC_*-Variablen konfiguriert:

    • OIDC: Das Attribut „username“ wird im Feld Benutzernamensanspruch (Username Claim) unter OIDC-Identitätsverwaltungsquelle (OIDC Identity Management Source) in der Installationsprogramm-Schnittstelle oder in der Konfigurationsvariablen OIDC_IDENTITY_PROVIDER_USERNAME_CLAIM festgelegt.
    • LDAPS: Das Attribut „username“ wird im Feld Benutzername (Username) unter LDAPS-Identitätsverwaltungsquelle (LDAPS Identity Management Source) –> Benutzer-Suchattribute (User Search Attributes) in der Installationsprogramm-Schnittstelle oder in der Konfigurationsvariablen LDAP_USER_SEARCH_NAME_ATTRIBUTE festgelegt.

    Beispielsweise ist für OIDC der Benutzername oft die E-Mail-Adresse des Benutzers. Bei LDAPS ist es der LDAP-Benutzername, nicht die E-Mail-Adresse.

  4. Verwenden Sie die oben generierte kubeconfig-Standarddatei, um erneut einen Vorgang im Cluster auszuführen. Führen Sie zum Beispiel folgenden Befehl aus:

    kubectl get pods -A --kubeconfig /tmp/my-cluster-kubeconfig
    

    Dieses Mal sollte die Liste der Pods angezeigt werden, die im Arbeitslastcluster ausgeführt werden. Dies liegt daran, dass der Benutzer der Datei my-cluster-kubeconfig sowohl von Ihrem Identitätsanbieter authentifiziert wurde als auch über die erforderlichen Berechtigungen für den Cluster verfügt. Sie können die Datei my-cluster-kubeconfig für alle Benutzer freigeben, für die Sie Rollenbindungen im Cluster konfigurieren.

Nächste Schritte

Geben Sie die generierten kubeconfig-Dateien für andere Benutzer frei, um ihnen den Zugriff auf die Cluster zu gewähren.

check-circle-line exclamation-circle-line close-line
Scroll to top icon