V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wcai
V2EX  ›  信息安全

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

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

    本文翻译自 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/speedle/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   ·   我们的愿景   ·   实用小工具   ·   3233 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:19 · PVG 22:19 · LAX 07:19 · JFK 10:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.