Diese Seite richtet sich an Infrastrukturbetreiber.
Auf dieser Seite werden Autorisierungsrollen, Rollenbindungen und Ressourcenzugriffsrechte für den privaten Anthos-Modus beschrieben.
Autorisierungsrollen
Der private Modus von Anthos hat vier voreingestellte Autorisierungsrollen:
Rollenname | Kubernetes ClusterRole -Name
(im Administratorcluster)
|
Berechtigungen |
Infrastrukturbetreiber | anthos-infrastructure-operator | Vollständiger Lese-/Schreibzugriff auf alle Ressourcen. |
Infrastrukturbetreiber (schreibgeschützt) | anthos-infrastructure-operator-read-only | Lesezugriff auf die meisten Dinge in Anthos Management Center, ClusterRole/Role, ClusterRole/Role-Bindungen und eingeschränkten Lesezugriff auf Secrets.
Nutzer haben Schreibzugriff auf Grafana, um Dashboards zu bearbeiten. |
Plattformadministrator | Anthos-Plattform-Administrator |
|
Plattformadministrator (schreibgeschützt) | anthos-platform-admin-read-only | Lesezugriff auf alle Elemente, die ein Plattformadministrator ansehen kann.
Nutzer haben Schreibzugriff auf Grafana, um Dashboards zu bearbeiten. |
Jeder Nutzer mit Zugriff auf ADMIN_KUBECONFIG
wird als Mitglied in der Kubernetes-Gruppe system:master
authentifiziert, was jede Aktion für den Kubernetes API-Server zulässt. Sie können beispielsweise alle Secrets auflisten, indem Sie folgenden Befehl ausführen:
kubectl get secrets --all-namespaces --kubeconfig=${ADMIN_KUBECONFIG}
Dabei ist ${ADMIN_KUBECONFIG}
der Pfad der kubeconfig-Datei für den Administratorcluster.
Der Zugriff mit ADMIN_KUBECONFIG
wird als der allgemeine Nutzername admin
authentifiziert. Hierdurch wird das Erfassen der Person, die den Befehl ausführt, erschwert. Daher ist es wichtig, ADMIN_KUBECONFIG
an einem sicheren Ort aufzubewahren und nur bei Bedarf zu verwenden, z. B. beim Einrichten der ersten Rollenbindungen für Plattformadministratoren oder Wiederherstellung nach OIDC-Fehlern.
Management Center und Messwertzugriff
Im privaten Anthos-Modus werden alle Nutzer, die an diese vier Rollen gebunden sind, automatisch in die Zulassungsliste von Management Center und der Messwerte (Grafana) synchronisiert.
Rollen mit schreibgeschützten Zugriffsrechten werden verweigert, wenn sie in Management Center eine Schreibaktion ausführen möchten.
Rollenbindungen
Beim Einrichten von OIDC in der Management Center Console können Sie einen anfänglichen Nutzer festlegen, der an die Plattformadministratorrolle gebunden ist. Bei einer angemeldeten kubeconfig für den anfänglichen Plattformadministratornutzer gibt es zwei Ansätze, um einen weiteren Nutzer an die Rolle des Plattformadministrators zu binden:
- (Empfohlen) Gruppenmitgliedschaft im OIDC-Anbieter einrichten und Rollenbindungen anhand der Gruppe erstellen
- Rollenbindungen anhand des Nutzers erstellen
(Empfohlen) Gruppenmitgliedschaft im OIDC-Anbieter einrichten und Rollenbindungen anhand der Gruppe erstellen
Bei diesem Ansatz wird eine Ihrer Gruppen an eine vordefinierte Rolle gebunden, um allen Mitgliedern der Gruppe die gleichen Zugriffsrechte wie die vordefinierte Rolle zu erteilen.
Hinweis
Prüfen Sie vor dem Start Folgendes:
- Ermitteln Sie den OIDC-Anbieter, von dem die Gruppe stammt.
- Das Feld Gruppenanforderung auf dem Tab OIDC-Profil muss mit dem Namen der Anforderung übereinstimmen, die Informationen zur Gruppenmitgliedschaft auf Ihrer OIDC-Anbieterseite enthält. Im privaten Anthos-Modus wird dieses Feld auf den Standardwert
groups
gesetzt. Wenn Ihr OIDC-Anbieter jedoch einen anderen Wert hat, müssen Sie diesen auf dem Tab OIDC-Profil festlegen. - Notieren Sie sich das Gruppenpräfix auf dem Tab OIDC-Profil. Sie müssen das Gruppenpräfix vor allen Gruppennamen einfügen. Wenn Sie beispielsweise
gid-
als Gruppenpräfix und eine Gruppe „admin-group“ bei Ihrem OIDC-Anbieter haben, müssen Siegid-admin-group
verwenden. Beachten Sie, dass das Trennzeichen-
Teil des Gruppenpräfixes ist. Das System fügt kein Trennzeichen für Sie hinzu.
Bindungen mithilfe der Management Center Console verwalten
Sie können in der Management Center Console den Tab Zugriff verwenden, um Ihre Rollenbindungen basierend auf Gruppen zu verwalten.
Sie können einer Rolle mit mehr Berechtigungen, als das aktuell angemeldete Konto hat, keine Bindung hinzufügen und dafür keine Bindung aktualisieren. Wenn Sie beispielsweise als Plattformadministrator angemeldet sind, ist es nicht möglich, eine Gruppe an eine Infrastrukturbetreiber-Rolle zu binden.
Bindungen mit kubectl
verwalten
Alternativ können Sie den folgenden Befehl ausführen, um eine Rollenbindung anhand der Gruppe zu erstellen. Der an group=
übergebene Wert muss mit dem Gruppennamen im OIDC-Anbieter plus dem Präfix Ihrer Gruppe übereinstimmen:
kubectl create clusterrolebinding anthos-platform-admin-group-binding \
--kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin \
--group=gid-anthos-platform-admin-group
Jeder Nutzer, den Sie dem OIDC-Anbieter zu anthos-platform-admin-group
hinzugefügt haben, hat jetzt alle Plattformadministratorberechtigungen.
Analog können Sie mit dem folgenden Befehl eine Gruppe an die Rolle „Plattformadministrator (schreibgeschützt)“ binden:
kubectl create clusterrolebinding anthos-platform-admin-read-only-group-binding \
--kubeconfig=ADMIN_OIDC_KUBECONFIG --clusterrole=anthos-platform-admin-read-only \
--group=gid-anthos-platform-admin-read-only-group
Um eine Rechteausweitung zu verhindern, kann ein Plattformadministrator einen Nutzer nicht an die Rolle „Infrastrukturbetreiber“ oder „Infrastrukturbetreiber (schreibgeschützt)“ binden. Zum Initialisieren der ersten Gruppe des Infrastrukturbetreibers benötigen Sie ADMIN_KUBECONFIG
:
kubectl create clusterrolebinding anthos-platform-operator-group-binding \
--kubeconfig=${ADMIN_KUBECONFIG} --clusterrole=anthos-infrastructure-operator --group=gid-anthos-platform-operator-group
Danach können Sie eine KUBECONFIG
mit einem angemeldeten Infrastrukturbetreiber-Konto verwenden, um andere Gruppen an beliebige Rollen zu binden:
# Bind a group to infrastructure operator (read-only):
kubectl create clusterrolebinding anthos-platform-operator-read-only-binding \
--clusterrole=anthos-infrastructure-operator-read-only --group=gid-anthos-platform-operator-read-only-group --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
Rollenbindungen anhand des Nutzers erstellen
Sie können auch Rollenbindungen erstellen, die auf der Nutzerrolle basieren. Die Befehle zum Erstellen von Rollenbindungen sind mit der Verwendung einer Gruppe vergleichbar. Ersetzen Sie --group
durch --user
.
Sie müssen auch das Nutzerpräfix Ihres OIDC-Profils an die Nutzernamen anhängen.
Wenn für Ihren OIDC-Anbieter beispielsweise das Nutzerpräfix uid-
festgelegt ist und Sie joedoe@example.com
an eine Rolle binden möchten, verwenden Sie uid-joedoe@example.com
.
Sie können auch den Tab Zugriff in der Management Center Console verwenden, um Rollenbindungen für Nutzer zu verwalten.
Mit dem folgenden Beispielbefehl erstellen Sie eine Rollenbindung für charlie@example.com
und weisen ihr Plattformadministratorberechtigungen zu:
kubectl create clusterrolebinding charlie-platform-admin-binding \
--clusterrole=anthos-platform-admin --user=uid-charlie@example.com --kubeconfig=ADMIN_OIDC_KUBECONFIG
Wenn Sie eine Rollenbindung löschen möchten, um die Zugriffsrechte eines Nutzers zu entfernen, können Sie vorhandene Bindungen aktualisieren, anstatt sie zu löschen (z .B. Plattformadministratorrechte von charlie@example.com
widerrufen):
kubectl patch clusterrolebinding charlie-platform-admin-binding \
-p '{"subjects":[]}' --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
Sie können auch Ihren Infrastrukturbetreiber bitten, ClusterRoleBinding
zu löschen.
Hinweise
- Weitere Informationen zur Autorisierung finden Sie unter RBAC-Autorisierung verwenden.
- In den Nutzerclustern sind keine voreingestellten Autorisierungsrollen festgelegt. Jeder API-Serverzugriff in jedem Nutzercluster ist für jeden zugänglich, der kubeconfig hat.
- Plattformadministratoren dürfen keine Rollenbindung löschen, um zu verhindern, dass Plattformadministratoren Bindungen für privilegierte Nutzer löschen. Wenn Sie den Zugriff eines Nutzers widerrufen möchten, können Sie die Rollenbindung aktualisieren, die den Nutzer an eine leere Themenliste bindet. Durch die Löschaktion auf der Seite Identität und Zugriff der Management Center Console werden auch die Rollenbindungen auf eine leere Themenliste aktualisiert, anstatt die Bindungen aus demselben Grund zu löschen.
- Der Name der Ressource
ClusterRoleBinding
muss eindeutig sein. Nur die neueste angewendete oder erstellte Bindung wird wirksam, wenn mehrere Clusterrollenbindungen mit demselben Namen vorhanden sind.
Kubernetes-Ressourcenzugriffsrechte für jede voreingestellte Rolle
Dieser Abschnitt enthält Details zu allen Kubernetes-Ressourcenzugriffsrechten für jede voreingestellte Rolle.
Infrastrukturbetreiber
Die Rolle des Infrastrukturbetreibers entspricht der Kubernetes-Rolle anthos-infrastructure-operator
, die Verben für alle Ressourcen ausführen kann.
Infrastrukturbetreiber (schreibgeschützt)
Die Rolle „Infrastrukturbetreiber (schreibgeschützt)“ entspricht der Rolle anthos-infrastructure-operator-read-only
von Kubernetes, die alle Ressourcen in den hier aufgeführten ApiGroups mit eingeschränktem Lesezugriff auf Secret
lesen kann.
Der Lesezugriff auf Secret
ist nur auf das Zugriffstoken des Administratorclusters, die kubeconfig-Datei des Nutzerclusters und die Secrets mit dem Label logmon
im kube-system
für Logging und Monitoring beschränkt.
ApiGroups | Ressource | Verben |
---|---|---|
"" | configmaps | get, list, watch |
"" | endpoints | get, list, watch |
"" | persistentvolumeclaims | get, list, watch |
"" | persistentvolumeclaims/status | get, list, watch |
"" | Pods | get, list, watch |
"" | replicationcontrollers | get, list, watch |
"" | replicationcontrollers/scale | get, list, watch |
"" | serviceaccounts | get, list, watch |
"" | Dienste | get, list, watch |
"" | services/status | get, list, watch |
"" | Grafik: Bindungen | get, list, watch |
"" | Ereignisse | get, list, watch |
"" | limitranges | get, list, watch |
"" | namespaces/status | get, list, watch |
"" | pods/log | get, list, watch |
"" | pods/status | get, list, watch |
"" | replicationcontrollers/status | get, list, watch |
"" | resourcequotas | get, list, watch |
"" | resourcequotas/status | get, list, watch |
"" | namespaces | get, list, watch |
apps | ** | get, list, watch |
Autoscaling | ** | get, list, watch |
Batch | ** | get, list, watch |
cert-manager.io | ** | get, list, watch |
extensions | ** | get, list, watch |
metrics.k8s.io | ** | get, list, watch |
networking.k8s.io | ** | get, list, watch |
policy | ** | get, list, watch |
rbac.authorization.k8s.io | ** | get, list, watch |
addons.gke.io | * | get, list, watch |
authentication.gke.io | ** | get, list, watch |
baremetal.cluster.gke.io | ** | get, list, watch |
cluster.x-k8s.io | ** | get, list, watch |
managementcenter.anthos.cloud.google.com | ** | get, list, watch |
Plattformadministrator
Die Rolle des Plattformadministrators hat folgende Zugriffsrechte:
Ressource | Verben |
---|---|
namespaces | get, list, watch, create, update |
pods | get, list, watch |
services | get, list, watch |
events | get, list, watch |
configmaps | get, list, watch |
deployments | get, list, watch |
daemonsets | get, list, watch |
replicasets | get, list, watch |
statefulsets | get, list, watch |
jobs | get, list, watch |
cronjobs | get, list, watch |
memberships.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
onpremuserclusters.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
clusters.baremetal.cluster.gke.io | get, list, watch, create |
nodepools.baremetal.cluster.gke.io | get, list, watch, create |
clusters.cluster.x-k8s.io | get, list, watch |
machines.baremetal.cluster.gke.io | get, list, watch |
inventorymachines.baremetal.cluster.gke.io | get, list, watch |
addresspools.managementcenter.anthos.cloud.google.com | get, list, watch |
bootstrapservicebindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
bootstrapservices.managementcenter.anthos.cloud.google.com | get, list, watch |
bootstrapservicebindingitems.managementcenter.anthos.cloud.google.com | get, list, watch |
adminoperators.managementcenter.anthos.cloud.google.com | get, list, watch |
clientconfigs.authentication.gke.io | get, list, watch, create, update, delete |
configmanagementbindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
configmanagementfeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
configmanagementbindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshbindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshfeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
servicemeshbindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicebindings.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicefeaturespecs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
identityservicebindingitems.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
updatablecomponents.managementcenter.anthos.cloud.google.com | get, list, watch |
domainconfigs.managementcenter.anthos.cloud.google.com | get, list, watch, create, update, delete |
logmons.addons.gke.io | get, list, watch, create, update, delete |
clusterrolebindings.rbac.authorization.k8s.io | get, list, watch, create, update |
Ein Plattformadministrator hat auch Lesezugriff auf secrets
, damit er eine kubeconfig-Datei abrufen kann, die bei einem Nutzercluster als cluster-admin
-Rolle authentifiziert ist.
Plattformadministratoren können secrets
und configmaps
mit dem Label logmon
im kube-system
lesen und schreiben, um Logmon zu konfigurieren.
Plattformadministrator (schreibgeschützt)
Die Rolle „Plattformadministrator (schreibgeschützt)“ hat dieselben Zugriffsrechte wie „Plattformadministrator“, mit Ausnahme von:
- Alle schreibbezogenen Verben (create, update, delete) werden nicht erteilt.
- Für den Zugriff auf einen Nutzercluster kann „Plattformadministrator (schreibgeschützt)“ eine kubeconfig-Datei lesen, die als
view
-Rolle im Nutzercluster authentifiziert ist.