2024 CKA模拟系统制作 | Step-By-Step | 4、题目搭建-权限控制RBAC
目录
一、题目
二、题目考点分析
1. RBAC权限模型
2. 资源权限定义
3. ServiceAccount与绑定
三、考点详细讲解
1. RBAC权限模型
2. ClusterRole定义
四、实验环境搭建步骤
1. 创建Namespace
五、总结
免费获取题库配套 CKA_v1.31_模拟系统 咨询2025年最新题库和模拟系统请直接私信
一、题目
您必须在以下Cluster/Node上完成此考题:
Cluster Master node Worker node
ak8s master node01
.
设置配置环境:
[candidate@node01]$ kubectl config use-context ak8s
.
Context
为部署流水线创建一个新的clusterrole,并将其绑定到范围为特定的namespace的特定serviceaccount
.
Task
创建一个名为deployment-clusterrole且仅允许创建以下资源类型的新clusterrole:
.
• deployment
• statefulset
• daemonset
.
在现有的 namespace app-team1中创建一个名为 cicd-token的新 serviceaccount。
限于namespace app-team1中, 将新的clusterrole deployment-clusterrole绑定到新的serviceaccount cicd-token
二、题目考点分析
1. RBAC权限模型
-  核心考点:理解Kubernetes的基于角色的访问控制(RBAC)模型,包括: -  ClusterRole:定义集群范围的权限规则(如操作Deployment、StatefulSet等资源)。 
-  RoleBinding/ClusterRoleBinding:将权限绑定到用户、组或ServiceAccount。 
-  作用域限制:权限是否限定在特定Namespace。 
 
-  
-  关键区别: 
| 类型 | 作用范围 | 适用场景 | 
|---|---|---|
| Role + RoleBinding | 单个Namespace | 限制权限到某个命名空间 | 
| ClusterRole + ClusterRoleBinding | 全集群 | 跨命名空间的全局权限 | 
| ClusterRole + RoleBinding | 单个Namespace | 复用ClusterRole到特定命名空间 | 
-  本题要求: 
 必须使用 ClusterRole + RoleBinding 组合,实现权限仅作用于app-team1Namespace。
2. 资源权限定义
-  核心考点:在ClusterRole中正确定义允许操作的资源类型及操作动词。 -  资源类型: deployments、statefulsets、daemonsets(注意复数形式)。
-  API组:Deployment属于 apps/v1API组,需显式声明。
-  操作动词:仅允许 create操作。
 
-  
-  易错点: -  资源名称拼写错误(如误写为单数 deployment)。
-  忘记指定API组( apiGroups: ["apps"])。
 
-  
3. ServiceAccount与绑定
-  核心考点: -  在指定Namespace( app-team1)中创建ServiceAccount。
-  通过RoleBinding将ClusterRole与ServiceAccount绑定,并限制在同一个Namespace。 
 
-  
-  关键点: -  RoleBinding的 subjects字段需指定ServiceAccount的Namespace。
-  使用 roleRef引用ClusterRole。
 
-  
三、考点详细讲解
1. RBAC权限模型
-  RBAC核心组件: -  Subject(主体):用户、组或ServiceAccount。 
-  Role/ClusterRole(角色):定义权限规则(如“允许创建Deployment”)。 
-  RoleBinding/ClusterRoleBinding(绑定):将角色与主体关联。 
 
-  
-  权限作用域: -  Role + RoleBinding:权限仅限单个Namespace。 
-  ClusterRole + RoleBinding:ClusterRole的权限被限制到单个Namespace。 
-  ClusterRole + ClusterRoleBinding:权限全局生效。 
 
-  
-  本题场景: -  需要创建 ClusterRole(因为可能后续复用该权限到其他Namespace)。 
-  通过 RoleBinding 将其限制到 app-team1Namespace。
 
-  
2. ClusterRole定义
-  YAML示例: 
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: deployment-clusterrole
rules:
- apiGroups: ["apps"]       # Deployment等资源属于apps组resources: ["deployments", "statefulsets", "daemonsets"]verbs: ["create"]         # 仅允许创建操作关键参数解析:
| 字段 | 值 | 说明 | 
|---|---|---|
| apiGroups | ["apps"] | 资源所属的API组(Deployment在apps/v1) | 
| resources | 复数形式的资源类型名称 | 必须全小写,如 deployments | 
| verbs | ["create"] | 允许的操作动词 | 
四、实验环境搭建步骤
1. 创建Namespace
kubectl create namespace app-team1五、总结
本地我们只需创建题目要求的namespace即可,其他创建皆是题目考察内容。
 通过本题,重点掌握:
-  RBAC权限模型:区分Role/ClusterRole与Binding的作用范围。 
-  资源与权限定义:正确指定API组、资源类型和操作动词。 
-  最小权限原则:仅授予必要的权限(如仅允许 create操作)。
实验环境搭建后,可通过验证命令确保权限配置符合预期,避免因权限泄漏导致的安全风险。
