RBAC介绍

一、前言

     Kubernetes 中的角色基于访问控制(Role-Based Access Control,RBAC)是一种权限管理机制,用于控制用户和应用程序对 Kubernetes 资源的访问。RBAC 通过定义一组角色(Roles)和角色绑定(RoleBindings)来实现对资源的精细访问控制

二、组件

角色(Role)和集群角色(ClusterRole)

Role:在命名空间范围内定义一组权限。每个 Role 包含可以对资源执行的操作列表

ClusterRole:在集群范围内定义一组权限,适用于所有命名空间或集群范围的资源

role示例

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default      #指定命名空间
  name: pod-reader
rules:
- apiGroups: [""] # 空字符串表示核心 API 组
  resources: ["pods"]      #限定资源,这里限定pod
  verbs: ["get", "list", "watch"]      #配置拥有的权限,这里只拥有只读权限

ClusterRole示例

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

角色绑定(RoleBinding)和集群角色绑定(ClusterRoleBinding)

RoleBinding:将 Role 绑定到用户或组,使其在特定命名空间内具有该 Role 定义的权限

ClusterRoleBinding:将 ClusterRole 绑定到用户或组,使其在整个集群范围内具有该 ClusterRole 定义的权限

RoleBinding示例

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:           #定义用户信息
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

ClusterRoleBinding示例

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-binding
subjects:
- kind: User
  name: admin
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

三·、RBAC 工作原理

RBAC 通过 RoleClusterRole 定义权限,通过 RoleBindingClusterRoleBinding 将这些权限分配给用户、组或服务账户

1.当用户或服务账户尝试执行某个操作时,Kubernetes API 服务器会检查与该用户相关的 RoleBindings 和 ClusterRoleBindings,以确定是否允许执行该操作

2.RoleBindings 和 ClusterRoleBindings 指定了 Role 或 ClusterRole,并将其与一个或多个主体(subjects)关联

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值