安全文章

基于Casbin的Docker权限管理、访问控制插件

2020-02-06 北京小佑科技有限公司

    众所周知,Docker并没有自己设计一套权限管理机制,而是设计了一套权限管理插件的机制,允许第三方的开发者自行设计权限管理的架构、模型、策略格式,然后通过统一的插件接口接入Docker,为Docker提供权限管理的服务,非常的灵活。这个插件机制的设计思想其实很简单,就是每当Docker daemon接收到一个访问请求时,就会把这个请求的context信息(访问者、资源、动作三元组)发送给Authorization Plugin,Authorization Plugin自己判断一下是否允许这个请求,然后向Docker daemon返回结果,allow or deny,即是否允许这个请求的访问。具体的插件接口格式。

    在之前我们重点介绍了docker权限管理插件Twistlock AuthZ Broker,和其类似,casbin权限插件同为官方推荐权限插件,不同的是casbin插件是国内优秀开源项目的衍生项目,关于其用法可以参考docker官方文档,这里就不在赘述。

    Casbin(https://github.com/casbin/casbin)作为目前Golang语言中最主流的访问控制、权限管理开源库。同时也是一个国产开源项目,专注于解决Go语言中的权限管理问题。Casbin由北京大学罗杨博士在2017年4月发起,罗杨博士的研究方向为云计算访问控制,目前已发表数十篇相关学术论文,曾经在ICWS、IEEE CLOUD、ICICS等多个顶级学术会议进行论文宣讲。Casbin项目则是其研究成果的落地。目前经过一年多的发展,Casbin在GitHub上已经2400+ stars,已成为Go语言Access Control领域排名第一的项目。

源码地址:https://github.com/casbin/casbin