ABAC相关概念及特点
概念
-
abac是基于属性进行权限判断,通过对用户的属性,资源的属性和环境的属性来动态的进行判断该用户是否对该资源拥有某种操作权限
-
abac由请求者、被访问客体、具体的操作和环境条件组成,每种元素都是由属性来进行描述
特点
-
优点
-
abac模型能够实现更加细粒度的权限管理,在一个场景中,可以通过修改属性信息或者因为环境属性的改变以达到更加细粒度的权限管理
-
-
缺点
-
当匹配规则较多,较为复杂的时候,会影响性能
-
基于casbin的abac简单使用
使用场景
-
程序员只有在工作日09:00-17:00时间才能访问公司业务进行工作
建模
-
上述场景意味着只有用户角色为程序员,环境为工作日的09:00-17:00才能对公司业务具有访问权限
-
用户属性至少要包括角色Role
-
资源属性至少要包括名字Name
-
环境属性至少要包括时间Time
-
具体操作为访问
-
前三者可以用结构体实现,操作可以用字符串表示
-
-
model可定义如下
-
r = sub, obj, act, env
-
p = sub, obj, act, env
-
e = some(where (p.eft == allow)
-
m = r.sub.Role == "programmer" && r.obj.Name = "业务1" && (r.env.Time > 9 && r.env.Time < 17) && r.act == "access"
-
-
对于该场景不需要采用策略来存储信息进行辅助判断