编程实现基于属性的访问控制系统ABAC:策略管理部分有如下要求:1、创建主体 S 、客体 O 、环境 E 、操作 O 的集合并写入数据库 (文本数据库)。2、创建访问控制策略:关于主体属性的规则、客体属性的规则、环境属性的规则的组合,加上操作,如: p =< SR , OR , ER , op , effect >,其中:SR=(sa₁∧sa₂)∨sa₃,OR=(oa₁∨oa₂)∧oa₃∧oa₄,ER=(ea₁∧ea₂∧ea₃)∨ea₄,effect∈{permit,deny}。 访问控制决策要求如下:1、可信引用监控器启用,接收用户对权限的访问请求,如 request =( SA , OA , EA , op )。2、进行决策,决策结果为:允许或拒绝。3、可信引用监控器参照策略库进行决策。
时间: 2024-02-06 20:09:34 浏览: 52
vakt:适用于Python的基于属性的访问控制(ABAC)SDK
这是一个比较复杂的系统,需要多个模块的协作完成。下面是一个大致的实现思路:
1. 创建主体、客体、环境、操作的集合,并将它们写入文本数据库中。
2. 创建访问控制策略,将规则组合成为一个完整的策略。可以使用类似 JSON 的格式进行存储。例如:
```
{
"subject_rules": {
"rule1": "sa1 AND sa2 OR sa3",
"rule2": "sa4"
},
"object_rules": {
"rule1": "oa1 OR oa2 AND oa3 AND oa4",
"rule2": "oa5"
},
"environment_rules": {
"rule1": "ea1 AND ea2 AND ea3 OR ea4",
"rule2": "ea5"
},
"operation": "read",
"effect": "permit"
}
```
这个例子中,我们定义了主体、客体、环境属性的规则,以及操作和效果。其中,主体规则由两个子规则组成,客体规则由三个子规则组成,环境规则由四个子规则组成。
3. 启用可信引用监控器,接收用户对权限的访问请求。如请求 request = (SA, OA, EA, op)。
4. 进行决策,决策结果为允许或拒绝。在进行决策之前,可信引用监控器需要先将请求中的主体、客体、环境属性与策略库中的规则进行匹配,以确定是否满足访问控制策略。
5. 可信引用监控器根据策略库中的规则和请求中的属性,进行决策。如果匹配成功,则根据策略中的效果决定是否允许访问;否则,拒绝访问。
6. 如果访问被允许,则可信引用监控器将访问请求记录到审计日志中,以备后续查看。
需要注意的是,这只是一个大致的实现思路,具体实现还需要考虑很多细节,例如如何解析规则、如何进行规则匹配等等。
阅读全文