SRBAC

基于服务和角色的访问控制
授权协议 GPL
开发语言 Google Go JavaScript HTML/CSS Lua
所属分类 程序开发、 安全相关框架
软件类型 开源软件
地区 国产
投 递 者 颜经艺
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

SRBAC 是一个基于服务和角色的访问控制,核心:网关服务用户角色权限访问控制

要解决什么问题?

  • 我们公司有多套系统,例如 OA 系统、商品管理、订单管理、财务系统、仓库物流系统等等,如何实现跨系统的角色权限分配呢?是否会导致角色权限管理混乱?权限规则设计不统一?
  • 多套系统需要各自实现角色权限的验证?同样的逻辑重复造轮子?多套系统如何共同维护用户登录状态?

对于这些问题,或与各个公司都有一套自己的解决方案,但是,你应该试试把这些问题都交给 SRBAC 和 APISIX(网关),SRBAC 实现集中的、跨系统的角色权限管理和分配,SRBAC 提供的 APISIX 插件实现高性能的网关鉴权。

SRBAC 可以让你从多个系统的角色权限管理和鉴权中解脱出来,完全解耦鉴权和业务逻辑,让开发者专注实现业务逻辑,而无需为权限问题分心,提高开发效率,并且给权限管理者提供集中的角色权限管理和分配功能。

SRBAC 亮点

  • 适用于多服务集群
  • 适用于微服务网关
  • 实现对于服务和接口的访问控制
  • 实现跨服务的角色权限控制
  • 实现访问控制和业务代码完全解耦,业务代码只需关注业务,无需为权限控制重复造轮子

SRBAC 权限节点类型

  • 接口权限节点:是否有权限请求某些接口
  • 数据权限节点:是否同一个接口不同角色权限的用户请求获取到不同的数据,或执行不同的逻辑
  • 菜单权限节点:是否有权限显示某些菜单或按钮

网关鉴权

  • 当网关判断到接口允许匿名访问时,直接将请求代理到该服务
  • 当网关判断到用户没有登录时,直接响应:401 未登录
  • 当网关判断到用户没有接口权限时,直接响应:403 没有权限
  • 当网关判断到用户有接口权限时,在请求头中携带该用户拥有的该服务的数据权限,再将请求代理到该服务

内容管理

  • 服务管理
    • 每个服务必须有一个唯一标识
    • 服务的增删改查
  • 用户管理
    • 每个用户必须有一个唯一 id
    • 用户的增删改查
  • 角色管理
    • 角色的增删改查
    • 配置一个角色拥有哪些服务的权限
  • 权限节点管理
    • 基于服务管理权限节点,即所有权限节点是挂在具体的服务下面的
    • 菜单权限节点的增删改查
    • 接口权限节点的增删改查
    • 数据权限节点的增删改查
  • 角色权限分配
    • 给角色分配具体服务下面的菜单权限节点
    • 给角色分配具体服务下面的接口权限节点
    • 给角色分配具体服务下面的数据权限节点
  • 用户角色权限分配
    • 给用户分配角色
    • 给用户分配菜单权限节点
    • 给用户分配接口权限节点
    • 给用户分配数据权限节点
    • 用户的最终权限是所分配的角色和直接分配的权限节点的并集

APISIX 插件

  • rbac-access
    • 动态鉴权的核心插件,实现基于 SRBAC 模型的动态鉴权
  • static-jwt-auth
    • 相对于 APISIX 官方插件 jwt-auth 而言更轻量级的插件,它无需添加 consumer 既可以实现 auth 相关功能
  • token-auth
    • 相对于 APISIX 官方插件 key-auth 而言更轻量级、扩展性更强的插件,依托 Redis 可以完成用户相关的更多的操作:可以动态维护用户状态、用户状态自动过期、APISIX 多节点集群数据共享
  • business-upstream
    • 企业动态路由插件,适用于 SaaS 企业平台,根据企业的付费等级动态路由,达到不同企业等级之间物理隔离的目的

业务流程

