Kim*_*nce 3 acl design-patterns access-control rbac abac
对于具有高度复杂的访问控制规则的Web应用程序,您是否始终使用ACL?
在确定用户权限时,我有很多考虑因素,包括:
开发ACL证明是困难的.过了一会儿,我采取了对每个动作顶部的基本属性进行"if/then"检查,例如if(isAdmin) {...}
这似乎工作正常,我想知道是否应该将其作为永久解决方案留在原地.因此,问题是:访问控制的复杂性是否会超过ACL?或者只是我需要更努力一点?
当您的访问控制模型变得过于复杂,因为访问不再仅基于用户的身份时,您希望转移到另一个访问控制模型.
您可以使用基于角色的访问控制(RBAC),其中权限分组为角色,角色分配给用户.Active Directory和其他LDAP产品允许您执行基于角色的访问控制.
但是,如果您想要实现的不仅仅是角色,特别是您想要考虑关系,图形和图形边缘,您还希望使用基于属性的访问控制(ABAC).在基于属性的访问控制中,您可以实现授权逻辑,该逻辑考虑用户属性(他们的角色,部门,位置,年龄,公民身份......)以及资源属性(节点在图表中的位置,边缘...... .)以及节点和用户之间的关系.
我在ABAC上传了一个视频:www.youtube.com/watch?v = xUEbBKnxWSo CERIAS也有一些很棒的视频:www.youtube.com/watch?v = 3ZCoupGHmwo
今天实现ABAC的主要标准是XACML,即可扩展访问控制标记语言.我会研究XACML(免责声明 - 我为Axiomatics工作,XACML供应商).
您可以查看供应商和开源XACML实现.
使用XACML,您最终只能拥有一个if(isAuthorized())语句,而不是拥有一堆if(isAdmin)和if(validCitizen)语句.实际的授权逻辑集中在用XACML表示的策略中.这也称为外部授权.