我想扮演一个角色,以便可以在名称空间级别上对“ Roles”和“ RoleBindings”(但不能对ClusterRoles或ClusterRoleBindings)进行任何操作。
这是我将YAML放在一起的角色,但现在将其绑定到服务帐户时,便会应用它。我做错了什么?
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: role-binder
namespace: foo-namespace
rules:
- apiGroups:
- rbac.authorization.k8s.io
resources:
- Role
- RoleBinding
verbs:
- '*'
答案 0 :(得分:1)
您可以使用以下规则来实现:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: role-grantor
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["rolebindings"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["roles"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-grantor-binding
namespace: office
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: employee
我在实验室进行了测试,它可以按您的要求工作:
$ kubectl --context=employee-context get role
NAME AGE
deployment-manager 15m
role-binder 12m
$ kubectl --context=employee-context get rolebindings
NAME AGE
deployment-manager-binding 15m
role-grantor-binding 3m37s
$ kubectl --context=employee-context get clusterrolebindings
Error from server (Forbidden): clusterrolebindings.rbac.authorization.k8s.io is forbidden: User "employee" cannot list resource "clusterrolebindings" in API group "rbac.authorization.k8s.io" at the cluster scope
您可以在documentation中专门阅读有关此内容的更多信息。