欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

2023年CKS考试:深入理解RBAC权限控制详解及解题关键

最编程 2024-02-23 13:57:27
...

题目:RBAC权限控制

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