当前位置: 首页 > news >正文

ClusterRole 和 ClusterRoleBinding 的关系及使用

ClusterRole 和 ClusterRoleBinding 是 Kubernetes 中用于控制集群范围权限的两个重要资源,它们共同构成了 Kubernetes RBAC (基于角色的访问控制) 系统的核心部分。

两者的关系

  1. ClusterRole 定义了一组权限规则,指定了可以对哪些资源执行哪些操作

  2. ClusterRoleBinding 将这些权限授予特定的用户、组或服务账户

简单来说:ClusterRole 是"什么能做",ClusterRoleBinding 是"谁可以做"。

ClusterRole 详解

ClusterRole 是集群级别的角色,定义了一组权限规则:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-reader
rules:
- apiGroups: [""] # 空字符串表示核心 API 组resources: ["pods"]verbs: ["get", "watch", "list"]

特点:

  • 适用于整个集群,而不仅限于特定命名空间

  • 可以授权访问:

    • 集群范围的资源(如节点)

    • 非资源端点(如 /healthz)

    • 跨所有命名空间的命名空间资源(如 pods)

ClusterRoleBinding 详解

ClusterRoleBinding 将 ClusterRole 绑定到主体(用户、组或服务账户):

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: read-pods-global
subjects:
- kind: Username: aliceapiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: pod-readerapiGroup: rbac.authorization.k8s.io

特点:

  • 将集群范围的权限授予主体

  • 绑定的主体可以在所有命名空间中行使权限

使用场景

  1. 集群管理员权限

    # 创建集群管理员 ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:name: cluster-admin
    rules:
    - apiGroups: ["*"]resources: ["*"]verbs: ["*"]
    - nonResourceURLs: ["*"]verbs: ["*"]# 绑定到用户
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:name: cluster-admin-binding
    subjects:
    - kind: Username: admin-userapiGroup: rbac.authorization.k8s.io
    roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
  2. 跨命名空间只读权限

    # 创建只读 ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:name: global-reader
    rules:
    - apiGroups: [""]resources: ["pods", "services", "nodes"]verbs: ["get", "list", "watch"]# 绑定到服务账户
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:name: monitoring-reader
    subjects:
    - kind: ServiceAccountname: monitoring-servicenamespace: monitoring
    roleRef:kind: ClusterRolename: global-readerapiGroup: rbac.authorization.k8s.io

与 Role/RoleBinding 的区别

特性ClusterRole/ClusterRoleBindingRole/RoleBinding
作用范围集群级别命名空间级别
资源类型集群资源和所有命名空间资源仅限命名空间内资源
绑定目标用户、组或任何命名空间的服务账户仅限同一命名空间的用户、组和服务账户
典型用途集群管理员、跨命名空间访问权限命名空间内特定应用的权限

最佳实践

  1. 遵循最小权限原则,只授予必要的权限

  2. 为不同的职责创建专门的 ClusterRole

  3. 使用有意义的名称,如 cluster-adminnode-viewernamespace-creator 等

  4. 定期审计 ClusterRole 和 ClusterRoleBinding

  5. 对于命名空间特定的权限,优先使用 Role 和 RoleBinding

通过合理使用 ClusterRole 和 ClusterRoleBinding,可以实现精细化的集群权限管理。

http://www.lqws.cn/news/205975.html

相关文章:

  • python调用其它程序 os.system os.subprocess
  • SpringBoot-16-MyBatis动态SQL标签之if和where
  • 第1讲、包管理和环境管理工具Conda 全面介绍
  • 使用Python和Flask构建简单的机器学习API
  • 【Java学习笔记】StringBuilder类(重点)
  • C#使用MindFusion.Diagramming框架绘制流程图(2):流程图示例
  • 华为OD机试_2025 B卷_计算某个字符出现次数(Python,100分)(附详细解题思路)
  • 心理咨询技能竞赛流程方案
  • AOSP CachedAppOptimizer中的冻结和内存压缩功能
  • vector使用及模拟
  • nodejs中的I/O操作指的是什么?
  • 好未来0520上机考试题2:有效三角形的个数
  • 好未来0520上机考试题1:括号的最大嵌入深度
  • 微服务架构的性能优化:链路追踪与可观测性建设
  • # STM32F103 SD卡读写程序
  • [NOI2016] 网格
  • C++ 中的编译期计算(Compile-Time Computation)
  • 22、模板特例化
  • 双面沉金线路板制作流程解析:高可靠性PCB的核心工艺
  • bat批量去掉本文件夹中的文件扩展名
  • 数据类型 -- 字符
  • Python基于Django的文件销毁系统【附源码、文档说明】
  • 操作系统进程管理解析:从 fork 到 exec 的全流程实战与底层原理
  • Unity | AmplifyShaderEditor插件基础(第五集:简易膨胀shader)
  • ThingsCloud事物云平台搭建-微信小程序
  • 【基础算法】差分算法详解
  • 【Linux】SSH:免密登录
  • Design Theory and Method of Complex Products: A Review
  • 数据通信基础
  • 【51单片机】2. 进阶点灯大师