kubernetes rbac 权限管理

article/2025/9/16 7:31:14

文章目录

    • 访问控制概述
    • kubernetes 下的 rbac
    • ServiceAccount
    • K8s角色&角色绑定
      • 角色(Role和ClusterRole)
      • 角色绑定(RoleBinding和ClusterRoleBinding)

访问控制概述

访问控制是云原生中的一个重要组成部分,也是一个 Kubernetes 集群在多租户环境下必须要采取的一个基本的安全架构手段。

在这里插入图片描述

那么在概念上可以抽象的定义为谁在何种条件下可以对什么资源做什么操作。这里的资源就是在 Kubernetes 中我们熟知的:Pod、ConfigMaps、Deployment、Secrets 等等这样的资源模型。

kubernetes 支持的认证鉴权方式有几个,这里只讲 RBAC。


kubernetes 下的 rbac

RBAC 鉴权机制使用 rbac.authorization.k8s.io API 组来驱动鉴权决定, 允许你通过 Kubernetes API 动态配置策略。

要启用 RBAC,在启动 API 服务器时将 --authorization-mode 参数设置为一个逗号分隔的列表并确保其中包含 RBAC。
在这里插入图片描述

第一要素是 Subjects,也就是主体。可以是开发人员、集群管理员这样的自然人,也可以是系统组件进程,或者是 Pod 中的逻辑进程;
第二个要素是 API Resource,也就是请求对应的访问目标。在 Kubernetes 集群中也就是各类资源;
第三要素是 Verbs,对应为请求对象资源可以进行哪些操作,包括增删改查、list、get、watch 等。
这里举个例子,假设有个通过合法认证的用户 Bob,他请求 list 某个 namespace下的 Pods,改请求的鉴权语义记为:Can Bob list pods?其中 Bob 即为请求中的 Subject,list 为对应的请求动作 Action,而 pods 为对应的请求资源 Resource。


ServiceAccount

K8s的用户分两种,一种是普通用户,一种是ServiceAccount(服务账户)。

普通用户是假定被外部或独立服务管理的。管理员分配私钥。平时常用的kubectl命令都是普通用户执行的。如果是用户需求权限,则将Role与User(或Group)绑定(这需要创建User/Group),是给用户使用的。这里不多讲。

ServiceAccount(服务帐户)是由Kubernetes API管理的用户。它们绑定到特定的命名空间,并由API服务器自动创建或通过API调用手动创建。服务帐户与存储为Secrets的一组证书相关联,这些凭据被挂载到pod中,以便集群进程与Kubernetes API通信。
如果是程序需求权限,将Role与ServiceAccount指定(这需要创建ServiceAccount并且在deployment中指定ServiceAccount),是给程序使用的。

相当于Role是一个类,用作权限申明,User/Group/ServiceAccount将成为类的实例。


K8s角色&角色绑定

在RABC API中,通过如下的步骤进行授权:

定义角色:在定义角色时会指定此角色对于资源的访问控制的规则。
绑定角色:将主体与角色进行绑定,对用户进行访问授权。

  • 角色
    Role:授权特定命名空间的访问权限
    ClusterRole:授权所有命名空间的访问权限

  • 角色绑定
    RoleBinding:将角色绑定到主体(即subject)
    ClusterRoleBinding:将集群角色绑定到主体

  • 主体(subject)
    User:用户
    Group:用户组
    ServiceAccount:服务账号

在这里插入图片描述

角色(Role和ClusterRole)

Role针对特定的命名空间,ClusterRole在整个集群范围内都生效。

Role示例如下:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: defaultname: pod-role
rules:
- apiGroups: [""] # "" indicates the core API groupresources: ["pods"]verbs: ["get", "watch", "list"]

ClusterRole示例如下:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-clusterrole
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list"]

相关参数
1、Role、ClsuterRole Verbs可配置参数

“get”, “list”, “watch”, “create”, “update”, “patch”, “delete”, “exec”

2、Role、ClsuterRole Resource可配置参数

“services”, “endpoints”, “pods”,“secrets”,“configmaps”,“crontabs”,“deployments”,“jobs”,“nodes”,“rolebindings”,“clusterroles”,“daemonsets”,“replicasets”,“statefulsets”,“horizontalpodautoscalers”,“replicationcontrollers”,“cronjobs”

3、Role、ClsuterRole APIGroup可配置参数

“”,“apps”, “autoscaling”, “batch”

要确定资源对象API端点请求的动词,请查看HTTP动词以及请求是否对单个资源或资源集合进行操作,参考下表:

HTTP VerbRequest Verb
POSTcreate
GET,HEADget (for individual resources), list (for collections)
PUTupdate
PATCHpatch
DELETEdelete (for individual resources), deletecollection (for collections)

角色绑定(RoleBinding和ClusterRoleBinding)

定义好了角色也就是一个权限的集合,然后创建了一个ServiceAccount也就是一个服务账号,然后将这两个东西绑定起来,就是授权的过程了。

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: rbnamespace: default
subjects:
- kind: ServiceAccountname: zhangsannamespace: default
roleRef:kind: Rolename: pod-roleapiGroup: rbac.authorization.k8s.io
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: crb
subjects:
- kind: ServiceAccountname: marknamespace: default
roleRef:kind: ClusterRolename: pod-clusterroleapiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:name: marknamespace: default


http://chatgpt.dhexx.cn/article/s5TEFHl3.shtml

相关文章

Kubernetes(k8s)权限管理RBAC详解

文章目录 一、简介二、用户分类三、K8s角色&角色绑定(以ServiceAccount展开讲解)1)授权介绍2)角色(Role和ClusterRole)3)角色绑定(RoleBinding和ClusterRoleBinding)…

RBAC权限管理设计

RBAC权限管理设计 一、RBAC组成1. RBAC2. RBAC组成3. RBAC支持的安全原则4. RBAC的优缺点 二、RBAC权限分配1. RBAC的功能模块2. RBAC权限分配操作过程:3. 后端如何判断用户权限 一、RBAC组成 1. RBAC RBAC:基于角色的权限访问控制(Role-Ba…

RBAC基本流程实现

RBAC中最重要的一个名词是role角色,项目中每个账号的权限不同,所以看到的东西,可以做的操作是不一样的,所以引入这个是非常有必要的,下面图中是5个表的实现,但是为了方便理解,用户表——角色表省…

RBAC用户权限管理数据库设计

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。…

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

一、RBAC基础知识 1、RBAC的组成: 1:由3个基础的部分组成:用户、角色和权限; 2:RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离,极大…

RBAC权限设计详解

权限设置 1.权限点 权限:在一个系统内是否具有做某个操作的权利权限分为两个级别 1. 菜单权限:是否有权限访问某个菜单 2.按钮权限:是否有权限操作 页面上的某个按钮功能 2.业务逻辑 对于权限数据来说,有两个级别的设置 1.能不能访问谋个页面 2.在页面上,能不能操作某个按…

RBAC 模型是什么?

RBAC 模型是什么? 美国国家标准与技术研究院(The National Institute of Standards and Technology)认为 RBAC 模型由 4 个基础模型组成: 1. 基本模型 RBAC0(Core RBAC)2. 角色分层模型 RBAC1(Hierarcha…

什么是RBAC?

什么是RBAC? 全称:role-based access control 基于角色的权限访问控制 作用:实现访问控制 RBAC模型概括 RBAC权限授权的过程可以概括为:W是否可以对Z进行H的访问操作,并对这个逻辑表达式进行判断是否为true的过程&…

RBAC(一)

介绍 RBAC(基于角色的权限控制,role base access control)是一种设计模式,用于设计和管理权限相关数据的一种模型。 RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否…

RBAC浅谈(一)RBAC的基本概念

1.概念 RBAC即Role Based Access Control,意为基于角色的访问控制。用户与角色相关联,当用户在系统进行注册时可以选择成为某一角色从而拥有这个角色的权限,当然新注册的用户的权限也可以由上一级用户授予如管理员认定某个用户为某个角色就授…

RBAC权限详解

RBAC权限详解 权限设置 1.权限点 权限:在一个系统内是否具有做某个操作的权利 权限分为两个级别 1. 菜单权限:是否有权限访问某个菜单2. 按钮权限:是否有权限操作 页面上的某个按钮功能2.业务逻辑 对于权限数据来说,有两个级别的设置 1.能不能访问谋个页面 2.在页面上,能…

Rbac权限管理--如何设计

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限-资源”的授权…

六,RBAC简介

六,RBAC RBAC(基于角色的权限控制 role base access control)是一种设计模式,是用来设计和管理权限相关数据的一种模型 RBAC权限数据的管理,都是重复的CRUD的操作,这里我们就不再重复的从0到1开发&#xf…

RBAC简介

目录 RBAC简介RBAC0RBAC1RBAC2RBAC3 RBAC简介 RBAC是Role Based Access Control的英文缩写,意思是基于角色访问控制。 RBAC实际上就是针对产品去发掘需求时所用到的Who(角色)、What(拥有什么资源)、How(有…

RBAC 权限

RBAC权限分析 RBAC 全称为基于角色的权限控制,本段将会从什么是RBAC,模型分类,什么是权限,用户组的使用,实例分析等几个方面阐述RBAC 什么是RBAC RBAC 全称为用户角色权限控制,通过角色关联用户&#xff…

RBAC模型

最近开始在找java项目,大部分时间都是跟着视频或者代码一步一步敲过来,但是对代码的理论层面还是有所欠缺,今天就来分享一个系统设计中的一个模型。不管是哪一个系统,都绕不开权限控制,因为现在的角色太多了&#xff0…

RBAC入门教程及实例演示

RBAC 一、RBAC的作用 在很多系统中,会要求不同的账户对应着不同的角色和权限。如教务管理系统,分为以下几种功能,不同的功能对应着不同的角色 如果要做到登录后根据账户的角色,给出相应的菜单,及规定当前角色只能做出…

RBAC简介(*)

一.RBAC是什么 1.RBAC模型概述 RBAC是Role Based Access Control的英文缩写,意思是 基于角色的访问控制。 RBAC实际上就是针对产品去挖掘需求时所用到的Who(角色)、What(拥有什么资源)、How(有哪些操作&am…

什么是 RBAC 模型?

前言 RBAC(Role-Based Access Control),基于角色的访问控制,现在主流的权限管理系统的权限设计都是 RBAC 模型,或者是 RBAC 模型的变形。 我们需要思考一个问题:为什么要做权限的管理? 我的理…

RBAC权限管理(详细)

RBAC权限设计思想 为了达成不同账号(员工、总裁)登录系统后看到不同页面,执行不同功能,RBAC(Role-Based Access control)权限模型,就是根据角色的权限,分配可视页面。 三个关键点: 用户:使用系统的人 角色:使用系统…