使用者許可權 以PostgreSQL為例設定使用者許可權

2021-10-14 18:44:02 字數 2071 閱讀 8375

作為一款資料視覺化軟體,使用者更多的是利用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中文版很簡單。只需提供主機名,埠和資料庫使用者名稱、密碼即可,示例如下。

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

能夠返回資料。

下面執行:

許可權錯誤!該readonly角色不允許插入資料。

執行從customers表中查詢:select * from business.customers;

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

執行:select id, name from my.customers;

執行後發現能夠查詢到指定資料,因為我們僅請求了唯讀使用者有權查詢的列名。

PostgreSQL許可權問題

許可權 如果你建立了乙個資料庫物件,那麼你就成為它的所有者。預設時,只有物件的所有者可以在物件上做任何事情。為了允許其它使用者使用它,我們必須賦予他們許可權。不過超級使用者總是可以操作任何物件。有好多種不同的許可權 select,insert,update,delete,references,tri...

postgresql許可權修改

兩處修改 1.postgresql.conf listen addresses項值設定為 在9.0 windows版中,該項配置已經是 無需修改。2.pg hba.conf host all all 127.0.0.1 32 md5行下新增以下配置 host all all 0.0.0.0 0 md...

使用者以sysdba許可權無法登陸

資料庫所有具有dba許可權的使用者都不能以sysdba登入,提示說許可權不夠 首先dba是乙個角色,而sysdba是乙個許可權。dba角色包含了資料庫中絕大多數的許可權,但是不包括sysdba許可權。具有sysdba許可權的使用者可以開啟或者關閉資料庫。當資料庫沒有開啟時,任何儲存在資料庫中的資料都...