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

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.lryc.cn/news/2404056.html

相关文章:

  • C++ const 修饰符深入浅出详解
  • Python 数据类型转换、编码处理与文件操作实战指南
  • Readest(电子书阅读器) v0.9.53
  • USART 串口通信全解析:原理、结构与代码实战
  • Matlab | matlab中的图像处理详解
  • UOS无法安装deb软件包
  • VUE前端实现自动打包成压缩文件
  • 2025政务服务便民热线创新发展会议顺利召开,张晨博士受邀分享
  • 【PDF PicKiller】PDF批量删除固定位置图片工具,默认解密,可去一般图、背景图、水印图!
  • SpringAI Alibaba实战文生图
  • GIC700组件
  • 几种简单的排序算法(C语言)
  • RTOS学习之重难点
  • 有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
  • setting up Activiti BPMN Workflow Engine with Spring Boot
  • 使用 C/C++ 和 OpenCV 提取图像的感兴趣区域 (ROI)
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
  • 如何用AI高效运营1000+Tiktok矩阵账号
  • 杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动,用于空调风门电机驱动,香薰电机驱动
  • 【论文解读】Toolformer: 语言模型自学使用工具
  • 408第一季 - 数据结构 - 线性表II
  • 网络通讯知识——通讯分层介绍,gRPC,RabbitMQ分层
  • Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决
  • 基于VMD-LSTM融合方法的F10.7指数预报
  • 35 C 语言字符串转数值函数详解:strtof、strtod、strtold(含 errno 处理、ERANGE 错误)
  • 解决 idea提示`SQL dialect is not configured` 问题
  • springboot的test模块使用Autowired注入失败
  • 日志收集工具-Filebeat
  • 【PCIe总线】 -- PCI、PCIe相关实现
  • Vue3学习(4)- computed的使用