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

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:指定用户。

相关文章:

  • 使用ffmpeg 将图片合成为视频,填充模糊背景,并添加两段音乐
  • SiamFC算法深度解析
  • 解决微信开发者工具报错 “Component is not found in path wx://not-found“ 代码修改后热更新报错
  • 【无人机】无人机遥控器设置与校准,飞行模式的选择,无线电控制 (RC) 设置
  • 被封号如何申诉?Google Play开发者账号申诉模版分享
  • ERROR: x264 not found using pkg-config
  • CS144 Lab 6 实战记录:构建 IP 路由器
  • Android学习总结之扩展基础篇(一)
  • AI数字人多模态技术如何提升用户体验?
  • c++——内部类
  • 自由学习记录(57)
  • 2025.5.4机器学习笔记:PINN文献阅读
  • 第53讲 农学科研中的AI伦理与可解释性——探索SHAP值、LIME等可解释工具与科研可信性建设之道
  • 【棒球运动】户外运动安全技巧·棒球1号位
  • 【操作系统间文件共享_Samba】三、Samba 在实际场景中的应用案例与故障排除
  • Multi-granular Adversarial Attacksagainst Black-box Neural Ranking Models--阅读笔记
  • 制造工厂如何借助电子看板实现高效生产管控
  • 高可靠性厚铜板制造的关键设备与工艺投入
  • femap许可不足如何解决
  • [flutter]切换国内源(window)
  • 贵州赤水被指“整改复耕”存形式主义,当地部署耕地流出整改“回头看”
  • 贝壳:网传“深圳贝壳内部通知”不实
  • 中央空管办组织加强无人机“黑飞”“扰航”查处力度
  • 北大强基计划招生简章发布,笔试部分考试科目有变化
  • 灰鹦鹉爆粗口三年未改?云南野生动物园:在持续引导
  • 专访|前伊核谈判顾问:伊朗不信任美国,任何核协议都会有中俄参与