界面截图

  • 开始准备 Yii提供了强大的配置机制和很多现成的类库。在Yii中使用RBAC是很简单的,完全不需要再写RBAC代码。所以准备工作就是,打开编辑器,跟我来。 设置参数、建立数据库 在配置数组中,增加以下内容: ‘components‘ => array(     //……    ‘authManager‘=>array(            ‘class‘=>‘CDbAuthManager‘,//

  • YII框架使用SRBAC实现RBAC权限访问控制 1. 下载 可访问以下网址下载: http://www.yiiframework.com/extension/srbac/ 或使用附件中的压缩包 2. 安装 首先安装YII. (具体步骤略) 在protected文件夹下创建文件夹modules 解压#1下载的压缩包, 并将srbac拷贝至modules文件夹下 配置main.php如下(红色部分)

  • 一、安装篇 1、下载http://www.yiiframework.com/extension/srbac/ 将解压得到的srbac文件夹放在moudles目录下。 2、在项目的主配置文件中mai.php:   'modules'=>array( // uncomment the following to enable the Gii tool 'gii'=>ar

  • 在开发一个有多种用户的网络应用时,对权限的判断总是一个很麻烦的事情。 Yii支持RBAC(Role-Based Access Control),结合filter,就给我们提供了非常简单方便的权限控制方法。 其实RBAC的原理很简单。 先梳理一下默认的Yii的授权filter:accessControl。它是根据accessRules按照用户的身份(users)来验证并授权的,默认的有*(任何用户)

  • 注意,除非你设置 srbac debug 属性为 false ,否则任何人均可以管理 srbac, 同时,除非你分配 Authorizer 角色到至少一个用户,否则任何人均可以管理srbac。 在分配 Authorizer 角色到一个用户后,设置 srbac debug 属性为false 是明智的。同时你也可以删除或重命名 srbac/views/authitem/install 目录。 srba

  • SBaseController.php protected function beforeAction($action) { $del = Helper::findModule('srbac')->delimeter; //srbac access $mod = $this->module !== null ? $this->module->id . $del : "";

  •   最近在研究 Yii 的权限控制功能,尽管Yii 自身提供了一个简单的权限管理,但是很多时候,我们还是需要对其做一点扩展。 在这里,我向大家推荐一个不错的扩展:SRBAC。 在Yii的官方网站的extension模块下,你可以发现SRBAC相对来说,下载量也算不少了 :) 这里,我就像大家简单介绍一下SRBAC里面一些需要注意的配置信息。 SRBAC主题环境的搭建,以及如何将其整合到我们具体的项

  • 参考这两个博客就可以了,挺简单的,等我有空再来修改一下细节。 a b

  • Yii调用SRBAC来进行权限设置. 但有的时候需要国际化, 由于整个网站的国际化是基于cookies来判断,即在protect/config/main里面设置语言, 然后让所有的controller来继承component/controller, controller是基于Ccontroller. 而SRBAC已经有中文语言包,在srbac/messages/zh 需要将这个文件夹命令为zh_c

 相关资料
  • 问题内容: 是否可以使用任何基于角色的开源访问控制系统? 问题答案: 布兰登·萨维奇(Brandon Savage)在他的PHP软件包“ ApplicationACL ” 上做了一个演示,该演示可能会或可能不会完成基于角色的访问。PHPGACL可能也能正常工作,但是我不能肯定地告诉您。 但是,我可以告诉您的是Zend Framework 的Zend_ACL组件将执行基于角色的设置(但是您必须子类化

  • 角色定义 [role_definition] 是RBAC角色继承关系的定义。 Casbin 支持 RBAC 系统的多个实例, 例如, 用户可以具有角色及其继承关系, 资源也可以具有角色及其继承关系。 这两个 RBAC 系统不会互相干扰。 此部分是可选的。 如果在模型中不使用 RBAC 角色, 则省略此部分。 [role_definition] g = _, _ g2 = _, _ 上述角色定义表

  • 以下内容是 xingzhou 对 kubernetes 官方文档的翻译,原文地址 https://k8smeetup.github.io/docs/admin/authorization/rbac/ 基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Ku

  • 一个更友好的域内基于角色的访问控制的API。 这个API是Management API的子集。 RBAC用户可以使用这个API来简化代码。 参考 全局变量 e 是 Enforcer 实例。GoNode.jsPHP.NETRust e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") const

  • 我正在开发一个mean stack web应用程序,它包含基于登录用户角色的差异访问。有几个不同的角色,如管理员,政府,志愿者等。 1.如何基于角色管理前端? 目前,我正在为每个角色设置全局标志,如isAdmin、is志愿者、isGovt等,并根据其值,使用 这是正确的说法吗。如果不是,请建议处理UI的正确方法。 2.如果用户没有授权,如何管理后端和重定向路由? 目前我正在尝试使用angular权

  • 读后http://en.wikipedia.org/wiki/Role-based_access_control看到人们建立授权/访问控制的方式,我想到了这个问题:“为什么我们在检查用户是否被允许执行X操作时检查用户的角色,而不是检查他们的权限?” 这就是我所理解的,用户有角色,角色有权限,这就是用户可以拥有权限的方式(用户不能明确地拥有分配给它的权限,它通过拥有角色获得权限) 我认为,在处理添加

  • 我目前正在学习MEAN堆栈,开发一个简单的TODO应用程序,并希望为此实现基于角色的访问控制(RBAC)。我怎么设置角色 我想要3个角色(角色可能看起来很有趣,但这纯粹是为了学习): 上帝 超级英雄 人 GOD-类似于超级管理员,可以在应用程序中做任何事情。C, R, U, D权限适用于TODO和其他用户。可以创建一个TODO 超级英雄——类似于管理员,有超能力在他的个人数据上做任何事情——对于T

  • 使用CBAC和RBAC的主要好处是什么?什么时候使用CBAC更好,什么时候使用RBAC更好? 我试图理解CBAC模型的一般概念,但总体思路对我来说仍然不清楚。