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 acceso correcto a nivel del clúster.

Permisos predeterminados

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

Componente Espacio de nombres Cuenta de servicio Permisos Descripción
reconciler-manager config-management-system reconciler-manager cluster-admin Para aprovisionar los reconciliadores raíz y crear el ClusterRoleBinding para los reconciliadores raíz, el reconciler-manager debe tener permiso de cluster-admin.
root reconcilers config-management-system El nombre del conciliador raíz cluster-admin Para aplicar recursos personalizados y con alcance 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 los roles 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 permisos de cluster-admin.
importer config-management-system importer cluster-admin Para establecer permisos de RBAC, el importer debe tener permiso de cluster-admin.

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 mencionaron en la tabla anterior.

Sincronizador de configuración aplica automáticamente estos permisos incluyendo los siguientes ClusterRoles en los manifiestos del reconciliador 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 basado 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 basado en roles para el controlador de grupos 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:
  - '*'