Kubernetes Basics · 课时

基于角色的访问控制(RBAC)

使用 RBAC 角色和角色绑定,管理 Cluster 中用户和服务账户的权限。

第 1 / 4 课11 个步骤

基于角色的访问控制(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.io

ClusterRoles 和 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 基于角色的访问控制(RBAC)
  2. 用于隔离的网络策略
  3. Pod 安全标准
  4. 服务账户与工作负载身份
← 返回 Kubernetes Basics