【问题标题】:XACML how to efficiently control Access to Collections (Lists) of ResourcesXACML 如何有效控制对资源集合(列表)的访问
【发布时间】:2018-05-23 05:56:03
【问题描述】:

假设我有一个集合 transactions 和一个策略,如果用户的 department 与记录上的相同.

问题:如果我访问单个资源,则检查每个资源的访问权限没有问题。但是,如果我想枚举/列出整个集合,我需要检查集合中效率不高的每个项目(特别是如果您的条目数量“高”)。

如果 PDP 可以将条目列表需要由部门过滤的信息返回给 PEP(并且 PEP 可以将其传递到基础数据存储),那么效率会更高。

我考虑过为此使用义务,但据我所知,它们不应包含 AuthZ 相关信息。

那么该如何解决呢?

【问题讨论】:

    标签: authorization access-control xacml abac


    【解决方案1】:

    你提出了一个很好的观点。 XACML 是为我所说的事务授权而设计的,即授权特定的事务或流程。例如:

    • 政策:护士可以查看其科室患者的病历。
    • 请求:护士 Joe 可以查看病历 #123 吗?

    挑战是当您想要控制对大量甚至未知数量的项目的访问时。在这种情况下,您可以(理论上)发送大量请求。您甚至可以利用 Multiple Decision Profile of XACML 来创建请求,例如:

    • 请求:护士 Joe 可以查看病历#123、#124、#125、#126...吗?

    然后,您将获得与请求中的 MDP 元素一样多的答案。你甚至可以做一个矩阵,例如

    • 请求:护士 Joe 可以查看和编辑医疗记录 #123、#124、#125、#126...吗?
    • 响应:2x4 = 8 个决定。

    但是,它仍然不能很好地扩展(它可以达到数千但几乎没有数百万),并且在分页场景和您不知道自己有多少项目时不起作用。它在分页中不起作用,因为假设您检索将显示的 10 个项目(通过分页),然后您授权每个项目。您的页面上存在少于 10 个项目的风险,这会破坏用户体验。

    在您的问题中,您提到了使用义务和建议。这是一个选择,但您对缺点的看法是正确的。它将 authZ 语义隐藏在通知中,这使得单一案例变得更加困难。这就是您的政策将变成的样子

    • 政策:护士可以查看患者的病历+义务:按部门过滤

    这在策略执行点 (PEP) 上投入了大量工作。

    那么还有什么办法呢?

    使用反向查询 (ARQ)

    Axiomatics(我工作的地方——免责声明)在 PDP 之上提出了一个新的 API,它允许您以一种名为 Reverse Query 的开放式方式查询策略。这是关于该主题的developer post

    您不是发送完整的 XACML 请求,而是发送部分请求(一个开放式问题),例如

    • Alice 能看到什么?

    请求可以是通用的,也可以是具体的。以下都是有效的请求:

    • 会发生什么?
    • 爱丽丝能做什么?
    • Alice 能看到什么?
    • Alice 可以查看哪些病历?
    • Alice 可以查看急诊科的哪些病历?
    • ...

    响应将是一组根据必须满足的策略计算得出的过滤器表达式。

    鉴于之前所述的政策

    • 政策:护士可以查看其科室患者的病历。
    • 用户元数据:Alice 是芝加哥库克县医院肿瘤科的一名护士。

    可能的答案是

    • 会发生什么?
      • 答案:护士可以查看其科室患者的病历。
    • 爱丽丝能做什么?
      • 答案:查看肿瘤患者的病历。
    • Alice 可以查看什么?
      • 答案:肿瘤科患者的病历。
    • Alice 可以查看哪些病历?
      • 答案:一位肿瘤科患者。
    • Alice 可以查看急诊科的哪些病历?
      • 答案:没有

    上述示例中的请求集中在 Alice 上。您可以专注于资源(病历),甚至是行动。你可以选择。

    我希望这会有所帮助, 大卫。

    【讨论】:

    • 很好的答案,非常感谢。我真的不得不批评,规范中没有提到这个重要的现实生活问题。
    • 我会问为什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2019-10-11
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多