CKS 题库 4、RBAC - RoleBinding
Context
绑定到 Pod 的 ServiceAccount 的 Role 授予过度宽松的权限。完成以下项目以减少权限集。
Task
一个名为 web-pod 的现有 Pod 已在 namespace db 中运行。
编辑绑定到 Pod 的 ServiceAccount service-account-web 的现有 Role,仅允许只对 services 类型的资源执行 get 操作。
在 namespace db 中创建一个名为 role-2 ,并仅允许只对 namespaces 类型的资源执行 delete 操作的新 Role。
创建一个名为 role-2-binding 的新 RoleBinding,将新创建的 Role 绑定到 Pod 的 ServiceAccount。
注意:请勿删除现有的 RoleBinding。
参考
https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#role-and-clusterole
https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/#一些命令行工具
解答:
切换集群
kubectl config use-context KSCH00201
查看 ServiceAccount rolebinding 对应关系
kubectl -n db describe rolebindings
编辑 role-1 权限
kubectl -n db edit role role-1
添加如下
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- get
检查
kubectl -n db describe role role-1
在db命名空间,创建名为role-2的role,并且通过rolebinding绑定service-account-web,只允许对namespaces做delete操作。
记住 --verb是权限,可能考delete或者update等 --resource是对象,可能考namespaces或者persistentvolumeclaims等。
kubectl -n db create role role-2 --verb=delete --resource=namespaces
kubectl -n db create rolebinding role-2-binding --role=role-2 --serviceaccount=db:service-account-web
检查
kubectl -n db describe rolebindings