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

Kuberenetes + Casbin 权限插件: K8s-Gatekeeper

  •  
  •   Casbin · 2022-08-15 10:35:22 +08:00 · 4734 次点击
    这是一个创建于 829 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Casbin K8s-Gatekeeper

    Casbin K8s-Gatekeeper 是一个集成了 Casbin 作为访问控制工具的 Kubernetes Admission Webhook. 使用 Casbin K8s-Gatekeeper 可以在不编写任何代码,只使用数行 Casbin 的 ACL(Access Control List)语言编写 model 和 policy ,即可建立灵活的规则,实现对 K8s 资源的增删改查操作的准入和拦截。Casbin K8s-Gatekeeper 由 Casbin 社区开发与维护,项目传送门https://github.com/casbin/k8s-gatekeeper

    Casbin 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。Casbin ACL 的编写十分简单易懂,请访问https://casbin.org/docs/en/overview获取更多信息。Casbin 已经成为 Golang ACL 模型事实上的标准。Casbin K8s-Gatekeeper 使用的 ACL 模型便是 Casbin 。

    一个简单的示例

    例如,您无需编写任何代码,只需以下几行 Casbin ACL 语言即可实现不允许使用带特定 tag 的镜像创建 pod

    Model:

    [request_definition]
    r =  obj
    
    [policy_definition]
    p =  obj,eft
    
    [policy_effect]
    e = !some(where (p.eft == deny))
    
    [matchers]
    m = r.obj.Request.Namespace == "default" && r.obj.Request.Resource.Resource =="deployments" && \
    contain(split(accessWithWildcard(${OBJECT}.Spec.Template.Spec.Containers , "*", "Image"),":",1) , p.obj)
    

    Policy:

    p, "1.14.1",deny
    

    上面的 Casbin Model&Policy 看起来似乎晦涩难懂,实际十分简单易学,10min 内即可快速上手。教程在这里https://casbin.org/docs/en/syntax-for-models

    为什么使用 Casbin K8s-Gatekeeper

    Casbin K8s-Gatekeeper 具有以下优点:

    • 简单易用,写几行 ACL 总比写一堆代码来实现要省事得多
    • 允许配置热更新。如果用编写代码实现 Admission Webhook 准入控制,每次规则变更你必须重新上线一个新的 Webhook ;而使用 K8s-Gatekeeper 则没有上述烦恼,只需一到两条 kubectl 命令,准入规则即可热更新
    • Casbin K8s-Gatekeeper 十分灵活强大,规则可以任意制定,凡是可以从 kubectl get 看到的某种 K8s 资源的属性,都可以作为 ACL 准入规则使用的属性
    • 从上层屏蔽了复杂的 K8s Admission Webhook 实现;相比于编写代码实现功能,你甚至不需要真正了解 K8s Admission Webhook 是什么,如何工作,怎么配置,只需要知道 Casbin K8s-Gatekeeper 可以实现对 K8s 资源的增删改查操作的准入和拦截,并编写 Casbin ACL ,即可完成你的目标。全世界都知道 K8s 复杂难学,使用 Casbin K8s-Gatekeeper 你就不用花时间学那么多了
    • 有人维护。Casbin K8s-Gatekeeper 由 Casbin 社区开发与维护,搞不懂的可以在 Github, QQ 联系我们,会有人为您解答疑问

    联系我们

    4 条回复    2023-08-02 14:34:58 +08:00
    scyuns
        1
    scyuns  
       2022-08-17 11:32:53 +08:00
    是不是有了这个 就不需要用户中心了
    a728976009
        2
    a728976009  
       2022-10-12 11:15:17 +08:00
    有跟 OPA 的 Gatekeeper 的比较么
    yimiaoxiehou
        3
    yimiaoxiehou  
       2023-08-02 11:57:29 +08:00
    通过 Casbin 维护 k8s rbac 么
    cnbatch
        4
    cnbatch  
       2023-08-02 14:34:58 +08:00   ❤️ 2
    置顶旧贴真是没意思,至少毫无新鲜感,反正我一看日期这么旧就直接翻评论区

    正文?既然是旧贴,懒得看


    说真的,如果是想增加曝光度(从我这普通阅读者的角度来看),起码置顶个 7 天内的新帖,最好是 3 天内的,效果会好很多,因为不会有什么违和感,还会让人有一种“这个项目没死,不用炒冷饭,大家看,又有新 Update 新 feature 啦”的感觉

    当然了,置顶旧贴是你的自由,反正“从普通阅读者的角度去看待与感受”并不是发帖者的义务
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5393 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:56 · PVG 16:56 · LAX 00:56 · JFK 03:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.