1

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

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

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

4

1 回答 1

1

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

XACML 定义了具有以下概念的体系结构:

  • 策略决策点 (PDP),
  • 策略执行点 (PEP),以及
  • 策略信息点 (PIP)。

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

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

PDP 将求助于 PIP 来检索缺失的属性,例如用户的角色和权限以及资源属性,例如数据的敏感性、白名单或黑名单……基于新信息,PDP 可以做出决定:允许拒绝。允许或阻止访问。

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

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

高温高压

于 2014-02-17T08:41:19.683 回答