以PostgreSQL為例設置用戶權限


作為一款數據可視化軟件,用戶更多的是利用Redash中文版來查找分析數據源,而不需要編輯變更數據內容,在建立數據源時,配置一個帶有權限控制的數據庫用戶,能更好地保障數據安全,避免用戶誤操作導致丟失數據。下面以PostgreSQL數據源為例,演示如何配置只讀數據模式。

首先創建一個新數據庫命名為business,擁有者為admin,數據庫中建立三個表Employees,jobs和customers,並填入數據。數據庫管理員能控制公共用戶的所有權限,直接撤消公共角色的權限會影響當前所有用戶和角色。因此在實際架構中,處理方式一般是在數據庫中設置一部分只讀權限的角色,同時系統也保留其他不同權限的角色。

1、建立只讀角色 readonly

CREATE ROLE readonly;
GRANT CONNECT ON DATABASE defaultbusiness TO readonly;
GRANT USAGE ON SCHEMA business TO readonly;

在PostgreSQL的操作中,在PostgreSQL的操作中,配置只允許訪問usage模式中包含的對象,因此只讀模式中查找功能將不受影響。

2、授予新角色權限

GRANT SELECT ON TABLE "business"."employees" TO readonly;
GRANT SELECT ON TABLE "business"."jobs" TO readonly;
GRANT SELECT (id, name) ON TABLE business.customers TO readonly;

前兩條語句是對employees和jobs表賦予完全讀取權限。

第三條語句限制readonly角色僅能查看customers表的ID和姓名,表中的所有其他字段均被隱藏,customers其他信息字段數據只能由管理員查看,這樣可確保系統中其他的用戶不會有意地看到該數據。如果用戶嘗試執行SELECT * FROM business,數據庫將引發權限錯誤,只有查詢ID和名稱字段能顯示出來。

3、在數據庫中創建名為redash_user的只讀用戶,用於連接到Redash中文版

CREATE USER redash_user WITH PASSWORD 'secret';
GRANT readonly TO redash_user;

添加數據源時設置界面需要填寫用戶名redash_user,“secret”表示數據庫密碼,這里可以設置一個較強的密碼來替換。

4、使用新的只讀用戶連接到Postgres

連接Redash中文版很簡單。只需提供主機名,端口和數據庫用戶名、密碼即可,示例如下。

接下來,我們可以執行一些查詢來檢查權限情況:

SELECT * FROM business.employees

能夠返回數據。

下面執行:

INSERT INTO business.employees(name) VALUES ('Hal')

權限錯誤!該readonly角色不允許插入數據。

執行從customers表中查詢:SELECT * FROM business.customers;

返回權限錯誤,因為只讀角色只能訪問特定的列。

執行:SELECT id, name FROM my.customers;

執行后發現能夠查詢到指定數據,因為我們僅請求了只讀用戶有權查詢的列名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM