基于角色的访问控制(RBAC)
使用 RBAC 角色和角色绑定,管理 Cluster 中用户和服务账户的权限。
基于角色的访问控制(RBAC) 是 CoddyKit 上的免费 Kubernetes Basics 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Kubernetes Basics 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Kubernetes Basics 课程共包含 4 节课。
Kubernetes 中的 RBAC 是什么?
欢迎学习!在本课中,我们将深入了解基于角色的访问控制(RBAC),这是 Kubernetes 中一项至关重要的安全功能。
RBAC 可以帮助您管理谁能在集群中执行哪些操作。它就像 Kubernetes 资源的门卫,确保只有获得授权的用户和应用才能执行特定操作。
RBAC 为什么必不可少
如果没有 RBAC,任何能够访问集群的人都有可能执行任意操作,从而带来安全风险或意外损坏。
- 安全性:防止未经授权的访问和操作。
- 合规性:帮助满足访问控制方面的监管要求。
- 最小权限:确保用户和应用只拥有绝对必要的权限。
RBAC 的核心概念
Kubernetes 中的 RBAC 依赖几个核心组件:
- 主体:“谁”(用户、服务账户和组)。
- 角色:“做什么”(一组权限)。
- RoleBindings:“如何关联”(将角色连接到主体)。
- ClusterRoles 和 ClusterRoleBindings:适用于整个集群的角色和角色绑定。
主体:用户和 ServiceAccount
Kubernetes 需要知道是谁在请求执行操作,这些对象称为主体:
- 用户:通常是人类管理员或开发人员。Kubernetes 不直接管理用户,而是依赖外部身份验证。
- ServiceAccount:由 Pod 内运行的应用或进程使用的 Kubernetes 对象。它们对于 Pod 与 API 服务器之间的通信至关重要。
使用角色定义权限
角色定义特定命名空间中的一组权限。它规定可以对哪些资源执行哪些操作(动词)。
例如,一个角色可能允许在“default”命名空间中获取和列出 Pod。
角色示例:Pod 读取者
下面是名为 pod-reader 的角色的 YAML 定义。此角色授予“获取”“列出”和“监视”(监控)Pod 的权限。
请注意,apiGroups: [""] 指的是 Kubernetes 核心 API 组。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: default
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]使用角色绑定授予权限
角色绑定会在特定命名空间内,将一个特定的角色连接到一个或多个主体(用户、服务账户或组)。
它建立了这样的关联:“此用户或应用可以在此命名空间中执行该角色允许的操作。”
角色绑定示例:授予访问权限
此角色绑定会将在 default 命名空间中名为 my-app-sa 的 ServiceAccount 与我们的 pod-reader 角色关联起来。现在,my-app-sa 可以读取 Pod。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-app-sa # The service account getting permissions
namespace: default
roleRef:
kind: Role
name: pod-reader # The Role being granted
apiGroup: rbac.authorization.k8s.ioClusterRoles 和 ClusterRoleBindings
有时,您需要适用于整个集群的权限,而不仅仅是某个命名空间中的权限。这正是ClusterRoles和ClusterRoleBindings的用途。
- ClusterRole:为集群范围的资源(例如节点和持久卷)定义权限,或定义适用于所有命名空间的操作权限(例如“列出所有 Pod”)。
- ClusterRoleBinding:将 ClusterRole 连接到主体,从而授予集群范围的权限。
RBAC 快速检查
开发人员需要仅在 dev 命名空间中部署新应用。要授予其这项特定权限,您主要会使用哪两个 Kubernetes RBAC 资源?
回顾:RBAC 基础
做得很好!您已经学习了 Kubernetes RBAC 的核心内容:
- RBAC 控制谁可以与集群资源交互。
- 角色定义命名空间内的权限。
- RoleBindings将角色关联到主体(用户、服务账户)。
- ClusterRoles和ClusterRoleBindings处理集群范围的权限。
掌握 RBAC 是保护 Kubernetes 环境安全的关键!
用 AI 导师学习 Kubernetes Basics — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 12
- 课程
- 48
常见问题解答
「基于角色的访问控制(RBAC)」课时是免费的吗?
是的 — 「基于角色的访问控制(RBAC)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kubernetes Basics 课程的其余内容,请升级到 CoddyKit PRO。 Kubernetes Basics 课程共包含 4 节课。
「基于角色的访问控制(RBAC)」这节课中我会学到什么?
使用 RBAC 角色和角色绑定,管理 Cluster 中用户和服务账户的权限。 你通过在浏览器中直接运行的动手代码来练习 Kubernetes Basics,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Kubernetes Basics 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Kubernetes Basics 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「基于角色的访问控制(RBAC)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Kubernetes Basics 课中编写并运行代码吗?
能。每节 Kubernetes Basics 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 基于角色的访问控制(RBAC)
- 用于隔离的网络策略
- Pod 安全标准
- 服务账户与工作负载身份