6. 【CKS】 考试之 RBAC 授权
6.1 题目要求
6.2 官网位置
官网搜索:rbac 官网位置: rbac
6.3 操作步骤
不要忘记切换 context
6.3.1 查找role名称
- 如何只有一个role那就直接 edit即可:
kubectl get role -n monitoring #如何只有一个role那就直接 edit即可
- 否则找出对应的role:
- 查找pod名称是dev-pod中的 ServiceAccount
kubectl get po -n monitoring dev-pod -oyaml | grep serviceAccountName
serviceAccountName: service-account-web #需要这个
- 根据serviceAccountName找出role的名称信息
# kubectl get rolebinding -n monitoring -oyaml | grep service-account-web -B5
apiGroup: rbac.authorization.k8s.io
kind: Role
name: web-role #需要这个
subjects:
- kind: ServiceAccount
name: service-account-web
6.3.2 修改 web-role 的 Role 权限
kubectl edit role web-role -n monitoring
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
creationTimestamp: "2023-08-16T09:32:48Z"
name: web-role
namespace: monitoring
resourceVersion: "103590029"
uid: 91ee4e7e-d79a-4b78-8fa4-2433fd811150
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
6.3.3 创建role名称为role-2,只对 StatefulSet 有 update 操作
- 命令行方式
kubectl create role role-2 --verb=update --resource=StatefulSet -n monitoring
- yaml方式
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
creationTimestamp: "2023-09-06T06:33:56Z"
name: role-2
namespace: monitoring
resourceVersion: "107773061"
uid: c90d7847-0e7f-4275-87dc-c484aacb613a
rules:
- apiGroups:
- apps
resources:
- statefulsets
verbs:
- update
6.3.4 创建rolebinding
kubectl create rolebinding role-2-binding --role=role-2 --serviceaccount=monitoring:service-account-web -n monitoring
6.4 题目更新(2022年11月)
编辑绑定到 Pod 的 ServiceAccount test-sa-3 的现有 Role,仅允许只对 endpoints 类型的 resources 执行get 操作。
在 namespace monitoring 中创建一个名为 role-2,并仅允许只对 namespaces 类型的 resources 执行delete 操作的新 Role。
创建一个名为 role-2-binding 的新的 RoleBinding,将 role-2 绑定到 Pod 绑定的 ServiceAccount 上。