当前位置: 首页 > 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,可以实现精细化的集群权限管理。

相关文章:

  • 公路水运安全员B证的考试要点、速记口诀及备考指南
  • Shell 编程中的流程控制:从基础到实践
  • 阿里巴巴ROLL:大规模强化学习优化的高效易用解决方案
  • 当SAP系统内计划订单转换为生产订单时发生了什么?
  • Android启动时长优化(kernel部分)
  • 蓝牙音乐(A2DP)音频延迟的一些感想跟分析,让你对A2DP体验更佳深入
  • 什么是预训练?深入解读大模型AI的“高考集训”
  • 获取环境变量的两种方式:getenv()和environ
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • 打卡46天
  • 不要调用 TOARRAY() 从 LARAVEL COLLECTION 中获取所有项目
  • 【Linux】shell中的运行流程控制
  • 平面方程在不同坐标系下的变换与平移
  • Ubuntu 配置使用 zsh + 插件配置 + oh-my-zsh 美化过程
  • TongWeb7.0动态密钥说明
  • 设计一个算法:删除非空单链表L中结点值为x的第一个结点的前驱结点
  • 【LLM】fast-api 流式生成测试
  • 计算机是如何⼯作的
  • Day15
  • 长期施肥下红壤温湿度及电导率数据集
  • 自己做视频直播网站/企业网址怎么注册
  • 北京自助建站软件/建设网页
  • dw做网站怎么替换字体/电脑培训机构哪个好
  • 中小企业做网站贷款/网络营销的方式有哪些
  • 南丰网站建设/网页制作教程步骤
  • 做网站便宜/收录情况