编程实现基于属性的访问控制模型ABAC,创建主体S,客体O,环境E,操作O,创建访问控制策略,启用可信引用监测器,进行决策,决策结果为允许或拒绝,关于abac的元策略,出现拒绝时拒绝优先,缺乏匹配的策略时默认决策为拒绝
时间: 2023-06-15 22:05:04 浏览: 254
以下是一个基于属性的访问控制模型ABAC的简单实现:
1. 创建主体S,客体O和环境E
在这个例子中,我们将创建一个主体(用户)S,一个客体(资源)O和一个环境E。主体S代表用户Alice,客体O代表文档A,环境E代表当前的系统时间和地点。
2. 创建操作O
在这个例子中,我们将创建一个操作O,即“读取文档”。
3. 创建访问控制策略
访问控制策略将基于主体,客体和环境的属性来决定是否允许访问。在这个例子中,我们将使用以下属性:
- 主体属性:角色(role)和所在地点(location)
- 客体属性:所属部门(department)和文档类型(document_type)
- 环境属性:当前时间(current_time)
我们将创建一个访问控制策略,其中规定:
- 如果主体S的角色为“管理员”,则允许访问任何文档。
- 如果主体S的角色为“作者”,并且所在地点为“公司内部”,则允许访问所属部门为“技术部”的文档。
- 如果主体S的角色为“读者”,并且所在地点为“公司内部”,并且当前时间在工作时间范围内,则允许访问文档类型为“公告”的文档。
- 如果没有匹配的策略,则默认拒绝访问。
4. 启用可信引用监测器
在ABAC模型中,可信引用监测器(TAM)用于检查访问请求中的属性值是否可信。在这个例子中,我们将假设TAM已经启用,并且已经验证了主体S的身份。
5. 进行决策
现在我们可以进行决策,以确定是否允许Alice访问文档A。
首先,我们检查主体S的属性。假设Alice的角色为“读者”,所在地点为“公司内部”,并且当前时间为上午10点。
然后,我们检查客体O的属性。假设文档A所属部门为“技术部”,文档类型为“公告”。
最后,我们检查环境E的属性。我们已经知道当前时间为上午10点。
根据访问控制策略,我们发现没有匹配的策略,因此默认决策为拒绝。因此,Alice将被拒绝访问文档A。
需要注意的是,在ABAC模型中,若出现多个策略可匹配,拒绝优先的原则将会被遵循,即如果有一个策略拒绝访问,则不允许访问。