这篇文档属于类型a,即报告了一项原创性研究。以下是针对该研究的学术报告:
本研究由Aastha Mehta、Eslam Elnikety(马克斯·普朗克软件系统研究所, MPI-SWS)、Katura Harvey(马里兰大学学院公园分校/MPI-SWS)、Deepak Garg和Peter Druschel(MPI-SWS)合作完成,论文标题为《QAPLA: Policy Compliance for Database-Backed Systems》,发表于第26届USENIX安全研讨会(2017年8月,加拿大温哥华),会议论文集由USENIX协会赞助开放获取。
研究聚焦于数据库安全领域,针对现代数据库应用中细粒度访问控制(fine-grained access control)的挑战。传统方法依赖应用程序代码或数据库管理系统(DBMS)原生功能实现策略合规性,但存在以下问题:
1. 应用程序依赖:策略逻辑分散在代码中,易因遗漏或错误导致数据泄露;
2. DBMS局限性:不同DBMS对策略的支持差异大(如Oracle支持单元格级策略,PostgreSQL需结合视图和行级策略),且无法处理复杂策略(如禁止跨列链接或允许聚合但禁止原始值访问)。
开发QAPLA系统,满足以下需求:
1. 策略表达丰富性:支持行级、列级、单元格级策略,以及跨列链接限制和聚合策略;
2. 策略与数据库模式绑定:独立于应用代码,便于管理员维护;
3. DBMS无关性:不依赖特定DBMS功能,对合规查询透明。
QAPLA的策略语言基于SQL语法,分为四类:
- 单列策略(Single-column policies):限制特定列的访问条件(如name :- EXISTS(SELECT 1 FROM employees WHERE empid=$user)
);
- 链接策略(Link policies):限制多列联合访问(如{name, age} :- employees : (empid=$user OR dept=HR)
);
- 转换策略(Transformation policies):允许对列应用函数(如address[neigh]
,仅返回邻域信息而非具体地址);
- 聚合策略(Aggregation policies):限制仅能访问聚合结果(如salary[avg]
)。
QAPLA作为数据库适配器中间件(见图1),包含:
- 策略存储:策略以SQL形式存储在数据库元数据表中;
- 查询重写引擎:拦截应用查询,解析后匹配适用策略,通过添加WHERE子句或子查询重写查询;
- 参考监视器(Reference Monitor):强制执行策略,仅返回合规数据。
在HotCRP会议管理系统(30项策略)和学术申请管理系统Apply(41项策略)中部署QAPLA,验证其支持复杂场景的能力,如:
- HotCRP中限制作者与审稿人身份关联;
- Apply中允许HR访问薪资聚合但禁止查看个体数据。
研究揭示了商业DBMS在细粒度访问控制上的局限性,为未来DBMS设计提供了改进方向(如优化复杂子查询执行计划)。