BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

开源权限管理中间件Ralasafe发布1.0 rc2版

| 作者 崔康 关注 1 他的粉丝 发布于 2010年8月10日. 估计阅读时间: 9 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

Ralasafe是一款国产开源数据级权限管理中间件,使用MIT协议,最近发布了1.0 rc2版。项目采用Java语言编写,解开权限与业务的耦合,将权限策略集中管理,并使用图形化的管理模式。InfoQ中文站就Ralasafe的应用场景、技术架构和未来规划等问题对项目负责人汪金保进行了专访。

InfoQ中文站:作为一款权限管理中间件,Ralasafe的典型应用场景包括哪些?

Ralasafe与各种应用系统结合,提供两种权限管理服务,对应场景是:
  1. 行为权限:基于角色的权限管理 ——比如:张三是销售经理,能够查询订单;李四是人力资源经理,能够修改客户资料等。
  2. 数据级权限:更加细粒度的数据内容权限管理——比如:总公司的销售经理王大大能够查询所有订单,北京分公司的销售经理吴北北只能查询北京分公司及下属子公司订单。
Ralasafe使用Java编写的中间件,与Java系统结合非常方便。与其他系统,需要web service等交互方式。

InfoQ中文站:相比同类商业软件如TAM、OES,Ralasafe存在哪些优势?

TAM(Tivoli Access Manager)和OES(Oracle Entitlements Server)发展年份非常长,属于业内老牌软件。Ralasafe从2004年开始研发,相对于TAM、OES,还非常年轻。

三款产品都定位于数据级权限管理领域,Ralasafe与TAM、OES相比,做了很多创新。比如:TAM、OES的权限策略,完全基于规则。Ralasafe则提出了“用户分类”和“资源”的概念,然后用规则来描述“用户分类”、“资源”。相比较,Ralasafe具有这样的优势:
  1. 产品功能:TAM、OES和Ralasafe都能控制决策权限,但只有Ralasafe能够控制查询权限。比如根据规则,吴北北“能够修改北京订单”,所以吴北北能够修改订单A、订单B。但吴北北能够查询哪些订单呢,这种查询只有Ralasafe能够控制。
  2. 产品定位:Ralasafe定位为轻量级,开发人员容易集成,最终用户通过Ralasafe界面能自我操控授权策略。
  3. 产品友好易用性:Ralasafe独创“用户分类”和“资源”的概念,并将其配对成授权策略。该方法不仅增强了授权策略的可读性,也增加了复用性。Ralasafe和很多开源软件不同,使用Ralasafe几乎不需要JAVA/XML编程配置工作,全程使用Ralasafe友好的图形化界面。

InfoQ中文站:能否介绍一下Ralasafe的系统架构以及所用到的技术?

Ralasafe主要由两大块组成:安全引擎和GUI管理界面。安全引擎用来解析授权策略,为应用系统提供决策支持,查询服务;开发人员和最终用户可以通过GUI管理界面来管理授权策略,还可以进行在线测试。

Ralasafe的安全引擎由Java编写的,使用了beanshell、castor技术。因为Ralasafe涉及的ORM是动态的,不能像hibernate那样要事先编写hbm.xml文件,所以Ralasafe自己编写了一套ORM。

Ralasafe的GUI管理界面,使用GWT技术,结合GWT-EXT、EXT技术。我们使用的ext2.0.2版本,该版本使用LGPL协议。由于后继版本使用GPL或者商业授权协议,对商业并不友好。因此下一版本,我们将寻求其他前台技术。

InfoQ中文站:在应用Ralasafe过程中,开发人员需要注意哪些步骤?

不少开发人员接触Ralasafe后,问得最多的问题是:
  1. 怎样与应用集成
  2. 怎样使用Ralasafe编程
Ralasafe是一款中间件,提供权限管理服务。就像LOG4J提供日志服务一样,在需要的地方调用一下服务即可。就我们的项目实践经验,认为在控制层接入Ralasafe服务非常合适。

Ralasafe的接口非常简单,主要是3个类。用户类——org.ralasafe.User、Ralasafe服务类 ——org.ralasafe.Ralasafe和针对Web的服务类——org.ralasafe.WebRalasafe。另外,Ralasafe提供的一些Filter,也可以大幅减少编程工作。如登录控制Filter,Url访问权限控制,这些都只需要对web.xml进行简单配置即可。

