【问题标题】:Best way to define a Customized authorization policy定义自定义授权策略的最佳方式
【发布时间】:2014-03-14 03:11:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: mongodb security authorization opensso data-security


    【解决方案1】:

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

    XACML 定义了一个具有以下概念的架构:

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

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

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

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

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

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

    HTH

    【讨论】:

    • Barbarossa 是他们可以为我的规则生成 XACML 文件的好工具吗?
    • 另外,我的方案不是做出许可或拒绝之类的决定,而是做出决定,例如如果根据角色授予用户访问权限,则应从一行中的“哪些列”做出决定,XACML 可以解决这种情况吗
    • 可以用XACML实现“反向查询”。我称之为反向查询问题,例如“我能做什么?”或“谁可以查看这些资源?”或者在您的情况下“我可以显示哪些列?”
    • 要生成 XACML,请查看 Eclipse 的 ALFA 插件。它是一个免费工具,可让您使用伪代码生成 XACML。
    • 我在Axiomatics网站上试过,但注册后没有下载链接,在eclipse市场也没找到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多