Permissões padrão do Config Sync

Veja nesta página as permissões padrão que o Config Sync e os componentes dele precisam para ter acesso correto no nível do cluster.

Permissões padrão

A tabela a seguir lista as permissões que o Config Sync ativa por padrão. Não desative essas permissões enquanto o Config Sync estiver em uso.

Componente Namespace Conta de serviço Permissões Descrição
reconciler-manager config-management-system reconciler-manager cluster-admin Para provisionar os reconciliadores raiz e criar o ClusterRoleBinding para esses reconciliadores, o reconciler-manager precisa ter a permissão cluster-admin.
root reconcilers config-management-system Nome do reconciliador raiz cluster-admin Para aplicar recursos personalizados com escopo de cluster, os reconciliadores raiz precisam ter a permissão cluster-admin.
namespace reconcilers config-management-system Nome do reconciliador de namespace configsync.gke.io:ns-reconciler Para receber e atualizar os objetos RepoSync e ResourceGroup e os respectivos status, os reconciliadores de namespace precisam da permissão configsync.gke.io:ns-reconciler.
resource-group-controller-manager config-management-system resource-group-sa Para verificar o status do objeto e ativar a eleição de líder, o resource-group-controller-manager precisa dos papéis resource-group-manager-role e resource-group-leader-election-role.
admission-webhook config-management-system admission-webhook cluster-admin Para recusar solicitações a qualquer objeto no cluster, o webhook de admissão precisa da permissão cluster-admin.
importer config-management-system importer cluster-admin Para definir permissões do RBAC, o importer precisa ter a permissão de administrador do cluster.

Permissões específicas do Config Sync

As seções a seguir detalham as permissões configsync.gke.io:ns-reconciler e resource-group-manager-role resource-group-leader-election-role listadas na tabela anterior.

O Config Sync aplica essas permissões automaticamente incluindo os ClusterRoles a seguir nos manifestos do reconciliador de namespace e do controlador de grupos de recursos.

RBAC para reconciliadores de namespace

O ClusterRole abaixo mostra as permissões de controle de acesso com base no papel para reconciliadores de namespace:

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 o controlador de grupo de recursos

O ClusterRole abaixo mostra as permissões de controle de acesso com base no papel para o 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:
  - '*'