访问控制机制(例如RBAC或ABAC)如何保护资源?我知道RBAC,ABAC等访问控制机制是如何工作的。换句话说,我知道访问控制引擎如何评估请求并做出决策(允许,拒绝等)。但是,我不知道他们如何保护资源。
我的意思是,例如,ABAC如何执行拒绝决定?
答案 0 :(得分:2)
RBAC和ABAC以不同的方式实现类似的目标:访问控制。
它们的两个基本原理都是相同的:简化授权管理。但是,RBAC主要发生在为用户分配用户角色和权限的管理时间。然后,让目标应用程序根据用户拥有的角色和权限强制执行授权。 OAuth2和范围采用类似的方法。这导致耦合授权,因为应用程序可以强制执行授权。您将获得类似if UserInRole(r) then
...
RBAC还需要角色工程,并且可以实现某种程度的静态职责分离(例如,购买者不能同时成为批准者)。
在ABAC中,您明确地将应用程序与授权逻辑分离。所有应用程序都会调用一个返回许可或拒绝的策略决策点(根据xacml标准)。
架构如下(与流程一起):
PEP或策略执行点通常是位于您希望保护的应用程序前面或内部的拦截器或代理程序。它可以是一个API网关,如Mulesoft或Servlet Filter。它们通常非常容易编写。 Axiomatics(我工作的地方)提供了几个SDK来帮助您无缝地完成这项工作。
答案 1 :(得分:0)
除了@DavidBrossard对RBAC和ABAC关于保护资源的精彩解释之外,我想强调的是,这两种机制专门用于访问控制,即如何通过以下方式决定访问资源:请求者,但它没有解决消息级安全问题。
正如我理解您的问题,您关心的是消息级别或传输级别安全性。例如,消息加密,其完整性,不可否认性等是消息级别或传输级别安全性,无法使用RBAC或ABAC直接解决。这些是受访问控制机制范围之外的安全控制。
例如,如果您想确保以安全数据库和加密格式存储某些内容,则可以通过为编写此类数据而定义的组织合规性策略(例如PCI相关数据)来控制这些内容。
RBAC和ABAC是唯一可以回答问题的机制:谁可以访问什么和/或在什么条件下?
希望它澄清我是否理解正确。