我使用的是 Greenploum 数据库,但我假设它或多或少与 Postgres 相同。我想根据表分区的列的值来实现行级安全策略。
我有一张桌子。TABLE rank(id int、rank int、year int、gender char(1)、count int、source_system 文本)
示例数据:
(1,2, 2012, 1,1, source_system_a),
(2,1, 2012, 1,1, source_system_b),
(3,4, 2012, 1,1, source_system_a),
(4,3, 2012, 1,1, source_system_c),
该表基于 source_system 列进行分区。我希望有一组可以看到所有数据的用户和一组不能看到基于 source_system 列的所有内容的用户。source_system_a 应该是一个安全值,因此只有具有安全权限的人才能看到具有 source_system_a 的行。
例如,
用户 a(可以查看全部)执行“从排名中选择 *;”
结果:
1,2, 2012, 1,1, source_system_a,
2,1, 2012, 1,1, source_system_b,
3,4, 2012, 1,1, source_system_a,
4,3, 2012, 1,1, source_system_c,
用户 b(不安全)确实“从排名中选择 *;”
结果:
2,1, 2012, 1,1, source_system_b,
4,3, 2012, 1,1, source_system_c,
非常感谢