【问题标题】:Attribute-based access control with database基于属性的数据库访问控制
【发布时间】:2018-02-07 08:42:21
【问题描述】:
我在一家软件公司工作,我正在寻找一种方法来验证数据库访问权限,如下所示:
- 个人数据存储在表中的人需要读取他的
个人行,他有权访问该表。
- 检索到请求的行后,我需要进行外部检查
这确保他有权阅读该特定行,检查
某些表的字段包含在同一行中。
在我看来,基于属性的访问控制是我正在寻找的,但我不确定。您能否确认它是否能够满足我的需求?
【问题讨论】:
标签:
database
authorization
access-control
abac
【解决方案1】:
是的,ABAC(模特)可以做到这一点。但是,检查通常会在您访问数据之前进行 - 实际上这更好(它避免检索数据)。
ABAC 为您提供两件事:
- 一种策略语言,用于表达可以发生和不能发生的事情。比如
用户可以查看他们拥有的记录,但不能查看信用卡字段
在以数据为中心的访问控制的情况下,策略被转换为 SQL 过滤器。例如,您将从:
到
- SELECT amount, owner, CASE WHEN (0=1) THEN CREDITCARD ELSE 'xxxx' FROM transactions WHERE owner = 'Alice'
这称为动态数据过滤和动态数据屏蔽。一些数据库供应商已经具备这种能力,例如Oracle 和 VPD 或 MySQL 和 FGAC。最近的趋势是将此类行为外包给 Informatica DDM 或 Axiomatics ADAF MD(我工作的地方)等工具。