Я использую базу данных Greenploum, но предполагаю, что она более или менее такая же, как Postgres. Я хочу реализовать политику безопасности на уровне строк на основе значения столбца, по которому разбита таблица.
У меня есть стол. ТАБЛИЦА ранг (id int, rank int, year int, пол char (1), count int, source_system text)
пример данных:
(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,
Огромное спасибо