8

人们在运行报告甚至只是从数据库中选择多条记录时是如何使用

例如,如果您的政策规定:

医生只能在他们的医院查看病人

显然,实现这一点的有效方法是在查询中包含一个过滤器 ( where hospital = XXX),但这似乎与 ABAC 的原则相违背,因为它将规则烘焙到 SQL 本身中。

我知道Axiomatics提供了一种反向查询机制,它显然会根据规则为您生成过滤器——但我的系统有很多复杂的 sql,必须对其进行大量重构才能使用。

其他人是如何处理这个问题的?

4

1 回答 1

3

基本上有三种方法可以解决这个问题:

  1. 通过您提到的反向查询机制。这确实是目前只有 Axiomatics 支持的。"Can Alice view document #123?"反向查询背后的想法是,您可以指定一个开放式问题,而不是指定一个完整的问题,例如"Which documents can Alice view?"
  2. 通过 XACML 3.0 的多重决策配置文件,您可以一次性提出多个问题,例如“Alice 可以查看 Doc #1、#2、#3 吗?”。MDP 最多可用于数百个项目。您可以将其与分页策略结合使用。您可以在此处阅读有关 MDP的更多信息。
  3. 通过使用义务。您可以编写一个策略,说明作为一个整体,医生有权查看病历 + 有义务执行过滤 SQL 语句。这种方法的问题在于它将授权语义放在了义务而不是策略中。另外,如果触发了多项义务怎么办?
于 2016-04-27T09:57:46.333 回答