权限控制 - Casbin

最近在研究 iam 相关的内容,iam 即身份访问管理(identify access management) 身份: 用户在整个系统体系中扮演什么样的角色 访问管理:对身份的权限控制。 那既然谈到权限控制,不得不谈谈 casbin, casbin 目前是 github 上在权限控制处理方面 star 数是最多的,虽然之前没接触过 casbin,但也调研了一段时间,从易用性,扩展性,实现上来谈谈 casbin。 核心概念 权限模型目前主流的主要包括acl, rbac, abac。 简单先从这几个模型说起。而了解这几个模型之前,我们先约定一下一些术语。 subject 主体,在一般的权限体系中,主体一般是指操作者,比如某个用户,某个角色(其实角色最下面也是个用户),当然更广义的讲,可能主体也可以代表其他需要约束的对象,比如在物联网中,他也可以代表一个iot设备。 resouce 资源,一切可操作的实体都可以当做是一种资源,比如aliyun上的我们购买的ecs实例,后台系统的一个user action 操作,主体对资源的操作,比如我们可以对ecs实例进行开机,关机,重启等操作,可以新增,删除,编辑一个user。 condition 操作的条件,一般基于主体与资源的约事条件,比如 user 的ip必须在172.168.0.1/24的段内 effect 影响效力,一般只有allow(允许)/deny(不允许) 有了这些术语,我们去解释对应的权限模型,可能更知道不同模型的区别 ACL acl(访问控制列表),他代表的是,哪些用户(subject)或系统进程可以访问(action)资源(resource) 如果某个文件 apple.jpg(resource) 的 ACL 包含(Alice(subject): read(action),write(action);Bob(subject): read(action)),这将赋予 Alice 读写文件的权限,而只赋予 Bob 读取文件的权限。 RBAC ABAC casbin 中的概念 理解casbin,最主要理解其核心思路,casbin中的核心思路是使用policy(策略)中的规则去应用到model(模型)中,model 是一个规则引擎,帮我们处理一个主体(subject)是否有操作(action)某个资源(subject)的权限。 policy策略:一组规则的集合, 规则 model模型:对每行规则进行解析 因此,对于我们使用者来说,大多时候仅仅只需要关注policy和model就行。 model 初览 在model层面,casbin又基于 PERM (Policy, Effect, Request, Matcher). 一个完整的model(perm)文件格式如下:...

九月 14, 2023 · nobject