Erläuterungen zu RBAC-Berechtigungen
Die Zugriffsrollen des IAM-Dienstes entsprechen der rollenbasierten Zugriffskontrolle (RBAC) von Kubernetes innerhalb von IBM Cloud Kubernetes Service-Clustern. Von RBAC-Rollen und Clusterrollen werden Berechtigungen definiert, die festlegen, wie Benutzer mit Kubernetes-Ressourcen im Cluster interagieren können.
Mit IBM Cloud IAM können Sie RBAC automatisch über IBM Cloud verwalten, indem Sie Benutzern IAM-Dienstzugriffsrollen zuweisen. Möglicherweise möchten Sie ein tieferes Verständnis von RBAC erlangen, um den Zugriff auf Ressourcen innerhalb Ihres Clusters, wie z. B. Servicekonten, anzupassen.
- IBM Cloud IAM-Rollen können keinem Servicekonto zugeordnet werden. Stattdessen können Sie Servicekonten direkt RBAC-Rollen zuordnen.
- Benutzer müssen den Befehl
ibmcloud ks cluster configausführen, damit ihre Rollenänderungen wirksam werden.
Welche Arten von RBAC-Rollen gibt es?
- Der Geltungsbereich einer Kubernetes-Rolle ist auf Ressourcen in einem bestimmten Namensbereich (z. B. in einer Bereitstellung oder einem Service) begrenzt.
- Der Geltungsbereich einer Kubernetes-Clusterrolle ist auf alle Ressourcen in einem Cluster (z. B. Workerknoten) begrenzt oder auf Ressourcen, die in jedem Namensbereich vorkommen (z. B. Pods).
Was sind RBAC-Rollenbindungen und Cluster-Rollenbindungen?
Von Rollenbindungen werden RBAC-Rollen oder Clusterrollen auf einen bestimmten Namensbereich angewendet. Wenn Sie eine Rollenbindung zum Anwenden auf eine Rolle verwenden, erteilen Sie einem Benutzer Zugriff auf eine bestimmte Ressource in einem bestimmten Namensbereich. Wenn Sie eine Rollenbindung zum Anwenden auf eine Clusterrolle verwenden, erteilen Sie einem Benutzer Zugriff auf Ressourcen in einem Namensbereich, die in jedem Namensbereich vorhanden sind (wie zum Beispiel Pods), aber nur in einem bestimmten Namensbereich.
Von Clusterrollenbindungen werden RBAC-Clusterrollen auf alle Namensbereiche im Cluster angewendet. Wenn Sie eine Clusterrollenbindung verwenden, um eine Clusterrolle anzuwenden, erteilen Sie einem Benutzer Zugriff auf clusterweite Ressourcen wie Workerknoten oder auf namensbereichsorientierte Ressourcen in jedem Namensbereich, wie zum Beispiel Pods.
Wie sehen diese Rollen in meinem Cluster aus?
Wenn Benutzer innerhalb eines Clusters mit Kubernetes-Ressourcen interagieren können sollen, müssen Sie den Benutzerzugriff auf einen oder mehrere Namensbereiche durch IBM Cloud IAM-Servicezugriffsrollen zuordnen. Jedem Benutzer, dem eine Servicezugriffsrolle zugeordnet ist, wird automatisch eine entsprechende RBAC-Clusterrolle zugeordnet. Diese RBAC-Clusterrollen sind vordefiniert und ermöglichen es Benutzern, mit Kubernetes-Ressourcen im Cluster zu interagieren. Darüber hinaus wird entweder eine Rollenbindung erstellt, um die Clusterrolle auf einen bestimmten Namensbereich anzuwenden, oder eine Clusterrollenbindung wird erstellt, um die Clusterrolle auf alle Namensbereiche anzuwenden.
Weitere Informationen zu den für die einzelnen RBAC-Rollen zulässigen Aktionen finden Sie im Referenzthema IBM Cloud: IAM-Servicezugriffsrollen. Informationen zu den Berechtigungen, die durch die einzelnen RBAC-Rollen für einzelne Kubernetes-Ressourcen erteilt werden, finden Sie im Abschnitt zu den Kubernetes-Ressourcenberechtigungen für RBAC-Rollen.
Kann ich benutzerdefinierte Rollen oder Cluster-Rollen erstellen?
Wenn Sie eigene angepasste RBAC-Richtlinien erstellen, stellen Sie sicher, dass Sie die vorhandenen IBM-Rollenbindungen im Cluster nicht bearbeiten oder angepasste Rollenbindungen mit demselben Namen wie die vorhandenen IBM-Bindungen erstellen. Änderungen, die Sie an den von IBMbereitgestellten RBAC-Rollenbindungen vornehmen, werden bei Aktualisierungen nicht beibehalten.
Die Clusterrollen view (Anzeigen), edit (Bearbeiten), admin (Administrator) und cluster-admin (Clusteradministrator) sind vordefinierte Rollen, die automatisch erstellt werden, wenn Sie einem
Benutzer die entsprechende IBM Cloud IAM-Servicezugriffsrolle zuordnen. Wenn Sie andere Kubernetes-Berechtigungen erteilen möchten, können Sie angepasste RBAC-Berechtigungen erstellen. Benutzerdefinierte RBAC-Rollen gelten
zusätzlich zu den RBAC-Rollen, die Sie möglicherweise im Rahmen von Servicezugriffsrollen haben, und ändern oder überschreiben diese nicht. Hinweis: Um benutzerdefinierte RBAC-Berechtigungen zu erstellen, benötigen Sie die Zugriffsrolle IAM
Manager oder die Plattformrolle Administrator, die Ihnen die RBAC-Rolle Kubernetescluster-admin gewährt. Die anderen Benutzer benötigen jedoch keine IAM-Servicezugriffsrolle, wenn Sie eigene angepasste
Kubernetes-RBAC-Rollen verwalten.
Wann muss ich angepasste Clusterrollenbindungen und Rollenbindungen verwenden?
Es kann sinnvoll sein, Personen Berechtigungen zuzuordnen, die Pods im Cluster erstellen und aktualisieren. Mit Pod-Sicherheitsrichtlinien (PSPs) können Sie vorhandene Cluster-Rollenbindungen nutzen, die zu Ihrem Cluster gehören, oder eigene erstellen.
Es kann auch sinnvoll sein, Add-ons in den Cluster zu integrieren. Beispielsweise, wenn Sie Helm in Ihrem Cluster einrichten.
Angepasste RBAC-Berechtigungen für Benutzer, Gruppen oder Servicekonten erstellen
Die Clusterrollen view (Anzeigen), edit (Bearbeiten), admin (Administrator) und cluster-admin (Clusteradministrator) werden automatisch erstellt, wenn Sie die entsprechende IBM Cloud IAM-Servicezugriffsrolle
zuordnen. Müssen die Clusterzugriffsrichtlinien differenzierter sein, als dies anhand der vordefinierten Berechtigungen möglich ist? Kein Problem! Sie können angepasste RBAC-Rollen und Clusterrollen erstellen.
Sie können angepasste RBAC-Rollen und Clusterrollen einzelnen Benutzern, Benutzergruppen oder Servicekonten zuordnen. Wenn für eine Gruppe eine Bindung erstellt wird, wirkt sich dies auf alle Benutzer aus, die dieser Gruppe hinzugefügt oder die aus dieser Gruppe entfernt werden. Wenn Sie Benutzer zu einer Gruppe hinzufügen, erhalten diese zusätzlich zu den individuellen Zugriffsberechtigungen, die Sie ihnen gewähren, die Zugriffsberechtigungen der Gruppe. Werden sie entfernt, wird ihr Zugriff widerrufen. Beachten Sie, dass Sie keine Dienstkonten zu Zugriffsgruppen hinzufügen können.
Wenn Sie einem Containerprozess, der in Pods ausgeführt wird – beispielsweise einer Continuous-Delivery-Toolchain –, Zugriffsrechte zuweisen möchten, können Sie … verwenden Kubernetes ServiceAccounts. Eine Anleitung zur Einrichtung von Dienstkonten für Travis und Jenkins sowie zur Zuweisung benutzerdefinierter RBAC-Rollen an diese Dienstkonten finden Sie im Blogbeitrag
Kubernetes ServiceAccounts zur Verwendung in automatisierten Systemen.
Um Änderungen zu vermeiden, die Unterbrechungen verursachen können, lassen Sie die vordefinierten Clusterrollen view, edit, admin und cluster-admin unverändert. Benutzerdefinierte RBAC-Rollen
gelten zusätzlich zu den RBAC-Rollen, die Sie möglicherweise über die IAM-Zugriffsrollen von IBM Cloud haben, und ändern oder überschreiben diese nicht.
-
Namensbereichszugriff: Wenn Sie einem Benutzer, einer Zugriffsgruppe oder einem Servicekonto Zugriff auf eine Ressource in einem bestimmten Namensbereich gewähren möchten, wählen Sie eine der folgenden Kombinationen aus:
- Erstellen Sie eine Rolle und wenden Sie sie mit einer Rollenbindung an. Diese Option ist nützlich, um den Zugriff auf eine eindeutige Ressource zu steuern, die nur in einem Namensbereich vorhanden ist, wie zum Beispiel eine App-Implementierung.
- Erstellen Sie eine Clusterrolle und wenden Sie sie mit einer Rollenbindung an. Diese Option ist nützlich, um den Zugriff auf allgemeine Ressourcen in einem Namensbereich zu steuern, zum Beispiel auf Pods.
-
Clusterweiter Zugriff: Um einem Benutzer oder einer Zugriffsgruppe den Zugriff auf clusterweite Ressourcen oder Ressourcen in allen Namensbereichen zu ermöglichen, erstellen Sie eine Clusterrolle und wenden sie mit einer Clusterrollenbindung an. Diese Option ist nützlich, um den Zugriff auf Ressourcen zu steuern, die sich nicht auf Namensbereiche (zum Beispiel Workerknoten) oder Ressourcen in allen Namensbereichen im Cluster (zum Beispiel Pods in jedem Namensbereich) beziehen.
-
Stellen Sie sicher, dass Sie über die IAM-Service-Zugangsrolle Manager für alle Namensräume oder die Plattformrolle Administrator verfügen.
-
Um einzelnen Benutzern oder Benutzern in einer Zugriffsgruppe Zugriffsrechte zuzuweisen, stellen Sie sicher, dass dem Benutzer oder der Gruppe mindestens eine IAM-Plattform-Zugriffsrolle auf der Ebene des IBM Cloud Kubernetes Service-Dienstes zugewiesen wurde.
Zum Erstellen von benutzerdefinierten RBAC-Berechtigungen,
-
Erstellen Sie eine Datei
.yamlähnlich der folgenden, umroleodercluster rolezu definieren.kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: default name: my_role rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] - apiGroups: ["apps", "extensions"] resources: ["daemonsets", "deployments"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]Verstehen der YAML-Parameter Parameter Beschreibung kindVerwenden Sie Role, um Zugriff auf die Ressourcen in einem bestimmten Namensbereich zu erteilen. Verwenden SieClusterRole, um Zugriff auf clusterweite Ressourcen (zum Beispiel Workerknoten) oder namensbereichsorientierte Ressourcen (zum Beispiel Pods in allen Namensbereichen) zu erteilen.metadata.namespaceNur für Role: Geben Sie den Kubernetes-Namensbereich an, für den der Zugriff erteilt wird.rules.apiGroupsGeben Sie die Kubernetes-API-Gruppen an, mit denen Benutzer interagieren können sollen, z. B. "apps","batch", oder"extensions". Für den Zugriff auf die Gruppe der API-Kerndefinitionen im REST-Pfadapi/v1lassen Sie die Angabe für die Gruppe leer[""].rules.resourcesGeben Sie die Kubernetes-Ressourcentypen an, für die Sie Zugriff gewähren möchten, z. B. "daemonsets","deployments","events", oder"ingresses". Falls Sie"nodes"angeben, muss als TypClusterRoleangegeben werden.rules.verbsGeben Sie die Arten von Aktionen an, die Benutzer ausführen können sollen, z. B. "get","list","describe","create", oder"delete". -
Erstellen Sie die Rolle oder Clusterrolle in Ihrem Cluster.
kubectl apply -f my_role.yaml -
Überprüfen Sie, ob die Rolle bzw. Clusterrolle erstellt wurde.
- Rolle:
kubectl get roles -n <namespace> ``` * Clusterrolle: ```sh {: pre} kubectl get clusterroles ``` -
Binden Sie Benutzer an die Rolle oder Clusterrolle, indem Sie eine Datei
.yamlerstellen. Notieren Sie die eindeutige URL, die für die einzelnen Namen des jeweiligen Subjekts verwendet werden sollkind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: my_role_binding namespace: default subjects: - kind: User name: IAM#user1@example.com apiGroup: rbac.authorization.k8s.io - kind: Group name: team1 apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: <service_account_name> namespace: <kubernetes_namespace> roleRef: kind: Role name: my_role apiGroup: rbac.authorization.k8s.ioVerstehen der YAML-Parameter Parameter Beschreibung kind- Geben Sie
RoleBindingfür einen namensbereichsspezifischeRoleoderClusterRolean. - Geben Sie
ClusterRoleBindingfür eine clusterweiteClusterRolean.
apiVersionVerwenden Sie rbac.authorization.k8s.io/v1.metadata.namespace- Für den Typ
RoleBinding: Geben Sie den Kubernetes-Namensbereich an, auf den der Zugriff gewährt wird. - Für den Typ
ClusterRoleBinding: Verwenden Sie nicht das Feldnamespace.
metadata.nameBenennen Sie die Rollenbindung bzw. Clusterrollenbindung. subjects.kindGeben Sie den Typ wie folgt an:
User: RBAC-Rolle oder Clusterrolle an einen einzelnen Benutzer in Ihrem Konto binden.Group: RBAC-Rolle oder Clusterrolle an eine IBM Cloud IAM-Zugriffsgruppe in Ihrem Konto binden.ServiceAccount: RBAC-Rolle oder Clusterrolle an ein Servicekonto in einem Namensbereich in Ihrem Cluster binden.
subjects.nameUser: Fügen Sie die E-Mail-Adresse des einzelnen Benutzers wie folgt anIAM#an:IAM#user@email.com.Group: Geben Sie den Namen der IAM-Zugangsgruppe IBM Cloud in Ihrem Konto an.- Für
ServiceAccount: Geben Sie den Namen des Servicekontos an.
subjects.apiGroupUseroderGroup: Verwenden Sierbac.authorization.k8s.io.- Für
ServiceAccount: Fügen Sie dieses Feld nicht ein.
subjects.namespaceServiceAccountnur: Geben Sie den Namen des Kubernetes-Namespace an, in dem das Dienstkonto bereitgestellt wird.roleRef.kindGeben Sie denselben Wert als kindin der.yaml-Rollendatei an:RoleoderClusterRole.roleRef.nameGeben Sie den Namen der .yaml-Rollendatei an.roleRef.apiGroupVerwenden Sie rbac.authorization.k8s.io. - Geben Sie
-
Erstellen Sie die Ressource für die Rollenbindung bzw. Clusterrollenbindung in Ihrem Cluster.
kubectl apply -f my_role_binding.yaml -
Überprüfen Sie, dass die Bindung erstellt wurde.
kubectl get rolebinding -n <namespace> -
Optional: Wenn Sie dieselbe Stufe des Benutzerzugriffs in anderen Namensbereichen erzwingen möchten, ist das Kopieren der Rollenbindungen für diese Rollen oder Clusterrollen in andere Namensbereiche möglich.
- Kopieren Sie die Rollenbindung von einem Namensbereich in einen anderen Namensbereich.
kubectl get rolebinding <role_binding_name> -o yaml | sed 's/<namespace_1>/<namespace_2>/g' | kubectl -n <namespace_2> create -f - ``` Beispielsweise kopieren Sie die `custom-role` Rollenbindung vom `default`-Namespace zum `testns`-Namespace. ```sh {: pre} kubectl get rolebinding custom-role -o yaml | sed 's/default/testns/g' | kubectl -n testns create -f - ``` 2. Überprüfen Sie, dass die Bindung kopiert wurde. Wenn Sie eine IBM Cloud IAM-Zugriffsgruppe zu der Rollenbindung hinzugefügt haben, wird jeder Benutzer in dieser Gruppe einzeln hinzugefügt, nicht als Zugriffsgruppen-ID. ```sh {: pre} kubectl get rolebinding -n <namespace_2> ```
Fahren Sie jetzt, nachdem Sie eine angepasste Kubernetes-RBAC-Rolle oder -Clusterrolle erstellt und gebunden haben, mit den Benutzern fort. Bitten Sie sie, eine Aktion auszuführen, für deren Ausführung sie die Berechtigung aufgrund Ihrer Rolle haben. Zum Beispiel das Löschen eines Pods.
Vorhandene Berechtigungen durch Aggregieren von Clusterrollen erweitern
Sie können die vorhandenen Berechtigungen Ihrer Benutzer erweitern, indem Sie Clusterrollen mit anderen Clusterrollen aggregieren oder kombinieren. Wenn Sie einem Benutzer eine IBM Cloud-Servicezugriffsrolle zuweisen, wird der Benutzer einer entsprechenden Kubernetes-RBAC-Clusterrolle hinzugefügt. Möglicherweise möchten Sie jedoch bestimmten Benutzern erlauben, weitere Vorgänge auszuführen.
Beispiel: Ein Benutzer mit der Clusterrolle admin für den Namensbereich kann den Befehl kubectl top pods nicht zum Anzeigen von Pod-Metriken für alle Pods im Namensbereich verwenden. Sie können eine Clusterrolle aggregieren,
sodass Benutzer in der Clusterrolle admin berechtigt sind, den Befehl top pods auszuführen. Weitere Informationen finden Sie in der Dokumentation zu Kubernetes.
Für welche gängigen Vorgänge möchte ich möglicherweise die Berechtigungen einer Standard-Clusterrolle erweitern?
Sehen Sie sich die Vorgänge an, die jede standardmäßige RBAC-Clusterrolle zulässt, um einen Überblick darüber zu erhalten, was Benutzer tun können, und vergleichen Sie dann die zulässigen Vorgänge mit den Aufgaben, die Sie den Benutzern zuweisen möchten.
Wenn Ihre Benutzer in derselben Clusterrolle Fehler wie den folgenden für denselben Operationstyp erhalten, können Sie die Clusterrolle erweitern, um diese Operation einzuschließen.
Error from server (Forbidden): pods.metrics.k8s.io is forbidden: User "IAM#myname@example.com" can't list resource "pods" in API group "metrics.k8s.io" in the namespace "mynamespace"
Vorbereitende Schritte: Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
-
Erstellen Sie eine YAML-Datei für die Clusterrolle. Geben Sie im Abschnitt
labelsdie vorhandene Clusterrolle an, für die Sie Berechtigungen aggregieren möchten. Im folgenden Beispiel wird die vordefinierte Clusterrolleadminerweitert, damit Benutzerkubectl top podsausführen können. Weitere Beispiele finden Sie in der Dokumentation zu Kubernetes.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: view-pod-metrics labels: rbac.authorization.k8s.io/aggregate-to-admin: "true" rules: - apiGroups: - "metrics.k8s.io" resources: - pods verbs: - listVerstehen der YAML-Parameter Parameter Beschreibung metadata.nameGeben Sie einen Namen für die Clusterrolle ein. Verwenden Sie nicht die vordefinierten Clusterrollennamen view,edit,adminundcluster-admin.metadata.labelsFügen Sie eine Bezeichnung hinzu, die der Clusterrolle entspricht, zu der aggregiert werden soll, im Format
rbac.authorization.k8s.io/aggregate-to-<cluster_role>: "true". Die Bezeichnungen für die vordefinierten Clusterrollen lauten wie folgt.- Servicezugriffsrolle 'IAM Manager' für einen Namensbereich:
rbac.authorization.k8s.io/aggregate-to-admin: "true" - Servicezugriffsrolle 'IAM Writer':
rbac.authorization.k8s.io/aggregate-to-edit: "true" - Servicezugriffsrolle 'IAM Reader':
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules.apiGroupsGeben Sie die Kubernetes-API-Gruppen an, mit denen Benutzer interagieren können sollen, z. B. "apps","batch", oder"extensions". Für den Zugriff auf die Gruppe der API-Kerndefinitionen im REST-Pfadapi/v1lassen Sie die Angabe für die Gruppe leer[""].rules.resourcesGeben Sie die Kubernetes-Ressourcentypen an, für die Sie Zugriff gewähren möchten, z. B. "daemonsets","deployments","events", oder"ingresses".rules.verbsGeben Sie die Arten von Aktionen an, die Benutzer ausführen können sollen, z. B. "get","list","describe","create", oder"delete". - Servicezugriffsrolle 'IAM Manager' für einen Namensbereich:
-
Erstellen Sie die Clusterrolle in Ihrem Cluster. Alle Benutzer, deren Rolle mit der
adminCluster-Rolle verknüpft ist, verfügen nun über die zusätzlichen Berechtigungen derview-pod-metricsCluster-Rolle.kubectl apply -f <cluster_role_file.yaml> -
Wenden Sie sich an Benutzer mit der Clusterrolle
admin. Bitte Sie diese, ihre Clusterkonfiguration zu aktualisieren und die Aktion, zu testen, z. B.kubectl top pods.
RBAC-Rollen überprüfen
Überprüfen Sie Ihren angepassten RBAC- oder synchronisierten IAM-Servicezugriff auf RBAC-Rollen in Ihrem IBM Cloud Kubernetes Service-Cluster.
RBAC-Rollen von der UI überprüfen
-
Melden Sie sich bei der Konsole an.
-
Klicken Sie auf den Cluster mit den RBAC-Rollen, die Sie überprüfen möchten.
-
Klicken Sie auf das Kubernetes-Dashboard.
Wenn Sie über einen Cluster verfügen, der nur mit dem privaten Netz verbunden ist, können Sie das Dashboard möglicherweise nicht öffnen, es sei denn, Sie befinden sich in einem VPN. Weitere Informationen finden Sie im Abschnitt zum Zugriff über den privaten Cloud-Serviceendpunkt auf Cluster.
-
Überprüfen Sie im Abschnitt Cluster die Clusterrollenbindungen, Clusterrollen, Rollenbindungen und Rollen.
RBAC-Rollen mit der CLI überprüfen
-
Überprüfen Sie, ob der Benutzer zur RBAC-Rolle hinzugefügt wurde. Benutzer werden einer Rollenbindung nicht hinzugefügt, wenn sie über eine höhere Berechtigung verfügen. Wenn Benutzer beispielsweise über eine Clusterrolle verfügen und in einer Cluster-Rollenbindung enthalten sind, werden sie nicht zu jeder einzelnen Namensbereichs-Rollenbindung hinzugefügt.
Sie müssen ein Cluster-Administrator sein, um Rollenbindungen und Cluster-Rollenbindungen zu überprüfen. Clusteradministratoren haben in allen Namespaces die Dienstzugangsrolle Manager oder die Plattformzugangsrolle Administrator.
- Leser:
kubectl get rolebinding ibm-view -o yaml -n <namespace> ``` * Schreiben: ```sh {: pre} kubectl get rolebinding ibm-edit -o yaml -n <namespace> ``` * Manager mit auf einen Namensbereich festgelegtem Bereich: ```sh {: pre} kubectl get rolebinding ibm-operate -o yaml -n <namespace> ``` * Manager für alle Namensbereiche: ```sh {: pre} kubectl get clusterrolebinding ibm-admin -o yaml ```
Beispielausgabe
Sie erhalten die folgende Beispielausgabe, wenn Sie dem Benutzer user@email.com und der Zugriffsgruppe team1 die Servicezugriffsrolle Reader (Leseberechtigter) zuweisen und anschließend den Befehl
kubectl get rolebinding ibm-view -o yaml -n default ausführen.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
creationTimestamp: 2018-05-23T14:34:24Z
name: ibm-view
namespace: default
resourceVersion: "8192510"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ibm-view
uid: 63f62887-5e96-11e8-8a75-b229c11ba64a
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: IAM#user@email.com
- apiGroup: rbac.authorization.k8s.io
kind: group
name: team1
Kubernetes-Servicezugriffsrollen und entsprechende RBAC-Rollen
In der folgenden Tabelle sind die Kubernetes-Ressourcenberechtigungen aufgeführt, die durch die einzelnen Servicezugriffsrollen und die entsprechenden RBAC-Rollen erteilt werden.
| Servicezugriffsrolle | Entsprechende RBAC-Rolle, Bindung und Bereich | Kubernetes-Ressourcenberechtigungen |
|---|---|---|
| Leserrolle |
Bei Bereichsorientierung auf einen Namensbereich:
|
|
| Schreibberechtigter (Autor) | Bei Bereichsorientierung auf einen Namensbereich: edit-Clusterrolle, die von der Rollenbindung ibm-edit in diesem Namensbereich angewendet wird.
Bei Bereichsorientierung auf alle Namensbereiche: |
|
| Rolle für Managementaufgaben | Bei Bereichsorientierung auf einen Namensbereich: admin-Clusterrolle, die von der ibm-operate-Rollenbindung in diesem Namensbereich angewendet wird
Bei Bereichsorientierung auf allen Namensbereichen: |
Bei Beschränkung auf einen Namensraum:
|
Kubernetes-Ressourcenberechtigungen für RBAC-Rollen
Jedem Benutzer, dem eine IBM Cloud IAM-Servicezugriffsrolle zugeordnet ist, wird automatisch auch eine entsprechende vordefinierte Rolle für Kubernetes-RBAC (RBAC - rollenbasierte Zugriffssteuerung) zugeordnet. Wenn Sie eigene angepasste Kubernetes-RBAC-Rollen verwalten wollen, finden Sie entsprechende Informationen in Angepasste RBAC-Berechtigungen für Benutzer, Gruppen oder Servicekonten erstellen. Details zum Benutzernamen finden Sie unter IBM Cloud IAM-Ausstellerdetails für RBAC-Benutzer.
Fragen Sie sich, ob Sie über die richtigen Berechtigungen zum Ausführen eines bestimmten kubectl-Befehls für eine Ressource in einem Namensbereich haben? Führen Sie den kubectl auth can-i-Befehlaus.
In der folgenden Tabelle sind die Berechtigungen aufgeführt, die durch jede RBAC-Rolle für einzelne Kubernetes-Ressourcen erteilt werden. Berechtigungen werden als Aktionen dargestellt, verbs die ein Benutzer mit dieser Rolle
in Bezug auf die Ressource ausführen kann, z. B. abrufen, auflisten, beschreiben, erstellen oder löschen.
| Kubernetes-Ressource | view |
edit |
admin und cluster-admin |
|---|---|---|---|
bindings |
get, list, watch | get, list, watch | get, list, watch nur cluster-admin: erstellen, löschen, aktualisieren |
configmaps |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
cronjobs.batch |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
daemonsets.apps |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
daemonsets.extensions |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.apps |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.apps/rollback |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.apps/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.extensions |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.extensions/rollback |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
deployments.extensions/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
endpoints |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
events |
get, list, watch | get, list, watch | get, list, watch |
horizontalpodautoscalers.autoscaling |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
ingresses.extensions |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
jobs.batch |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
limitranges |
get, list, watch | get, list, watch | get, list, watch |
localsubjectaccessreviews |
|
|
create |
namespaces |
get, list, watch | get, list, watch | get, list, watch nur cluster-admin: erstellen, löschen |
namespaces/status |
get, list, watch | get, list, watch | get, list, watch |
networkpolicies |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
networkpolicies.extensions |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
node |
Keine | Keine | admin bereichsorientiert auf einen Namensbereich: Keine
|
persistentvolume |
Keine | Keine | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
persistentvolumeclaims |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
poddisruptionbudgets.policy |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
pods |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, patchen top, aktualisieren, überwachen |
pods/attach |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
pods/exec |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
pods/log |
get, list, watch | get, list, watch | get, list, watch |
pods/portforward |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
pods/proxy |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
pods/status |
get, list, watch | get, list, watch | get, list, watch |
replicasets.apps |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicasets.apps/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicasets.extensions |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicasets.extensions/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicationcontrollers |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicationcontrollers/scale |
get, list, watch | cr}erstellen, löschen, abrufen deletecollection, auflisten, patchen, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
replicationcontrollers/status |
get, list, watch | get, list, watch | get, list, watch |
replicationcontrollers.extensions/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
resourcequotas |
get, list, watch | get, list, watch | get, list, watch |
resourcequotas/status |
get, list, watch | get, list, watch | get, list, watch |
rolebindings |
|
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
roles |
|
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
secrets |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
serviceaccounts |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen, impersonate |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen, impersonate |
services |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
services/proxy |
|
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
statefulsets.apps |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
statefulsets.apps/scale |
get, list, watch | erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
erstellen, löschen, abrufen deletecollection, auflisten, korrigieren, aktualisieren, überwachen |
IBM Cloud IAM-Ausstellerdetails für RBAC-Benutzer
Benutzer mit einer Servicezugriffsrolle für IBM Cloud Kubernetes Service in IAM erhalten entsprechende Benutzerrollen in RBAC. Die RBAC-Benutzerdetails umfassen eine eindeutige Aussteller-ID, eine Subjekt-ID-Anforderung
und einen Kubernetes-Benutzernamen. Diese Details variieren je nach Kubernetes-Version des Clusters. Beim Aktualisieren eines Clusters von einer Vorgängerversion werden die Details automatisch ebenfalls aktualisiert. RBAC-Benutzernamen wird
das Präfix IAM# vorangestellt. Weitere Informationen zur Funktionsweise der OpenID-Authentifizierung finden Sie in der Dokumentation zu Kubernetes.
Diese Informationen kommen unter Umständen zum Einsatz, wenn Sie Automatisierungstools im Cluster erstellen, die sich auf die Benutzerdetails für die Authentifizierung beim Kubernetes-API-Server stützen.
| Version | Aussteller | Claim | Groß-/Kleinschreibung* |
|---|---|---|---|
| Kubernetes | https://iam.cloud.ibm.com/identity |
realmed_sub_<account_ID> |
Kleinbuchstaben |
*: Ein Beispiel für Kleinschreibung ist user.name@company.com. Ein Beispiel für Kamelschreibweise ist User.Name@company.com.