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