2

有没有办法创建一个具有完全访问权限的 K8s 集群角色(任何命名空间上的所有资源、动词和 apigroup)但在所有命名空间上都没有命令执行,例如:kubectl delete pods --all-namespaceskubectl delete pv --all-namespaces

(应该允许在单个命名空间上运行相同的命令,而不是对所有命名空间批量运行)。

如果使用集群角色无法实现这一点,是否有其他方法可以实现?

4

1 回答 1

1

如果将 clusterrole 绑定到仅需要的命名空间而不授予受限命名空间的权限怎么办?那不是完整的解决方案,至少用户将无法删除不需要的解决方案。并严格回答您的问题 - 不确定这是可能的。

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: testsa
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: testclusterrole
rules:
- apiGroups: [""]
  resources: ["pods","services","namespaces","deployments","jobs"]
  verbs: ["get", "watch", "list", "create", "delete", "patch", "update"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: job-master-1
  namespace: namespace1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: testclusterrole
subjects:
- kind: ServiceAccount
  name: testsa
  namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: job-master-2
  namespace: namespace2
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: job-master
subjects:
- kind: ServiceAccount
  name: satestsa  namespace: default

于 2022-02-21T15:44:18.550 回答