分享一个好用的权限控制产品Speedle

转圈圈的程序员 · · 964 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

这两天我被权限控制的问题困扰,在网上搜了一下,发现一个很有意思的开源项目Speedle。安装使用非常方便,目前看来也能满足我的需要。废话不多说,我们一起动手试试。

安装Speedle

Speedle是托管在GitHub上https://github.com/oracle/speedle。我X,甲骨文的项目,不会收费吧?!我仔仔细细看了好几遍许可证,发现它用的是UPL v1.0。还好还好,继续安装!

Speedle是用GO开发的(甲骨文不是都用Java吗?用GO是什么鬼),需要安装GO编译器。就在这里:https://golang.org/dl/

安装好GO编译器之后,设置一下环境变量GOPATH。

$ export GOPATH=~/go

然后再执行

$ go get github.com/oracle/speedle/cmd/…

就装好了?!作者的心情如下图。


看看都有些什么,PMS, ADS, spctl一家人整整齐齐都在bin目录下面。

$ ls $GOPATH/bin

spctl  speedle-ads  speedle-pms

运行Speedle

PMS是Policy Management Service的缩写,主要用于授权策略(Policy)的管理。我们先启动它。

$cd$GOPATH/bin 

$ ./speedle-pms --store-type file

然后创建一个授权策略,就说“用户张三可以点击按钮A”。在Speedle里面,首先要创建一个”Service”,基本就是你要保护的服务(或者应用)的映射。例如我现在要保护约不约系统,就创建YBY

$ ./spctl create service YBY

然后在这个“Service”里面创建一条授权策略

$ ./spctl create policy -c"grant user ZhangSan click buttonA"--service-name=YBY

ADS是Authorization Decision Service的缩写,它可以根据定义好的授权策略判断当前访问是否被允许。我们现在启动它。

$ ./speedle-ads --store-type file

问它张三可不可以点击按钮A。

$ curl -X POST --data '{"subject":{"principals":[{"type":"user","name":"ZhangSan"}]},"serviceName":"YBY","resource":"buttonA","action":"click"}'http://127.0.0.1:6734/authz-check/v1/is-allowed

返回结果是{"allowed":true,"reason":0}。

我们再问李四可不可以点。

$ curl -X POST --data '{"subject":{"principals":[{"type":"user","name":"LiSi"}]},"serviceName":"YBY","resource":"buttonA","action":"click"}'http://127.0.0.1:6734/authz-check/v1/is-allowed

它说不可以 {"allowed":false,"reason":3}

很简单有没有?好了,我今天收工了!Speedle的SPDL语言非常灵活,可以支持rbac和abac,等有空和大家分享,我要加班搬砖了。大家请鼓掌!


Speedle网站:https://speedle.io

GitHub项目: https://github.com/oracle/speedle


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:转圈圈的程序员

查看原文:分享一个好用的权限控制产品Speedle

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

964 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传