定义自定义授权策略的最佳方法

时间:2014-02-14 16:40:01

标签: mongodb security authorization opensso data-security

我正在使用MongoDB开发一个项目,我有一个场景,以便我可以根据用户的角色限制数据的可见性,例如,如果我有一个表单文档:

{
   "testme1":"fooo",
  "testme2":"foobar"
}

角色为“admin”的用户可以同时看到“testme1”和“testme2”,而“guest”只能看到“testme2”。动态定义这些授权规则的最佳方法是什么,这样我的包装器api应该只根据规则获取数据。我的做法是为用户提供一个Web“UI”来定义规则,并根据他的声明在我的服务器中保留一个“XML”文件。如果有人有更好的想法,请告诉我,如果他们有一些数据库级别的方法来做到这一点

1 个答案:

答案 0 :(得分:1)

存在一个授权标准,您可以使用该标准来定义授权策略。该标准称为XACML,即可扩展访问控制标记语言。它实现了一种称为基于属性的访问控制(ABAC)的授权模型。您可以在这里阅读这两个主题:

XACML定义了一个概念为:

的架构
  • 政策决策点(PDP),
  • 策略执行点(PEP)和
  • 政策信息点(PIP)。

在典型流程中,PEP会保护您的数据/服务/ API。 PEP将向PDP发送授权请求:

  • 用户Alice可以查看记录#123吗?

PDP将转向PIP以检索丢失的属性,例如用户的角色和许可以及资源属性,例如数据,白名单或黑名单的敏感性......根据新信息,PDP可以做出决定: Permit Deny 。允许或阻止访问。

使用XACML,授权策略的丰富程度没有限制。我为一家实施XACML的公司Axiomatics工作,我们的解决方案用于制造,医疗保健,银行业务,以动态方式保护对敏感数据的访问(例如,经理可以编辑他们拥有的文件)。

XACML支持集中管理的外部授权。它还支持我喜欢的任意深度授权,这意味着您可以将XACML应用于Web API,业务逻辑,演示UI以及数据库。

HTH