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

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.xdnf.cn/news/12527.html

相关文章:

  • EPPLUS——CAD c#读写EXCEL的第三方库
  • 怎么让自己ip显示外省?一文说清操作
  • moon游戏服务器-demo运行
  • Lodash原型污染漏洞原理详解
  • [HCTF 2018]admin 1
  • N元语言模型 —— 一文讲懂!!!
  • 设计模式-观察着模式
  • 关于脏读,幻读,可重复读的学习
  • C++中的排列组合算法详解
  • SUSE Linux 发行版全面解析:从开源先驱到企业级支柱
  • element树结构el-tree,默认选中当前setCurrentKey无效
  • golang项目中如何使用私密仓库的扩展包
  • 1.4 Node.js 的 TCP 和 UDP
  • 基于 STM32 的四路 PWM 控制智能小车运动的模块化控制程序
  • PDF图片和表格等信息提取开源项目
  • FastAPI安全机制:从OAuth2到JWT的魔法通关秘籍
  • Web前端基础:JavaScript
  • C++字符串解析2
  • yolov11与双目测距结合,实现目标的识别和定位测距(onnx版本)
  • Docker、Wsl 打包迁移环境
  • |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面
  • pycharm 中文字体报错
  • 从零开始搭建 Pytest 测试框架(Python 3.8 + PyCharm 版)
  • Android Studio 解决首次安装时下载 Gradle 慢问题
  • spring中的@RabbitListener注解详解
  • C++设计模式 - 单例模式
  • Python Copilot【代码辅助工具】 简介
  • AI数据分析在体育中的应用:技术与实践
  • 初识结构体,整型提升及操作符的属性
  • 12.6Swing控件4 JSplitPane JTabbedPane