1919 # Framework: runtime observation of namespaces & CRDs (addition/deletion).
2020 - apiGroups : [apiextensions.k8s.io]
2121 resources : [customresourcedefinitions]
22- verbs : [list, watch]
22+ verbs : [get, list, watch]
2323 - apiGroups : [""]
2424 resources : [namespaces]
2525 verbs : [list, watch]
@@ -31,39 +31,38 @@ rules:
3131
3232 # Application: watch the CabotageTailscaleOperatorConfig CRD cluster-wide.
3333 - apiGroups : [cabotage.io]
34- resources : [cabotagetailscaleoperatorconfigs]
34+ resources : [cabotagetailscaleoperatorconfigs, cabotagetailscaleoperatorconfigs/status ]
3535 verbs : [list, watch, patch, get]
3636
3737 # Manage K8s resources in org namespaces for the Tailscale operator.
3838 - apiGroups : [""]
3939 resources : [secrets, serviceaccounts]
40- verbs : [get, list, create, update, patch, delete]
40+ verbs : [get, list, watch, create, update, patch, delete]
4141 - apiGroups : [apps]
4242 resources : [deployments]
43- verbs : [get, list, create, update, patch, delete]
43+ verbs : [get, list, watch, create, update, patch, delete]
4444 - apiGroups : [rbac.authorization.k8s.io]
4545 resources : [roles, rolebindings]
46- verbs : [get, list, create, update, patch, delete]
46+ verbs : [get, list, watch, create, update, patch, delete]
4747
4848 # Manage ClusterRoleBinding subjects (add/remove operator SAs).
4949 - apiGroups : [rbac.authorization.k8s.io]
5050 resources : [clusterrolebindings]
5151 verbs : [get, list, update, patch]
5252
53- # Must hold all permissions from the tailscale-operator ClusterRole
54- # (RBAC escalation prevention when modifying its ClusterRoleBinding),
55- # plus all permissions from the namespace-scoped operator Role.
53+ # Delegated permissions — the manager must hold every permission it grants
54+ # via the tailscale-operator ClusterRole (K8s RBAC escalation prevention).
5655 - apiGroups : [""]
5756 resources : [nodes]
5857 verbs : [get, list, watch]
5958 - apiGroups : [""]
60- resources : [configmaps, events, pods, services, services/status]
59+ resources : [configmaps, events, pods]
60+ verbs : [get, list, watch, create, update, patch, delete]
61+ - apiGroups : [""]
62+ resources : [services, services/status]
6163 verbs : [get, list, watch, create, update, patch, delete, deletecollection]
62- - apiGroups : [apiextensions.k8s.io]
63- resources : [customresourcedefinitions]
64- verbs : [get, list, watch]
6564 - apiGroups : [apps]
66- resources : [statefulsets, deployments ]
65+ resources : [statefulsets]
6766 verbs : [get, list, watch, create, update, patch, delete]
6867 - apiGroups : [coordination.k8s.io]
6968 resources : [leases]
@@ -72,14 +71,8 @@ rules:
7271 resources : [endpointslices]
7372 verbs : [get, list, watch]
7473 - apiGroups : [networking.k8s.io]
75- resources : [ingresses, ingresses/status]
76- verbs : [get, list, watch, create, update, patch, delete, deletecollection]
77- - apiGroups : [networking.k8s.io]
78- resources : [ingressclasses]
74+ resources : [ingresses, ingresses/status, ingressclasses]
7975 verbs : [get, list, watch, update, patch]
80- - apiGroups : [rbac.authorization.k8s.io]
81- resources : [roles, rolebindings]
82- verbs : [get, list, watch, create, update, patch, delete]
8376 - apiGroups : [tailscale.com]
8477 resources : ["*"]
8578 verbs : [get, list, watch, create, update, patch, delete]
0 commit comments