为了证明概念,我想存储权利。我知道访问控制有不同的方式(DAC,MAC,RBAC等)。我的第一个想法是使用数据库,但是我正在寻找一些更完善的标准,例如XACML,但不幸的是,我还没有找到真正的替代方案。
感谢您的小费!
最佳答案
首先,退后一步,看看可比较的项目。
在访问控制中,随着时间的推移,您会使用不同的模型。从历史上看,您首先拥有DAC和MAC。您有访问控制列表的概念(也称为基于身份的访问控制或IBAC)。
然后突然,用户的唯一身份不再足够。我们开始将用户分为角色和组。这导致创建了RBAC或基于角色的访问控制,NIST正式将其标准化为标准。
快进10年以上,角色已经不足够了。 ACL和RBAC也是以用户为中心的。它们不适合上下文或关系。它们的粒度不够细。出现了一种称为ABAC或基于属性的访问控制的新模型。 NIST也正在对ABAC进行标准化。 ABAC能够实现任何类型的访问控制要求,并且可以满足用户,资源,操作和上下文属性。
您可以在ABAC here上阅读更多内容。
那么,XACML呢? XACML-eXtensible Access Control Markup Language-是ABAC模型的实现。它是ABAC实现最广泛的实现。您问是否有其他选择。我想到的一些包括:
但是在实践中,我见过的大多数ABAC实现都使用XACML或本地代码+ RBAC的混合。不用说,后者并不能很好地扩展并且很难维护。
如果您想了解更多信息,请查看以下资源:
关于authorization - 如何存储权利? XACML的替代品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26594816/