Refactor RBAC configuration to use ClusterRole and ClusterRoleBinding for k8s-mgmt-pod with expanded resource permissions, while retaining security.
All checks were successful
Build k8s-mgmt-pod image / Build & Push (push) Successful in 2m23s
All checks were successful
Build k8s-mgmt-pod image / Build & Push (push) Successful in 2m23s
This commit is contained in:
parent
41d4b36345
commit
95281d36e1
1 changed files with 153 additions and 13 deletions
166
k8s/rbac.yaml
166
k8s/rbac.yaml
|
|
@ -1,49 +1,189 @@
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: Role
|
kind: ClusterRole
|
||||||
metadata:
|
metadata:
|
||||||
name: k8s-mgmt-pod
|
name: k8s-mgmt-pod
|
||||||
rules:
|
rules:
|
||||||
# This is intentionally broader than the strict minimum so lfk and kubectl are usable.
|
|
||||||
# Scope it down to the smallest verb and resource set your operators actually need.
|
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
resources:
|
resources:
|
||||||
- configmaps
|
- configmaps
|
||||||
- endpoints
|
- endpoints
|
||||||
- events
|
- events
|
||||||
|
- limitranges
|
||||||
|
- namespaces
|
||||||
|
- nodes
|
||||||
- persistentvolumeclaims
|
- persistentvolumeclaims
|
||||||
|
- persistentvolumes
|
||||||
- pods
|
- pods
|
||||||
- pods/exec
|
|
||||||
- pods/log
|
- pods/log
|
||||||
- secrets
|
- pods/portforward
|
||||||
|
- pods/proxy
|
||||||
|
- replicationcontrollers
|
||||||
|
- replicationcontrollers/scale
|
||||||
|
- resourcequotas
|
||||||
- serviceaccounts
|
- serviceaccounts
|
||||||
- services
|
- services
|
||||||
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
|
- services/proxy
|
||||||
|
verbs: ["*"]
|
||||||
- apiGroups: ["apps"]
|
- apiGroups: ["apps"]
|
||||||
resources:
|
resources:
|
||||||
|
- controllerrevisions
|
||||||
- daemonsets
|
- daemonsets
|
||||||
- deployments
|
- deployments
|
||||||
|
- deployments/scale
|
||||||
- replicasets
|
- replicasets
|
||||||
|
- replicasets/scale
|
||||||
- statefulsets
|
- statefulsets
|
||||||
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
|
- statefulsets/scale
|
||||||
|
verbs: ["*"]
|
||||||
- apiGroups: ["batch"]
|
- apiGroups: ["batch"]
|
||||||
resources:
|
resources:
|
||||||
- cronjobs
|
- cronjobs
|
||||||
- jobs
|
- jobs
|
||||||
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["autoscaling"]
|
||||||
|
resources:
|
||||||
|
- horizontalpodautoscalers
|
||||||
|
verbs: ["*"]
|
||||||
- apiGroups: ["networking.k8s.io"]
|
- apiGroups: ["networking.k8s.io"]
|
||||||
resources:
|
resources:
|
||||||
|
- ingressclasses
|
||||||
- ingresses
|
- ingresses
|
||||||
- networkpolicies
|
verbs: ["*"]
|
||||||
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
|
- apiGroups: ["extensions"]
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["policy"]
|
||||||
|
resources:
|
||||||
|
- poddisruptionbudgets
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["coordination.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- leases
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["storage.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- csidrivers
|
||||||
|
- csinodes
|
||||||
|
- csistoragecapacities
|
||||||
|
- storageclasses
|
||||||
|
- volumeattachments
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["apiextensions.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["admissionregistration.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- mutatingadmissionpolicies
|
||||||
|
- mutatingwebhookconfigurations
|
||||||
|
- validatingadmissionpolicies
|
||||||
|
- validatingwebhookconfigurations
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["metrics.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
- pods
|
||||||
|
verbs: ["get", "list", "watch"]
|
||||||
|
- apiGroups: ["gateway.networking.k8s.io"]
|
||||||
|
resources:
|
||||||
|
- gatewayclasses
|
||||||
|
- gateways
|
||||||
|
- httproutes
|
||||||
|
- referencegrants
|
||||||
|
- tcproutes
|
||||||
|
- tlsroutes
|
||||||
|
- udproutes
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["cert-manager.io"]
|
||||||
|
resources:
|
||||||
|
- certificates
|
||||||
|
- certificaterequests
|
||||||
|
- clusterissuers
|
||||||
|
- issuers
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["monitoring.coreos.com"]
|
||||||
|
resources:
|
||||||
|
- alertmanagers
|
||||||
|
- podmonitors
|
||||||
|
- prometheuses
|
||||||
|
- prometheusrules
|
||||||
|
- servicemonitors
|
||||||
|
- thanosrulers
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["argoproj.io"]
|
||||||
|
resources:
|
||||||
|
- applications
|
||||||
|
- appprojects
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["traefik.containo.us", "traefik.io"]
|
||||||
|
resources:
|
||||||
|
- ingressroutes
|
||||||
|
- middlewares
|
||||||
|
- traefikservices
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["k8s.cni.cncf.io"]
|
||||||
|
resources:
|
||||||
|
- network-attachment-definitions
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["kubevirt.io"]
|
||||||
|
resources:
|
||||||
|
- virtualmachineinstances
|
||||||
|
- virtualmachines
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["subresources.kubevirt.io"]
|
||||||
|
resources:
|
||||||
|
- "*"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["instancetype.kubevirt.io"]
|
||||||
|
resources:
|
||||||
|
- "*"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["cdi.kubevirt.io"]
|
||||||
|
resources:
|
||||||
|
- "*"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["pool.kubevirt.io"]
|
||||||
|
resources:
|
||||||
|
- "*"
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["cluster.x-k8s.io"]
|
||||||
|
resources:
|
||||||
|
- clusters
|
||||||
|
- machinedeployments
|
||||||
|
- machinepools
|
||||||
|
- machines
|
||||||
|
- machinesets
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["controlplane.cluster.x-k8s.io"]
|
||||||
|
resources:
|
||||||
|
- kubeadmcontrolplanes
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["bootstrap.cluster.x-k8s.io"]
|
||||||
|
resources:
|
||||||
|
- kubeadmconfigs
|
||||||
|
- kubeadmconfigtemplates
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["infrastructure.cluster.x-k8s.io"]
|
||||||
|
resources:
|
||||||
|
- kubevirtclusters
|
||||||
|
- kubevirtmachinetemplates
|
||||||
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["addons.cluster.x-k8s.io"]
|
||||||
|
resources:
|
||||||
|
- clusterresourcesets
|
||||||
|
verbs: ["*"]
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: RoleBinding
|
kind: ClusterRoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
name: k8s-mgmt-pod
|
name: k8s-mgmt-pod-access
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: k8s-mgmt-pod
|
name: k8s-mgmt-pod
|
||||||
|
namespace: k8s-mgmt-pod
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: Role
|
kind: ClusterRole
|
||||||
name: k8s-mgmt-pod
|
name: k8s-mgmt-pod
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue