作者:周文浩,青云科技研发工程师,KubeSphere Maintainer。热爱云原生,热爱开源,目前负责 KubeSphere 权限控制的开发与维护。

KubeSphere 3.3.1 已经发布一个多月了。 3.3.1 版本对于 KubeSphere 来说只是一个小的 Patch 版本,但是权限控制模块改动较大。这篇文章将从开发者的视角为你分享权限控制模块的改动内容。

这次的改动的主要目的是提升 KubeSphere 权限控制的安全性和易用性。使用过 KubeSphere 的小伙伴应该对 KubeSphere 的租户体系有一些印象,这对于用户来说是非常重要的一部分。

权限控制及租户解析

在介绍这次的改动前,我将先简单为你介绍 KubeSphere 的权限控制和租户体系,这 对于理解本次 3.3.1 版本对于权限控制的改动有非常大的帮助。或者你可以参考创建企业空间、项目、用户和平台角色自己动手实验一下。

我们借鉴了 Kubernetes 的 RBAC 权限控制机制,使用角色给租户授予对 KubeSphere 的操作权限,而角色是由授权项组成的一个权限实体。角色分为内置角色和自定义角色,在通常的使用场景下,我们希望内置角色就能够覆盖用户的使用需求。如果你有特殊的权限要求则可以自定义一个角色。自定义角色使得你可以用 KubeSphere 提供的授权项随意组合,创建一个特定的角色。

角色由分为不同的层级,从租户体系来看,我们将整个 KubeSphere 分为四个层级,即:

  • 平台 (Platform)
  • 企业空间(Workspace)
  • 命名空间 (Namespace) - 集群 (Cluster)

与之对应的角色则是:

  • 平台角色 (Platform Role)
  • 企业空间角色 (Workspace Role)
  • 命名空间角色 (Namespace Role)
  • 集群角色 (Cluster Role)。

下面这张图可以帮助你理解不同层级和角色之间的关系。

从资源层级来看,命名空间属于企业空间,企业空间属于平台。在这里我们只将集群作为一个部署命名空间的资源池。

租户可以被邀请进多个企业空间,并授予企业空间角色。在企业空间中,又可以被邀请到多个命名空间,并授权命名空间角色。

角色

删除角色

  • 平台级: Users Manager (用户管理员),Workspaces Manager (企业空间管理 员)

基于安全性考虑,我们删除了两个内置平台角色:Users Manager (用户管理员) 和 Workspaces Manager (企业空间管理员)。

用户管理员可以创建任意层级、任意权限的自定义用户,如果你需要,甚至可以使用用户管理员来创建一个平台管理员 (Platform Administrator) 。对于一个安全的权限控制体系来说应是不被允许的,这会带来极强的越权风险,所以我们删除了这个角色。删除这个角色之后,我们只能使用平台管理员来创建角色。

企业空间管理员可以用来管理平台中所有的企业空间及企业空间中资源。企业空间对于 KubeSphere 来说是一个及其重要的资源,在平台中企业空间是集群中所有资源的载体。所以我们删除了这个角色,以保证除平台管理员之外的角色的权利过于集中。

新增角色

  • 平台级:platform-self-provisioner 为了使得企业空间的管理更加方便易用,我们又新增平台角色 Platform Self Provisioner

Platform Self Provisioner 设计

基本原型

可以创建企业空间(无法修改和删除),管理自己创建的企业空间内的所有资源。

同时由于企业空间属于平台层级,企业空间内的所有资源在多集群环境下应该可以部 署在多个集群中。所以对于多集群环境,Platform Self Provisioner 在以下情况下可以 在集群中部署企业空间内的资源。

多集群环境下企业空间部署

  • 开启了集群可见性的集群,self-provisioner 创建的企业空间,可以使用这个集 群部署项目
  • 末开启集群可见性的集群,self-provisioner 创建的企业空间,需要向(platform-admin)平台管理员,集群管理员(cluster-admin)申请这个集群 的部署授权

单集群环境下企业空间部署

self-provisioner 创建的企业空间,可以在当前集群下部署项目。

对自定义角色的限制

对于自定义角色来说,我们则是屏蔽了某些授权项,以限制自定义角色的权限。内置角色的对应权限任然可用,我们从三个层级对自定义角色屏蔽了相关授权项。自定义角色也是基于同样的考虑,屏蔽的都是与角色、成员、企业空间相关的权限。

  • 平台级:用户管理,角色管理,企业空间管理;
  • 企业空间级:成员管理,角色管理,组管理;
  • 命名空间级:成员管理,角色管理。

升级策略

如果已有旧版本的 KubeSphere 集群,在升级到 KubeSphere 3.3.1 版本时,我们也有自动的升级 Job,对已有的角色进行迁移。具体的升级方式可见使用 KubeKey 升级。

自定义角色的升级

对于已有上述已禁用权限的自定义角色,仍然保留其角色,但是删除其包含的已禁用的权限。

具体策略:

  • 重新创建一个同名的角色,但是不包含旧的权限项。

内置角色升级

对于已绑定上述废弃的内置角色的租户,将之前的租户的角色降级为 platform-regular。

本文由博客一文多发平台 OpenWrite 发布!

KubeSphere v3.3.1 权限控制详解的更多相关文章

  1. Odoo权限控制详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826105.html 一:Odoo中的权限设置主要有以下5种 1)菜单.报表的访问权限 Odoo可以设置菜 ...

  2. spring-security权限控制详解

    在本例中,主要讲解spring-boot与spring-security的集成,实现方式为: 将用户.权限.资源(url)采用数据库存储 自定义过滤器,代替原有的 FilterSecurityInte ...

  3. thinkphp基于角色的权限控制详解

    一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...

  4. SVN 权限配置详解

    SVN权限详细配置 本章将详细介绍SVN权限配置涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内 ...

  5. (转) shiro权限框架详解06-shiro与web项目整合(上)

    http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...

  6. 若依管理系统RuoYi-Vue(二):权限系统设计详解

    若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...

  7. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  8. Elasticsearch shield权限管理详解

    Elasticsearch shield权限管理详解 学习了:https://blog.csdn.net/napoay/article/details/52201558 现在(20180424)改名为 ...

  9. 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解

    本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...

  10. 【转载整理】mysql权限分配详解

    原文:https://www.cnblogs.com/Csir/p/7889953.html MySQL权限级别 1)全局性的管理权限,作用于整个MySQL实例级别 2)数据库级别的权限,作用于某个指 ...

随机推荐

  1. (持续更新)国内计算机领域相关的SCI和EI期刊,以及好中的SCI和EI期刊(不限国内外)

    好中的: SCI刊: EI刊: EI会议: 参考: CCF发布计算领域高质量科技期刊分级目录   国内的: SCI-Expanded   1. <Journal of Computer Scie ...

  2. nvidia显卡的售后真的是不敢要人恭维——拆机箱时误拧显卡自身挡板螺丝被拒保

    事情比较简单,单位在nvidia的经销商那里购买的nvidia titan rtx显卡,保修期内坏掉,拆下来的过程中误拧了挡板的螺丝,结果被拒保,这里就是单纯的记录这件事情. 这件事确实我这方面有不对 ...

  3. 内存交换空间--Swap Space

    转载请注明出处: 一.概述 内存交换空间(Swap Space)是计算机内存的一种补充,位于硬盘驱动器上.当物理内存(RAM)不足时,系统会将不活跃的页面(或称为内存页)移到交换空间中,以释放物理内存 ...

  4. 【CDQ分治】[P5094 [USACO04OPEN] MooFest G 加强版

    P5094 [USACO04OPEN] MooFest G 加强版 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc++.h> us ...

  5. JavaScript设计模式样例十八 —— 命令模式

    命令模式(Command Pattern) 定义:请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令.目的:将一个请求封装成 ...

  6. centos7.3离线安装和配置NFS

    概述 # NFS为 Network FileSystem 的简称,它的目的就是想让不同的机器.不同的操作系统可以彼此分享个别的档案啦! 目前在 Unix Like 当中用来做为文件服务器是相当不错的一 ...

  7. Vue状态管理库Pinia详解

    Pinia 是 Vue 的状态管理库,它提供了一种更简单.更不规范的 API 来管理应用的状态.Pinia 的设计哲学是简单性和易用性,它避免了 Vuex 中的许多复杂概念,如 mutations 和 ...

  8. esphome-esp8266

    esp8266使用esphome接入hass 对于生成配置文件的更改 此处nodemcu泛指集成的开发板,一般十几块钱一块 下方使用的是D1,对应的针脚是GPIO5 esp8266: board: n ...

  9. python配置pip镜像

    Python配置pip的镜像 国内的网络通过pip下载软件包只有不到10k的下载速度.不仅下载的慢,还容易引发超时错误,导致下载失败.而将给pip配置国内的镜像源可以完美的解决这个问题.本文讲解了pi ...

  10. Linux 磁盘分区和格式化

    分区 常用命令行工具: fdisk:适用于 MBR 分区表 gdisk:适用于 GPT 分区表 parted:适用于 MBR 和 GPT 分区表,功能更强大.它还有一个 GUI 版本,名为 gpart ...