我正在使用MongoDB开发一个项目,我有一个场景,以便我可以根据用户的角色限制数据的可见性,例如,如果我有一个表单文档:
{
"testme1":"fooo",
"testme2":"foobar"
}
角色为“admin”的用户可以同时看到“testme1”和“testme2”,而“guest”只能看到“testme2”。动态定义这些授权规则的最佳方法是什么,这样我的包装器api应该只根据规则获取数据。我的做法是为用户提供一个Web“UI”来定义规则,并根据他的声明在我的服务器中保留一个“XML”文件。如果有人有更好的想法,请告诉我,如果他们有一些数据库级别的方法来做到这一点
答案 0 :(得分:1)
存在一个授权标准,您可以使用该标准来定义授权策略。该标准称为XACML,即可扩展访问控制标记语言。它实现了一种称为基于属性的访问控制(ABAC)的授权模型。您可以在这里阅读这两个主题:
XACML定义了一个概念为:
的架构在典型流程中,PEP会保护您的数据/服务/ API。 PEP将向PDP发送授权请求:
PDP将转向PIP以检索丢失的属性,例如用户的角色和许可以及资源属性,例如数据,白名单或黑名单的敏感性......根据新信息,PDP可以做出决定: Permit 或 Deny 。允许或阻止访问。
使用XACML,授权策略的丰富程度没有限制。我为一家实施XACML的公司Axiomatics工作,我们的解决方案用于制造,医疗保健,银行业务,以动态方式保护对敏感数据的访问(例如,经理可以编辑他们拥有的文件)。
XACML支持集中管理的外部授权。它还支持我喜欢的任意深度授权,这意味着您可以将XACML应用于Web API,业务逻辑,演示UI以及数据库。
HTH