Postgresql
PostgreSQL 中的操作級授權
我正在開發一個分析應用程序,它提供 Postgres DB 中數據倉庫的多層次視覺化。它的要求之一是不同的使用者應該對數據具有不同的訪問權限。例如,一些使用者應該只從特定表中提取指標 (
counts
,avgs
,sums
),而其他使用者可以將數據下鑽到列級別。例子:
employee table id | name | salary -------+--------+--------+ 1 | josé | 20000 2 | joão | 80000 3 | tiago | 60000 user 1 (can drill down) ------ => select name from employee where id = 1 => josé user 2 (can read only aggregate data) ------ => select avg(salary) from employee => 53333.3333333 => select name from employee where id = 1 => ERROR
我認為任何 RDBMS 都不會原生提供。但我想知道是否有任何工具可以幫助我完成此授權級別,而無需在應用程序級別對其進行硬編碼。
您可以使用視圖執行此操作。視圖的列必須命名,不能在函式形式中指定。
create view employee_agg as select count(*), avg(salary) from employee; grant SELECT ON employee_agg TO user2;
現在作為使用者2:
select * from employee; ERROR: permission denied for table employee select * from employee_agg; count | avg -------+--------------------- 3 | 53,333.333333333336
有內置機制行安全策略。在此處輸入連結描述