关于怎样使用Ralasafe编程,这个需要转换一下思想。Ralasafe几乎不需要JAVA/XML编程配置工作。首先,开发人员要关注于良好的项目实践:业务逻辑与权限逻辑分离解耦。在需要权限的地方,通过API或者AOP的方式注入。再次,权限逻辑是使用Ralasafe管理界面里面进行管理,不必进行编程或者XML配置。很多开发人员都习惯于以往的开发配置模式,所以对Ralasafe的图形化管理模式还不太习惯。

InfoQ中文站:未来Ralasafe的发展规划如何?

Ralasafe的发展方向是:专注于应用安全领域,保持第三方独立性,为最终用户提供“自我掌控的安全”软件及服务。Ralasafe服务软件开发商、企业和最终用户。

Ralasafe开发团队,向社会做出两项承诺:免费、开源。不增加软件开发企业的负担,也广思集益,打造稳定最好用的产品。以开放、第三方独立性和良好易用性为目标,不断为软件商服务,为企业和最终用户提供一站式安全管理服务。

InfoQ中文站:该项目投入到开源世界,您有何期望?

Ralasafe从2004年开始研发,2009年正式向市场发布。当时我们使用闭源模式,商业推广。也做了几个单子,但我们也听到很多市场的声音:
  1. 很多企业认为Ralasafe很好,但商业的软件,不愿意使用。
  2. 有些企业尤其是大企业,像Ralasafe这样的安全软件,采取闭源模式不放心。
  3. 很多开发人员呼吁我们,希望我们开源。
鉴于这些情况,我们团队慎重考虑后,决定开源免费。就像起先我们花费5年研发时间一样,这次开源免费,我们也会不断坚持,做个负责任的开源团队。

开源后,我们看到软件下载量不断增加,很多网友通过email/社区/QQ/gtalk等方式,与我们互动沟通。不仅找出我们软件的一些BUG,也让我们学习到很多东西,让我们不断提高,软件品质不断提高。开源并不像我们原来所想,只是付出。开源更是双赢。

在地域方面,我们已经推出中英文软件和中英文网站,为全球用户无偿服务。

在商业方面,Ralasafe的商业模式主要是赞助商和咨询定制服务。开源一个月以来(2010年6月23日开源的),已有10多位客户与我们洽谈合作。这也让我们看到了希望。当前,我们团队非常期望有些企业能够成为我们的赞助商。

我们也期望中国开源软件,越来越多,更多软件走向国际,形成大气候。

InfoQ会继续关注国内开源社区的发展动态,对Ralasafe项目感兴趣的朋友可以访问其官方网站或者论坛了解更多细节。

专家介绍:汪金保,Ralasafe项目负责人,首席架构师。2000年开始接触Java,立马喜欢上该编程语言。从事多项银行项目研发。2004年辞职专注于Ralasafe研发。我喜欢简单,不喜欢复杂;我喜欢自由,不喜欢束缚;我喜欢不断反省自己,又不断与周边的朋友分享。除了IT外,还喜欢民歌,戏曲,读书,网球和乒乓球。我的Email: wangjbao[at]gmail.com,期望与大家交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

想法很好有待提高 by 黄 海平

权限中间件确实是个不错的想法,把aop做成中间件要强化的东西比较多。特别对大型复杂应用的支持,例如OLAP应用中权限的设定。

java框架 by framework simple

Re: 想法很好有待提高 by 曹 云飞

把aop做成中间件要强化的东西有哪些呢?请海平同学详细谈谈

Re: 想法很好有待提高 by 黄 海平

由于水平所限,也只是说说我的粗陋之见。

先说我对权限的理解,权限就是对资源的操作。
而资源通常有两种组织形式,树形和散列,操作往往是有限几种列举
权限的最大集就是资源与操作的乘积。对权限的二维拆分后权限管理
的重点就是资源管理了。资源表现形式在应用中是url,细化下来就是
虚拟目录和查询字符串;到存储层通常是关系数据库表、列以及行。
基于角色的权限通常是每个角色有一个资源树或列表以及在对应资源
上的操作,用户的权限就是这几个角色权限的并集。

