作者:周文浩,青云科技研发工程师,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. 【转载】 Tensorboard:PermissionError: [Errno 13] Permission denied: ‘/tmp/.tensorboard-info/pid-46614.info‘

    版权声明:本文为CSDN博主「时光碎了天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/u013289254/ ...

  2. programmers model

    Handler模式一直使用MSP,所以在handler模式下处理器会忽略SPSEL位:异常进入及返回机制会更新CONTROL寄存器. 在操作系统的环境中,推荐线程在Thread模式下运行使用PSP,内 ...

  3. .NET中各种线程同步锁

    编程编的久了,总会遇到多线程的情况,有些时候我们要几个线程合作完成某些功能,这时候可以定义一个全局对象,各个线程根据这个对象的状态来协同工作,这就是基本的线程同步. ​支持多线程编程的语言一般都内置了 ...

  4. RISC-V全志D1多媒体套件文章汇总

    提示 此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/aw/d1/57 文章目录汇总 教程共计14章,下面是章节汇总: 第0章_RISC-V全志D ...

  5. zabbix 自定义用户key与参数userparameters监控监本输出

    zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求.幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据. 定义key有两种修改方式: vi ...

  6. JuiceFS 在多云架构中加速大模型推理

    在大模型的开发与应用中,数据预处理.模型开发.训练和推理构成四个关键环节.本文将重点探讨推理环节.在之前的博客中,社区用户 BentoML 和贝壳的案例提到了使用 JuiceFS 社区版来提高模型加载 ...

  7. 网络问题mark

    复杂且混乱的网络环境, 主内网是192.168.0.254(网关), 中间混杂无数网段 , 无数dhcp, 同时还有0段的外网(跟254没关系) 现在是有一台服务器 , 192.168.0.47 , ...

  8. 关于腾讯会议pc端的使用教程

    一.首先先在官网下载pc端 下面是连接:腾讯会议_腾讯会议下载- 腾讯云 (tencent.com) 点击免费下载即可. 二.登录并创建会议 选择一种登录方式. 创建会议有快速会议和预定会议两种方式 ...

  9. 为 OpenWrt 路由器编译 minieap-sysu 项目

    学校的校园网要使用锐捷认证,于是想把认证客户端装到刷了 OpenWrt 的路由器上面.然而认证客户端 Linux 版只支持 x86 架构,我的路由器处理器却是 AArch64 架构,装不了,所以只能想 ...

  10. 【测试平台开发】——05Flask后端api开发实战(二)—— SqlAlchemy

    SqlAlchemy SQLAlchemy是Python编程语言下的一款开源软件.提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行. SQLAlchemy"采用简单的Py ...