CKS 考试题整理 (07)-RBAC - RoleBinding

发布时间 2023-06-16 15:52:05作者: 打工人,打工魂

Context

绑定到 Pod 的 ServiceAccount 的 Role 授予过度宽松的权限,完成以下项目以减少权限集。

Task

一个名为 web-pod 的现有 Pod 已在 namespace db 中运行。

编辑绑定到 Pod 的 ServiceAccount service-account-web 的现有 Role,仅允许只对 service 类型的资源执行 get 操作。

在 namespace db 中创建一个名为 role-2,并仅允许只对 namespace 类型的资源执行 delete 操作的新 Role。

创建一个名为 role-2-binding 的新 RoleBinding,将新创建的 Role 绑定到 Pod 的ServiceAccount。

注意:请勿删除现有的 RoleBinding

 

参考资料

https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/

 

答题

考试时,注意切换集群

kubectl config use-context KSCH00201

 

查看 ServiceAccount service-account-web 对应的 rolebindings role-1-binding

查看 rolebindings role-1-binding 对应的 role 为 role-1

kubectl describe rolebinding -n db

编辑 role-1 权限:

kubectl edit role role-1 -n db

 

修改内容如下:

......

resourceVersion: "30876"

uid:21e1a241-a2f3-1241-d09l-2saf25kl2j45

rules:

- apiGroups: [""] # "" 标明 core API 组

resources: ["services"] # 对 service 资源 get 操作权限

verbs: ["get"]

 

检查

kubectl describe role role-1 -n db

 

在 db 命名空间,创建名为 role-2 的 role, 并且通过 rolebinding 绑定 service-account-web, 只允许对 namespace 做delete 操作。

kubectl create role role-2 --verb=delete --resource=namespace -n db

kubectl create rolebinding role-2-binding --role=role-2 --serviceaccount=db:service-account-web -n db

检查

kubectl describe rolebinding -n db