Standardberechtigungen für Config Sync

Auf dieser Seite sind 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 in Config Sync standardmäßig aktiviert sind. Sie sollten diese Berechtigungen nicht deaktivieren, solange Config Sync verwendet wird.

Komponente Namespace Dienstkonto Berechtigungen Beschreibung
reconciler-manager config-management-system reconciler-manager cluster-admin Zum Bereitstellen der Root-Abgleicher und Erstellen der ClusterRoleBinding für die Root-Abgleicher muss der reconciler-manager die Berechtigung cluster-admin haben.
root reconcilers config-management-system Name des Root-Abgleichers cluster-admin Zum Anwenden von clusterbezogenen und benutzerdefinierten Ressourcen müssen die Root-Abgleicher die cluster-admin Berechtigung haben.
namespace reconcilers config-management-system 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 configsync.gke.io:ns-reconciler Berechtigung.
resource-group-controller-manager config-management-system resource-group-sa Zum Prüfen des Objektstatus und Aktivieren der Leader-Auswahl benötigt der resource-group-controller-manager die resource-group-manager-role und resource-group-leader-election-role Rollen.
admission-webhook config-management-system admission-webhook cluster-admin Zum Ablehnen von Anfragen an ein beliebiges Objekt im Cluster muss der Zulassungs-Webhook die Berechtigung cluster-admin haben.
importer config-management-system importer cluster-admin Zum Festlegen von RBAC-Berechtigungen muss der importer die Berechtigung `cluster-admin` haben.

Config Sync-spezifische Berechtigungen

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

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

RBAC für Namespace-Abgleicher

Die folgende ClusterRole zeigt die RBAC-Berechtigungen 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 RBAC-Berechtigungen 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:
  - '*'