Standardberechtigungen für Config Sync

Auf dieser Seite werden die Standardberechtigungen aufgeführt, die Config Sync und seine Komponenten für den korrekten Zugriff auf Clusterebene benötigen.

Standardberechtigungen

In der folgenden Tabelle sind die Berechtigungen aufgeführt, die von Config Sync standardmäßig aktiviert werden. Sie sollten diese Berechtigungen nicht deaktivieren, während Config Sync verwendet wird.

Komponente Namespace Dienstkonto Berechtigungen Beschreibung
reconciler-manager config-management-system reconciler-manager cluster-admin Damit die Root-Abgleicher bereitgestellt und die ClusterRoleBinding für die Root-Abgleicher erstellt werden kann, muss der reconciler-manager die Berechtigung cluster-admin haben.
root reconcilers config-management-system Der Name des Root-Abgleichers cluster-admin Die Root-Abgleicher müssen die Berechtigung cluster-admin haben, um clusterbezogene und benutzerdefinierte Ressourcen anwenden zu können.
namespace reconcilers config-management-system Der Name des Namespace-Abgleichers configsync.gke.io:ns-reconciler Zum Abrufen und Aktualisieren der RepoSync- und ResourceGroup-Objekte und deren Status benötigen die Namespace-Abgleicher die Berechtigung configsync.gke.io:ns-reconciler.
resource-group-controller-manager config-management-system resource-group-sa Um den Objektstatus zu prüfen und die Leader-Auswahl zu aktivieren, benötigt resource-group-controller-manager die Rollen resource-group-manager-role und resource-group-leader-election-role.
admission-webhook config-management-system admission-webhook cluster-admin Um Anfragen an jedes Objekt im Cluster ablehnen zu können, muss der Zulassungs-Webhook cluster-admin-Berechtigungen haben.
importer config-management-system importer cluster-admin Zum Festlegen von RBAC-Berechtigungen muss der importer die Berechtigung „Clusteradministrator“ haben.

Config Sync-spezifische Berechtigungen

In den folgenden Abschnitten werden die in der vorherigen Tabelle aufgeführten Berechtigungen configsync.gke.io:ns-reconciler und resource-group-manager-role resource-group-leader-election-role näher beschrieben.

Config Sync wendet diese Berechtigungen automatisch an, indem die folgenden ClusterRoles in die Manifeste von Namespace Reconciler und Resource Group Controller aufgenommen werden.

RBAC für Namespace-Abgleicher

Die folgende ClusterRole zeigt die Berechtigungen für die rollenbasierte Zugriffssteuerung für Namespace-Abgleicher:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: configsync.gke.io:ns-reconciler
  labels:
    configmanagement.gke.io/system: "true"
    configmanagement.gke.io/arch: "csmr"
rules:
- apiGroups: ["configsync.gke.io"]
  resources: ["reposyncs"]
  verbs: ["get"]
- apiGroups: ["configsync.gke.io"]
  resources: ["reposyncs/status"]
  verbs: ["get","list","update"]
- apiGroups: ["kpt.dev"]
  resources: ["resourcegroups"]
  verbs: ["*"]
- apiGroups: ["kpt.dev"]
  resources: ["resourcegroups/status"]
  verbs: ["*"]
- apiGroups:
  - policy
  resources:
  - podsecuritypolicies
  resourceNames:
  - acm-psp
  verbs:
  - use

RBAC für Resource Group Controller

Die folgende ClusterRole zeigt die rollenbasierten Zugriffssteuerungsberechtigungen für den Resource Group Controller:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  labels:
    configmanagement.gke.io/arch: "csmr"
    configmanagement.gke.io/system: "true"
  name: resource-group-manager-role
rules:
# This permission is needed to get the status for managed resources
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - get
  - list
  - watch
# This permission is needed to watch/unwatch types as they are registered or removed.
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - get
  - list
  - watch
# This permission is needed so that the ResourceGroup Controller can reconcile a ResourceGroup CR
- apiGroups:
  - kpt.dev
  resources:
  - resourcegroups
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
# This permission is needed so that the ResourceGroup Controller can update the status of a ResourceGroup CR
- apiGroups:
  - kpt.dev
  resources:
  - resourcegroups/status
  verbs:
  - get
  - patch
  - update
# This permission is needed so that the ResourceGroup Controller can work on a cluster with PSP enabled
- apiGroups:
  - policy
  resourceNames:
  - acm-psp
  resources:
  - podsecuritypolicies
  verbs:
  - use
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    configmanagement.gke.io/arch: "csmr"
    configmanagement.gke.io/system: "true"
  name: resource-group-leader-election-role
  namespace: resource-group-system
rules:  // The following permissions are needed so that the leader election can work
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - configmaps/status
  verbs:
  - get
  - update
  - patch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - '*'