Ralasafe 快速入门(使用篇)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ralasafe Web 控制端入门
Web 控制端简介
进入 RalasafeWeb 控制端首页,地址:http://localhost:8080/demo/ralasafe/designer.rls。 为 了更好的理解 Ralasafe 控制端功能,将其归为四大模块: 用户管理、角色管理、权限管理 以及策略管理。
角色创建好之后,还需要给该角色指派权限。点击“上海合肥区域管理员”角色右侧的 分配权限按钮。在列出的权限树中勾选“查询上海合肥员工”权限,然后点击“OK”按 钮保存。这样,我们就完成了将该权限指派给“上海合肥区域管理员”角色,如下图所示。
这里需要特别说明的是,当创建角色之后,在“策略开发人员”一栏中的“用户分类” 的“角色”菜单项中会看到对应的角色。 不知道是 Ralasafe 的 BUG 还是有意设计,当我们在“角色”页面中删除创建的角色后, “用户分类”页面中仍然可以看到对应的角色,那么这有什么关系呢?我们可以做下尝试。 首先在“角色”页面中创建一个“测试人员”的角色,如下图所示:
2.创建权限控制
创建权限相对简单。点击控制台左下角的“权限”菜单项进入权限创建界面,点击菜单 树根节点,创建一个名称为“区域用户管理”的组,然后在组中创建一个名称为“查询上海 合肥员工”的权限,如下图所示。
创建权限时,必须给权限指定一个常量名称,该常量名称可以自由定义,最好能够直接 表现权限的含义,该常量将在以后的业务系统开发中用到。其他输入项保持默认即可。创建 好权限之后,在左侧菜单树中选中该菜单项,点击右侧的“编辑策略”链接,进入权限策略 创建界面。 权限策略的创建比较简单,只需点击表格头“操作”右侧的 添加按钮,选择相应的选 项即可,如下图所示。
而 判 断 用 户 是 否 为 总 部 用 户 , 可 以 通 过 用 户 的 companyLevel 字 段 来 判 断 , 仅 当 companyLevel 等于 1 时为总部用户。关于 companyLevel 值的定义请查看 company 表。 下面介绍用户分类的创建过程。 在控制台右下角中点击“用户分类”→“按组织机构分类” ,在该节点下创建一个“上 海合肥区域用户”分类,然后选中该用户分类,点击右侧的“编辑策略”链接,在策略界面 中,通过点击表格“操作”列右边的 添加按钮,添加 4 行变量。
—— 使用篇 Ralasafe 快速入门 快速入门—— ——使用篇
作者:大饼 Email:willofad@ 文档版本:1.0v
简介
Ralasafe 访问控制(数据级权限管理)中间件,是 MIT 协议开源免费软件产品。它使用 图形化方式处理各种数据级权限管理问题,包括数据库行列级、字段内容级权限问题;它还 能处理登录控制、功能级权限控制和 URL 示:
最后,别忘了点击界面上方的“保存”链接,然后点击“测试”链接看看效果吧。
至此,我们已经完成了整个查询的建立过程。
创建上海合肥区域用户
在需求中描述,区域管理员角色只能由总部的销售部人员担任,因此,用户分类中, 需 要建立一个策略,限制该分类用户必须是总部员工,并且隶属于销售部。 同样的,需要知道销售部的 ID 号,可以通过在 MySQL 中查询 department 表获得。
点击刚创建的查询项,接着点击右边的“编辑策略” ,进入策略制定界面。在映射类中 输入: org.ralasafe.demo.Employee, 然后分别双击左侧 “zh_mydemo” 下的 demouser、 company、 department,将其添加到界面右侧中。然后点击“映射类”右侧的“OK”按钮。请务必记得 点击“OK”按钮,否则在勾选表的时候,是不能建立类与字段的映射关系。 对于 demouser 表的字段,可以点击表头上方的“选择所有”选择全部字段。
参考资料:
学习 � Ralasafe 官方网站: � Ralasafe 官方论坛:/rs-forum/ � Ralasafe 官方 Wiki:/wiki/doku.php?id=ralasafe
在添加变量时,请按照上图添加对应的变量以及变量类型。然后接着点击“表达式” 页 面标签新增两个二元表达式。
细心的读者看到这里,应该明白之前定义变量的用途,其实就是为了通过表达式定义, 在变量和用户类字段中建立一种约束关系。 此处表达式的含义是, 用户必须是隶属于总部以 及总部的销售部门。 当查询和用户分类创建好之后, 实际上权限创建过程已经基本完成, 接下来就是要在查 询及用户分类中创建一种关联关系,只有完成这一步,才能实现真正意义上的权限控制。
策略开发人员 架构师 角色管理员 用户管理员
创建策略
创建权限
给角色授权
分配角色
上图中红色虚线框所包围的为核心功能模块, 策略开发人员负责的是整个权限制定的基 础工作,在规划好权限控制方案之后,就需要从此处开始整个权限控制的创建过程。
权限设计简介
Demo 部署成功后,可以在“策略开发人员”→“用户分类”中浏览默认的用户分类, 按组织机构分类为:分公司用户、总公司用户、营业部用户。 假设,随着公司业务的扩展,为了满足管理的需要,需建立一个“区域用户” ,用于对 某个区域分公司员工进行管理,下面以实现一个区域用户具备查询区域内分公司员工为例, 实现一个权限控制过程。 详细的需求说明:
前言
Ralasafe 与其他开源的安全框架,比如 Spring Security、Shiro 等最大的不同在于提供一 套完整的 Web 操作界面进行用户的功能以及数据权限的设置。本文主要介绍如何通 过 Ralasafe 的 Web 控制端设置用户的功能权限以及数据权限。
准备工作
本文所使用的开发环境为 JDK1.6、 Tomcat6.0,、 MySQL Server 5.5、 MySQL Tools for 5.0 、 Eclipse 3.6 以及 Ralasafe1.2。
同样的,勾选我们所需要的 company 以及 department 表的 name 字段。
由于 company、department 表的 name 字段还没有与 Employee 类建立映射关系,因此我 们还需要为其建立相应的映射关系。 分别点击 company、department 表的 name 字段右侧的 编辑图标,在弹出的对话框中 选择两个表的 name 多对应 Employee 类中的字段。 company 表的 name 对应 Employee 类中 的 companyName,department 表的 name 对应 Employee 类中的 departmentName。 操作完成后点击页面上方的“保存”链接,然后点击“测试”看看效果。如果一切顺利, 在点击“运行”按钮后,会看到所有员工列表。接着,我们还需要创建 Where 查询条件, 用于过滤除上海、合肥分公司以外的所有员工。在测试页面中点击“继续编辑” ,回到刚才 的编辑界面。 点击编辑界面左上角的“Where”标签页,切换到 Where 条件创建页面。首先新增两个 二 元 表 达 式 , 让 demouser[t0].companyId 列 与 company[t1].id 列 对 应 , 同 样 , 让 demouser[t0].departmentId 列 与 dempartment[t2].id 列 对 应 。 这 一 操 作 的 目 的 是 为 了 在 demouser、company、department 表之间建立关联关系。 为了让查询区分上海分公司、合肥分公司用户,还需要增加一个条件。点击 “ Root expression group(AND) ”节点→“新增条件组” ,新增一个“OR ”条件组。在“ Expression group(OR) ”条件组中新增两个二元表达式,分别让 demouser[t0].companyId 等于 2 、 3( 2 代表上海分公司、3 代表合肥分公司) ,具体操作为,在新增二元表达式的对话框中,需要 将一列替换为固定值,如下图所示:
1. 需要建立一个区域经理的岗位; 2. 区域经理必须由总部销售人员担当; 3. 区域经理只能查询其所在区域内的分公司员工。 将需求转化为概要设计: 1. 在角色模块中创建相应的区域管理员角色; 2. 在策略模块中创建相应的区域用户的分类; 3. 在策略模块中创建相应的区域用户查询; 4. 在权限模块中创建区域管理员权限,将相应的区域用户查询挂接到该权限中。 进一步细化概要设计,假设以创建上海合肥区域管理员角色为例: 1. 在策略管理模块中创建一个查询,只能查找上海、合肥分公司的员工; 2. 在策略管理模块中创建一个用户分类,命名为“上海合肥区域用户” ,并创建用户 分类策略; 3. 在权限管理模块中创建一个权限,命名为“上海合肥员工” ; 4. 在角色管理模块中创建一个角色,命名为“上海合肥区域管理员” 。 接着开始一步步的实现这一权限创建过程。
搭建 Ralasafe 开发环境
本文将基于 Ralasafe 官方 Ralasafe 1.2 的 Demo 进行介绍,请在阅读下文之前,下载官 方 Demo 并完成部署,官方 Demo 的下载地址:/download/。下载包中 包含了安装说明,本文不再赘述。
实现权限控制 1.创建策略
创建上海、合肥分公司的员工查询
查询语句需要包含有用户表、公司表以及部门表,其中,上海、合肥的分公司 id 分别 是 2 和 3。可以通过查询 company 表获得分公司 id。
注:company 表位于名称为 zh_mydemo 的 Schema 下。
下面开始创建员工查询: 点击控制台右下角“策略开发人员”中的“查询”菜单项,在“查询员工”组中创建一 个“查询上海合肥分公司员工”的查询项。
接着把“测试人员”角色立即删除,然后再重新创建一个“测试人员”的角色,就会看 到如下的情况:
角色列表中“名称”一栏, “测试人员”并没有显示出来。然后我们在看看数据库中的
ralasafe_role 表:
角色的名称确实已经丢失了。希望 Ralasafe 作者能对此进行更好的处理,从而避免用户 操作过程出现一些奇怪的现象。
用户管理模块对应的是左上角的“用户管理员”一栏,该模块用于给业务系统的用户分 配角色。 角色管理模块对应右上角的“角色管理员”一栏,该模块于创建角色以及给角色设置权 限,此处需要注意,在该模块中创建的用户角色将会在“策略开发人员”一栏中的“用户分 类”中保存一份。 权限管理模块对应左下角的“架构师”一栏,该模块主要用于将策略人员制定好的策略 汇集成各类权限控制,另外还附带了用户元数据的导入功能。 策略管理模块对应右下角的“策略开发人员”一栏,是 Ralasafe 权限控制的核心基础模 块,策略人员可以在此处定制各种级别的权限策略。 下图展现了 Ralasafe 完整的权限创建过程:
4.给用户授权
终于走到最后一步了,不知道读者是否感到激动,反正本人有点激动。 \(^o^)/ 在控制台中点击左上角的“给用户分配角色” ,分别给刘灿和王胜利授予“上海合肥区 域管理员”角色。然后回到权限界面中重新对“查询上海合肥员工”权限进行测试。 通过测试后我们发现,刘灿通过了测试,但是王胜利没有通过,其实这正是是我们想要 的结果,因为王胜利是分公司用户,不属于总部,不在可授权范围内。 下面给出测试结果图:
创建好之后,点击“保存”链接,然后点“测试”链接看看效果吧。下面给出总公司用 户列表,可根据这些用户所属部门验证权限控制是否正确。
在刚开始创建好权限的时候, 所有测试都是失败的, 这是怎么回事呢?因为在测试之前, 我们还有两步工作需要完成,第一步是创建角色,第二步的给用户授权。
3.创建角色
创建角色过程非常简单,只需要进入“角色管理员”→“角色”界面,点击 添加按钮 创建一个“上海合肥区域管理员”角色,如下图所示: