站长网 教程 Gin集成Casbin进行访问权限操纵

Gin集成Casbin进行访问权限操纵

Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型,Casbin只负责访问控制[1]。 其功能有: 支持自定义请求的格式,默认的请求格式为{subject, object, action}。. 具有访问控制模型model和策略policy两个核心概念。 支持R

Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型,Casbin只负责访问控制[1]。

其功能有:

支持自定义请求的格式,默认的请求格式为{subject, object, action}。.

具有访问控制模型model和策略policy两个核心概念。

支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。

支持内置的超级用户 例如:root或administrator。超级用户可以执行任何操作而无需显式的权限声明。

支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar可以映射到 /foo*

Casbin的工作原理

在 Casbin 中, 访问控制模型被抽象为基于 **PERM **(Policy, Effect, Request, Matcher) [策略,效果,请求,匹配器]的一个文件。

Policy:定义权限的规则

Effect:定义组合了多个Policy之后的结果

Request:访问请求

Matcher:判断Request是否满足Policy

首先会定义一堆Policy,然后通过Matcher来判断Request和Policy是否匹配,然后通过Effect来判断匹配结果是Allow还是Deny。

Casbin的核心概念

Model

Model是Casbin的具体访问模型,其主要以文件的形式出现,该文件常常以.conf最为后缀。

Model CONF 至少应包含四个部分: [request_definition], [policy_definition], [policy_effect], [matchers]。

如果 model 使用 RBAC, 还需要添加[role_definition]部分。

Model CONF 文件可以包含注释。注释以 # 开头, # 会注释该行剩余部分。

比如:

# Request定义 

[request_definition] 

r = sub, obj, act 

 

# 策略定义 

[policy_definition] 

p = sub, obj, act 

 

# 角色定义 

[role_definition] 

g = _, _ 

 

[policy_effect] 

e = some(where (p.eft == allow)) 

 

# 匹配器定义 

[matchers] 

m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act 

request_definition:用于request的定义,它明确了e.Enforce(…)函数中参数的定义,sub, obj, act 表示经典三元组: 访问实体 (Subject),访问资源 (Object) 和访问方法 (Action)。

policy_definition:用于policy的定义,每条规则通常以形如p的policy type开头,比如p,joker,data1,read就是一条joker具有data1读权限的规则。

role_definition:是RBAC角色继承关系的定义。g 是一个 RBAC系统,_, _表示角色继承关系的前项和后项,即前项继承后项角色的权限。

policy_effect:是对policy生效范围的定义,它对request的决策结果进行统一的决策,比如e = some(where (p.eft == allow))就表示如果存在任意一个决策结果为allow的匹配规则,则最终决策结果为allow。p.eft 表示策略规则的决策结果,可以为allow 或者deny,当不指定规则的决策结果时,取默认值allow 。

matchers:定义了策略匹配者。匹配者是一组表达式,它定义了如何根据请求来匹配策略规则

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/video/2021/0529/7373.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部