Config Sync のデフォルトの権限

このページでは、Config Sync とそのコンポーネントがクラスタレベルで適切なアクセス権を所有するために必要なデフォルトの権限の一覧を示します。

デフォルトの権限

次の表に、Config Sync がデフォルトで有効にする権限の一覧を示します。Config Sync の使用中は、これらの権限を無効にしないでください。

コンポーネント Namespace サービス アカウント 権限 説明
reconciler-manager config-management-system reconciler-manager cluster-admin ルート Reconciler をプロビジョニングし、ルート Reconciler の ClusterRoleBinding を作成するには、reconciler-managercluster-admin 権限が必要です。
root reconcilers config-management-system ルート Reconciler の名前 cluster-admin クラスタ スコープのリソースとカスタム リソースを適用するには、ルート Reconciler に cluster-admin 権限が必要です。
namespace reconcilers config-management-system Namespace Reconciler の名前 configsync.gke.io:ns-reconciler RepoSync オブジェクトと ResourceGroup オブジェクト、およびそれらのステータスを取得して更新するには、Namespace Reconciler に configsync.gke.io:ns-reconciler 権限が必要です。
resource-group-controller-manager config-management-system resource-group-sa オブジェクトのステータスを確認し、リーダー選出を有効にするには、resource-group-controller-managerresource-group-manager-roleresource-group-leader-election-role のロールが必要です。
admission-webhook config-management-system admission-webhook cluster-admin クラスタ上のオブジェクトに対するリクエストを拒否するには、アドミッション Webhook に cluster-admin 権限が必要です。
importer config-management-system importer cluster-admin RBAC 権限を設定するには、importer に cluster-admin 権限が必要です。

Config Sync 固有の権限

以下では、上記の表に示した configsync.gke.io:ns-reconciler 権限と resource-group-manager-role resource-group-leader-election-role 権限の詳細について説明します。

Config Sync は、Namespace Reconciler とリソース グループ コントローラのマニフェストに次の ClusterRole を含めることで、これらの権限を自動的に適用します。

Namespace Reconciler の RBAC

次の ClusterRole は、Namespace Reconciler のロールベースのアクセス制御権限を示しています。

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

次の ClusterRole は、リソース グループ コントローラのロールベースのアクセス制御権限を示しています。

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