XACML 义务是解释或要求更多条件

XACML Obligations are explanation or ask for more condition

在 XACML 中,我不确定义务是否会添加更多信息或为规则决策提供更多条件。例如,我希望响应允许访问患者电子健康记录,但我想添加义务以拒绝访问患者电子健康记录中的特定记录。

在 XACML 中,义务(和建议)旨在丰富 PEP 从 PDP 收到的响应。它们并不意味着传达授权逻辑。

例子

双重身份验证

此示例围绕信任/身份验证提升展开。

  • 问:我可以使用基本身份验证从 A 向 B 转账 5,000 美元吗?
  • 答:拒绝。将用户重新路由到双因素身份验证页面以提升身份验证
  • 问:我可以使用双因素 AuthN 将 5,000 美元从 A 转移到 B 吗?
  • A:允许+义务向发件人发送电子邮件。

打破玻璃

  • Alice 可以查看病历 #123 吗?
  • 拒绝 + 义务:如果这是紧急情况,请挥动 'emergency flag' 并再次请求访问。
  • Alice 可以查看病历 #123 吗?这是紧急情况。
  • 允许 + 在医院内部记录爱丽丝看到记录 #123 并声称这是紧急情况的事实。

上述示例来自医疗保健中发生的打破玻璃的场景。

控制对事物层次结构(项目、记录)的访问

在您的示例中,您想要控制对项目和子项目的访问。例如,EHR 由 PII、PHI 和财务信息组成。医生可以查看与他们有关系的患者的 EHR 吗?是的,他们应该能够。但是您想掩盖或编辑财务信息,因为它与医生无关。

在那种情况下,我会编写不同的规则 - 每个子项一个。我希望授权逻辑可见。我想知道关于医生查看 PII、PHI 或财务信息的规则。

我可能会使用 Multiple Decision Profile 来针对记录的不同部分提出问题。

当然,如果您只想系统地屏蔽一个字段,那么您可以逃避义务。

最佳实践

写义务和建议的时候,尽量不要把授权逻辑藏在里面。使用它们来丰富授权流程。