Permisos predeterminados del Sincronizador de configuración

En esta página, se enumeran los permisos predeterminados que el Sincronizador de configuración y sus componentes necesitan para tener el acceso correcto a nivel de clúster.

Permisos predeterminados

En la siguiente tabla, se enumeran los permisos que el Sincronizador de configuración habilita de forma predeterminada. No debes inhabilitar estos permisos mientras el Sincronizador de configuración esté en uso.

Componente Espacio de nombres Cuenta de servicio Permisos Descripción
reconciler-manager config-management-system reconciler-manager cluster-admin A fin de aprovisionar los conciliadores raíz y crear el ClusterRoleBinding para los conciliadores raíz, el reconciler-manager debe tener el permiso cluster-admin.
root reconcilers config-management-system El nombre del reconciliador raíz cluster-admin Para aplicar recursos personalizados y con permiso de clúster, los conciliadores raíz deben tener el permiso cluster-admin.
namespace reconcilers config-management-system El nombre del conciliador de espacio de nombres configsync.gke.io:ns-reconciler Para obtener y actualizar los objetos RepoSync y ResourceGroup, y sus estados, los conciliadores de espacio de nombres necesitan el permiso configsync.gke.io:ns-reconciler.
resource-group-controller-manager config-management-system resource-group-sa Para verificar el estado del objeto y habilitar la elección de líder, resource-group-controller-manager necesita las funciones resource-group-manager-role y resource-group-leader-election-role.
admission-webhook config-management-system admission-webhook cluster-admin Para rechazar solicitudes a cualquier objeto en el clúster, el webhook de admisión debe tener los permisos cluster-admin.
importer config-management-system importer cluster-admin Para establecer permisos de RBAC, importer debe tener permiso de administrador de clúster.

Permisos específicos del Sincronizador de configuración

En las siguientes secciones, se detallan los permisos configsync.gke.io:ns-reconciler y resource-group-manager-role resource-group-leader-election-role que se enumeran en la tabla anterior.

El Sincronizador de configuración aplica automáticamente estos permisos mediante la inclusión de los siguientes ClusterRoles en los manifiestos del Conciliador de espacios de nombres y del controlador de grupos de recursos.

RBAC para conciliadores de espacio de nombres

El siguiente ClusterRole muestra los permisos de control de acceso basados en funciones para los conciliadores de espacios de nombres:

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 para el controlador de grupos de recursos

El siguiente ClusterRole muestra los permisos de control de acceso basados en funciones para el controlador de grupo de recursos:

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:
  - '*'