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-team1
Namespace。
2. 资源权限定义
-
核心考点:在ClusterRole中正确定义允许操作的资源类型及操作动词。
-
资源类型:
deployments
、statefulsets
、daemonsets
(注意复数形式)。 -
API组:Deployment属于
apps/v1
API组,需显式声明。 -
操作动词:仅允许
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-team1
Namespace。
-
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
操作)。
实验环境搭建后,可通过验证命令确保权限配置符合预期,避免因权限泄漏导致的安全风险。