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

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

Kubernetes(k8s)权限管理主要是基于角色的访问控制(RBAC),以下是其核心内容:
核心概念
Role 和 ClusterRole

Role :定义特定命名空间内的权限规则,用于在某个命名空间内设置访问权限。
ClusterRole :定义集群范围内的权限规则,适用于集群级别的资源或跨命名空间的访问权限。
RoleBinding 和 ClusterRoleBinding
RoleBinding :将 Role 或 ClusterRole 与特定用户或服务账户绑定,使其在指定命名空间中拥有对应的权限。
ClusterRoleBinding :将 ClusterRole 与用户、服务账户或用户组绑定,使其在整个集群范围内拥有对应的权限。

权限管理操作
定义 Role 和 ClusterRole
创建 Role 时,需指定所属命名空间,定义在该命名空间内的资源访问权限。
创建 ClusterRole 时,定义的权限适用于集群范围内的资源。
绑定 Role 和 ClusterRole
通过 RoleBinding 或 ClusterRoleBinding,将定义好的角色绑定到特定的用户或服务账户,实现权限分配。

默认角色和角色绑定
默认 ClusterRole

cluster-admin :允许超级用户在平台上的任何资源上执行所有操作,可授权对集群中以及所有命名空间中的全部资源进行完全控制。
admin :允许管理员在名字空间内执行授权,可授予对名字空间中的大多数资源的读 / 写权限,但不允许对资源配额或者名字空间本身进行写操作。
edit :允许对名字空间的大多数对象进行读 / 写操作,但不允许查看或者修改角色或者角色绑定等。
view :允许查看名字空间中的大多数对象,但不允许查看 Secret 等敏感信息。

默认 RoleBinding 和 ClusterRoleBinding
system:masters 组与 cluster-admin ClusterRole 绑定,通常用于集群管理员账号。

权限管理工具
kubectl auth can-i:用于查看某个用户、服务账户或角色是否有某项操作权限。
kubectl get:查看所有 Role 和 RoleBinding。

1.创建Role或ClusterRole
定义一个Role,用于指定在某个命名空间内的权限规则:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]

metadata.namespace:指定命名空间。
rules:定义允许的操作,apiGroups指资源所属的API组,resources指资源类型,verbs指允许的操作。
定义一个ClusterRole,用于指定集群范围内的权限规则:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: cluster-admin
rules:
- apiGroups: [""]resources: ["pods", "services", "secrets"]verbs: ["*"]

rules:定义允许的操作,verbs: [“*”]表示允许所有操作。

2.创建RoleBinding或ClusterRoleBinding
将Role或ClusterRole绑定到特定的用户或服务账户:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: read-podsnamespace: default
subjects:
- kind: Username: aliceapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io

metadata.namespace:指定绑定的命名空间。
subjects:定义授权的对象,可以是User、Group或ServiceAccount。
roleRef:引用要绑定的Role或ClusterRole。

将ClusterRole绑定到用户:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-binding
subjects:
- kind: Username: aliceapiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io

subjects:定义授权的对象。
roleRef:引用要绑定的ClusterRole。

3.应用配置
使用kubectl apply -f .yaml命令应用上述配置文件。
4.验证权限
使用kubectl auth can-i命令验证用户权限:

kubectl auth can-i get pods --as=alice

get pods:要验证的操作。
–as=alice:指定用户。

http://www.xdnf.cn/news/1660.html

相关文章:

  • GPT-4o最新图像生成完全指南:10大应用场景与提示词模板
  • opencv--图像变换
  • 悟空统计:小而美的网站流量统计工具,免费好用
  • 【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路
  • ThreadLocal
  • 医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
  • centos离线安装ssh
  • C语言中封装JSON数组对象
  • 深度解析@SneakyThrows注解:原理、应用与最佳实践
  • 23种设计模式-行为型模式之策略模式(Java版本)
  • 基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
  • DPIN在AI+DePIN孟买峰会阐述全球GPU生态系统的战略愿景
  • MySQL:数据库设计
  • 【C++入门:类和对象】[3]
  • LJF-Framework 第15章 想想搞点啥-若依管理系统兼容一下
  • 在Windows11上用wsl配置docker register 镜像地址
  • django admin 添加自定义页面
  • 从码云上拉取项目并在idea配置npm时完整步骤
  • netty中的Channel与Java NIO中的Channel核心对比
  • docker 配置代理
  • 3、ArkTS语言介绍
  • 数据完整性的守护者:哈希算法原理与实现探析
  • Redis的过期删除策略和内存淘汰策略
  • Django创建的应用目录详细解释以及如何操作数据库自动创建表
  • R/G-B/G色温坐标系下对横纵坐标取对数的优势
  • Java中的阻塞队列有界和无界区别
  • Langchain检索YouTube字幕
  • Axure复选框组件的深度定制:实现自定义大小、颜色与全选功能
  • react-09React生命周期
  • 解析塔能科技:绿色低碳智慧节能一站式破局之匙