aop实现的权限管理通常仅限访问控制这个层面。用url形式的访问控制
比较直观,缺点是比较生硬,特别是如果查询字符串包含权限,就显得
太过笨拙。而且在应用设计之初就要设计url,管理也比较繁琐。基于
数据库的权限更为深入和灵活,不过往往到sql生成是才能明确是哪些
表、列或行,如果使用这种方式的话就要想办法使之尽早明确(同是要
防止sql注入)。
如果把它提升到中间层我觉得首先健壮而灵活的接入方式,同时不会对
系统有侵入性;其次要有足够的灵活性能够应对数据与业务的变化,例
如定义对角色定义规则而不直接赋权;最后要对立便捷的管理方式。
实际系统中权限的关系往往也比较复杂,有时需要动态的授予和解除,
而在工作中权限有依赖和互斥关系(SOD);同时资源也是持续变化的。

以上只一些想法堆积思路不清,不足之处还请指教。

Re: 想法很好有待提高 by 崔 康

海平说的很详尽!

Re: 想法很好有待提高 by Wong Julian

资源可以分为树形、散列。资源可以是数据、URL、JAVABEAN甚至是某台设备。总之资源应该使用规则进行描述。如果使用ID模式定义,然后是ACL列表形式进行授权。如果用户多、资源多的话,ACL列表就非常大。而且设计到资源和ACL列表的关联维护。(比如删除了某资源,ACL里面该资源的相关信息都要删除)。

URL资源,我个人认为仅仅代表这功能级权限,并不能代表数据级权限。因此URL权限控制是粗粒度的。
经过URL功能级权限验证后,在业务逻辑里面,一般就开始涉及到细粒度权限控制了。大部分系统使用编程模式实现,在系统里面分散了各种if/else代码。 难以维护。 而且这不是好的实践。

将这种细粒度的权限分离出去,就解开了权限与业务的耦合。那么就引出这样的问题了:怎样管理权限逻辑呢,怎样接入权限逻辑呢?

海平,认为在中间层接入。这点我非常赞同。

那么回到Ralasafe中间件,Ralasafe可以使用Filter模式进行url控制。也可以在任意接入层(包括中间层)进行权限控制(功能级权限和数据级权限)。Ralasafe使用图形化模式管理权限策略,该图形化界面非常友好易用,甚至可以交给企业IT管理员自行管理。这就是Ralasafe的意义所在。

Re: 想法很好有待提高 by 崔 康

Julian有使用Ralasafe的经验?

s t by - 博文 1公子

你中国的开源框架没有中文文档,这算什么啊。
Ralasafe是一款国产开源数据级权限管理中间件
这话爷看了想笑

Re: s t by 崔 康

你中国的开源框架没有中文文档,这算什么啊。
Ralasafe是一款国产开源数据级权限管理中间件
这话爷看了想笑

文中已经提到了在其网站上提供了中英两种语言的文档,您可以通过首页右上角的标签切换。

能对多个异构系统进行权限的集中管理吗? by 陈 国柱

ralasafe,好像是单做一个应用系统的权限管理,而不是统一授权的吧?
例如,我现在有多个应用系统,单向集中统一授权的话,这样能实现吗?
苛刻点讲:有一个是java_web项目,一个是asp.net项目,一个是PHP项目,一个是rubyl项目,一个是C/s模式的应用系统?
而且这些都是遗留系统,里面的权限控制逻辑不一样,比较杂乱,很难对原系统做任何修改。
ralasafe,能提供这样的集成接口吗?

Re: 能对多个异构系统进行权限的集中管理吗? by Wong Julian

多系统统一授权是Ralasafe的发展方向。目前做到了单一系统统一授权。

话又说回来,什么才叫统一授权呢?完全发到一个“页面”或者“入口”吗?身份认证、SSO有现成产品了(这个和RALASFE定位是不同的)。RALASAFE又是web系统,非常方便访问。因此,做适当封装,实现统一授权应该不难。

Re: 能对多个异构系统进行权限的集中管理吗? by 陈 国柱

统一授权和统一认证,是不一样。SSO是统一认证,不是统一授权。关于SSO,有cas,它也是一个web系统。我所想的统一授权,是有点受统一认证cas的影响。也有点受微软的活动目录的影响。
有机会希望,你能了解下cas,刚开始,我还考虑过cas+ralasafe怎么弄在一块。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

12 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT