为什么使用 Speedle 进行权限管理 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wcai
V2EX    信息安全

为什么使用 Speedle 进行权限管理

  •  
  •   wcai 2019-04-24 08:06:39 +08:00 3896 次点击
    这是一个创建于 2435 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文翻译自 https://blog.speedle.io/?p=749 讨论为什么使用开源项目 Speedle,https://github.com/oracle/speedle

    每当一个新项目发布,我们总会问市场上已经有了 XXX,YYY,ZZZ 产品,为什么你们还要推出新的东西呢?我想通过如下几点来回答这个问题:

    1. SPDL 授权策略定义语言,SPDL 是 Security Policy Definition Language 的缩写,你也可以理解为 Speedle Policy Definition Language 的缩写(这样就是一个像 GNU 一样的递归定义了)。它是一种类自然语言的声明式策略定义语言。例如“ Grant User William Borrow Book; Grant User William Role Admin;”。 你不需要解释就能理解这个策略的意思,对吧?市面上大部分其他语言则和 SPDL 不一样,他们基于 XML、JSON、私有的格式,甚至某种编程语言。使用者必须经过学习才能掌握。如果我们只是定义几条或者几十条策略,还可以接受。如果你要定义更多的策略,你就会痛苦万分了。想象一下你要看懂用 XML 写的 10000 条授权策略,或者是编写程序来实现 10000 条授权策略,我们图什么啊!有人会说,不用怕,我们可以做一个很漂亮好用的策略管理系统来解决这个问题。这当然可以,但是为什么不从开始就避免这个问题呢?

    2. 处理大量授权策略的能力。首先让我来问一个问题:在一个系统中会有多少条授权策略?大部分人,包括我自己,的直觉是一个系统中的授权策略不会太多。真是这样的吗?我见过一个系统创建了 4 百万条策略!这当然不是一个很好的设计。但是时至今日权限控制变得越来越重要,系统提供越来越多的功能,系统的用户也越来越多(特别在云计算环境下),这些用户都需要个性化的权限设置,所以授权策略也会越来越多。Speedle 可以很轻松地处理百万级的授权策略。

    3. REST/gRPC 接口。这并不是 Speedle 的特有功能,通过这些接口用户可以很方便地把 Speedle 集成到自己的系统中去。比如在接口部分添加 enforcement 的逻辑。

    4. 授权决策的速度。Speedle 就像它的名字暗示的那样,速度很快。它可以在数毫秒的时间里作出授权决定。使用 Speedle 不会拖慢您的应用。

    5. 可扩展性。每个 Speedle ADS 的实例每秒钟大致可以处理 30,000 到 40,000 次并发授权请求。如果您觉得这还不够,就再起一个实例,这样它的性能可以翻倍。还不够,再来一个,三个实例的处理能力是单个实例的三倍。Speedle ADS 的处理能力随实例个数线性增长。

    6. 高级功能。Speedle 提供一系列高级功能让您可以扩展它的功能。它可以理解 GitHub、Google、Oracle IDCS 等身份提供商签发的令牌( token )。它可以处理来自不同身份提供商的身份信息...... 您可以在 https://speedle.io 上找到详细的说明。

    7. 来自 Speedle 开发人员的支持。我们这个团队在权限管理领域工作了 15 年了,但是 Speedle 这个项目是个新项目。坦白地说目前外部用户还不多。我们希望这个项目能帮助更多人,您在我们社区的每个问题都会得到严肃对待和快速回复。

    第 1 条附言    2019-04-24 11:34:59 +08:00
    注:本文不讨论具体技术细节。如对具体技术感兴趣,请参阅 https://github.com/oracle/speedle/tree/master/docs/%E4%B8%AD%E6%96%87%E8%B5%84%E6%96%99 的技术文档
    ZiNai
        1
    ZiNai  
       2019-04-24 08:55:42 +08:00 via iPhone
    只能说看上去很美,不能开箱即用,讲了一堆部署的,命令行里授权测试的,就没一个好的编码实践吗,这个文档到底给谁看的
    rockyou12
        2
    rockyou12  
       2019-04-24 09:28:15 +08:00
    oracle 的,不敢不敢
    wcai
        3
    wcai  
    OP
       2019-04-24 11:01:26 +08:00
    @rockyou12 开源的,又不收费,为什么不敢用啊
    wcai
        4
    wcai  
    OP
       2019-04-24 11:09:42 +08:00
    @ZiNai 谢谢批评,这个文档是翻译 blog 上的一篇文章,主要讲介绍要使用 Speedle 这个项目。如果您要看具体技术细节,请看这里 https://github.com/oracle/seedle/tree/master/docs/%E4%B8%AD%E6%96%87%E8%B5%84%E6%96%99。

    至于开箱即用,通过 go get 命令只要一步就可以从 github 下载并编译,这个已经足够简单了吧。欢迎您提出更好的建议哈。

    使用 Speedle 并不需要您过多的编码,只是在做 enforcement 的时候调用一下 REST/gRPC/GO API。所以没有什么好的编码实践。

    不知道我的解释能不能让您满意,再一次感谢您的批评指正。
    wcai
        5
    wcai  
    OP
       2019-04-24 11:11:02 +08:00
    @ZiNai 更正一下链接: https://github.com/oracle/speedle/tree/master/docs/%E4%B8%AD%E6%96%87%E8%B5%84%E6%96%99

    上面链接把后面的句号也带进去了。。。
    ZiNai
        6
    ZiNai  
       2019-04-24 11:46:30 +08:00 via iPhone
    @wcai OK,我研究下。之前看官网给我的感觉就是一个 server,但是需要自己部署,不像比如 rabbitmq 那样的 server 那么方便,文档可以加个直接一点的示例就好了,还有对其他语言比如 nodejs,java,python,怎么进行集成之类的
    wcai
        7
    wcai  
    OP
       2019-04-24 12:02:17 +08:00   1
    @ZiNai 您看看这两篇文章:

    https://github.com/oracle/speedle/blob/master/docs/%E4%B8%AD%E6%96%87%E8%B5%84%E6%96%99/5%E5%88%86%E9%92%9F%E5%85%A5%E9%97%A8.md

    https://github.com/oracle/speedle/blob/master/docs/%E4%B8%AD%E6%96%87%E8%B5%84%E6%96%99/CloudNative%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%9A%84%E9%83%A8%E7%BD%B2.md

    部署肯定是要部署的,rabbitmq 也需要安装运行起来嘛。不过这个确实有云服务,使用云服务就不需要自己部署这些东西了。

    和 nodejs,java,python 系统的集成是通过 REST API 或者 gRPC API。您说的对,我们也在做更进一步的集成工作,方便用户使用。https://github.com/oracle/speedle/issues

    只是简单地试用的话,可以尝试一下 playground: https://speedle.io/playground/

    谢谢关注!
    ZiNai
        8
    ZiNai  
       2019-04-25 00:29:13 +08:00 via iPhone
    @wcai 非常感谢这么细致的回复,期待后续发展
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4730 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 09:53 PVG 17:53 LAX 01:53 JFK 04:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86