Greenplum 权限管理与客户端认证
2019獨角獸企業重金招聘Python工程師標準>>>
2. 權限管理
Greenplum 數據庫 權限管理 通過 角色(role) 來進行。 Role 概念包括 User 和 Group。 一個 Role 可以是一個 DB 的用戶或者一個 Group,或者兩者兼備。
Role 可以擁有 DB 對象(tabel),并可以分配改對象的權限給其他 Rolde。
注意:使用psql登陸后顯示的提示符是 數據庫=# 的是超級管理員,其他用戶為 數據庫=>。
2.1 權限規劃
在權限規劃上應該區分 DBA,app,guest,超級管理員。
這里將舉例說明:
例子中將角色劃分為4類(使用下劃線分隔):
- gpdba, gpdba_xxx, ...
普通數據庫管理員,執行數據庫的創建,刪除,表維護等等相關操作。
- gpapp, gpapp_xxx, ...
普通的應用程序訪問,即:通過 ODBC 或 JDBC 來訪問的用戶都歸為此類。
- gpguest, gpguest_xxx, ...
臨時的訪問客戶,開放給外部(其他公司,外部臨時用戶)的賬戶,一般來說只有查看數據表權限,并且應該對訪問時段進行控制。
- gpadmin
超級用戶。
2.2 規劃實施
-- 更新超級管理員密碼 alter role gpadmin with password 'gpadmin123456';-- 創建角色 dba 角色,有增加數據庫權限和管理其他角色權限 -- create role gpdba with login; -- alter role gpdba with password 'gp123456'; -- alter role gpdba with createdb; -- alter role gpdba with createrole; create role gpdba with login password 'gp123456' createdb createrole;-- 創建角色 gpapp 角色 -- create role gpapp with login; -- alter role gpapp with password 'gp123456'; create role gpapp with login password 'gp123456';-- 創建角色 gpguest 角色 #create role gpguest with login; #alter role gpguest with password 'gp123456'; #alter role gpguest with noinherit; create role gpguest with login password 'gp123456' noinherit;-- 將 gpapp 給具體的用戶 create role gpapp_scott with login password 'gp123456'; create role gpapp_lucy with login password 'gp123456'; grant gpapp to gpapp_scott, gpapp_lucy; revoke gpapp from gpapp_lucy; drop role gpapp_lucy; grant all on database gpdb1 to gpapp; --grant all on table xxx to gpapp;-- 更細的權限控制通過 grant 和 revoke create role gpguest_scott with login password 'gp123456'; grant gpguest to gpguest_scott; grant connect on database gpdb1 to gpguest; --grant select on table xxx to gpguest;-- 這里還可以添加時間訪問限制,在周六日,不可訪問,平時在22:00-06:00不可訪問 --alter role gpguest deny --between day 0 time '00:00' and day 0 time '24:00' --between day 6 time '00:00' and day 6 time '24:00' --between day 1 time '00:00' and day 1 time '06:00' --between day 1 time '22:00' and day 1 time '24:00' --between day 1 time '00:00' and day 2 time '06:00' --between day 1 time '22:00' and day 2 time '24:00' --between day 1 time '00:00' and day 3 time '06:00' --between day 1 time '22:00' and day 3 time '24:00' --between day 1 time '00:00' and day 4 time '06:00' --between day 1 time '22:00' and day 4 time '24:00' --between day 1 time '00:00' and day 5 time '06:00' --between day 1 time '22:00' and day 5 time '24:00';-- 刪除訪問時間約束 --alter role gpguest drop deny for day 0; --alter role gpguest drop deny for day 1; --alter role gpguest drop deny for day 2; --alter role gpguest drop deny for day 3; --alter role gpguest drop deny for day 4; --alter role gpguest drop deny for day 5; --alter role gpguest drop deny for day 6;查看 role
\dg3. 配置客戶端認證
3.1 允許連接到 gpdb
客戶端訪問認證是通過一個叫做 pg_hba.conf(也是標準的 PostgreSQL 的認證文件)的文件來控制的。
一般只需要修改 主節點(mdw)上 的 pg_hda.conf。修改訪問認證基本基本只需如下設置即可:
nano $MASTER_DATA_DIRECTORY/pg_hba.conf 增加 host all all 10.20.17.0/24 md5需要注意的是,這個 IP 段是 您的 服務器所在的 IP 段。
重新加載 pg_hba.conf 文件:
$ gpstop -u3.2 并發連接數設置
要使此配置生效,不僅要修改主節點上的 postgresql.conf, 也需要修改每個segment instance (段實例)上的postgresql.conf。
在$MASTER_DATA_DIRECTORY/postgresql.conf(包括 Standby): max_connections=100 max_prepared_transactions=100在所有的 Instance 上 SEGMENT_DATA_DIRECTORY/postgresql.conf: max_connections=500 max_prepared_transactions=100segment instance (段實例)上的 max_connections 為主節點上的 5-10 倍,最低也應該在 2-3 倍。
修改步驟:
- 1 停止 gpdb
-
2 在 Master 上編輯$MASTER_DATA_DIRECTORY/postgresql.conf 文件并修改下面兩個參數: max_connections (允許連接的數量+superuser_reserved_connections) max_prepared_transactions (大于或等于max_connections)
-
3 在每個 Instance 上編輯 SEGMENT_DATA_DIRECTORY/postgresql.conf 文件并修改下面兩個參數: max_connections (建議5-10倍Master上的值) max_prepared_transactions (大于或等于Master上的值)
-
4 重啟 GPDB 系統
轉載于:https://my.oschina.net/crooner/blog/916772
總結
以上是生活随笔為你收集整理的Greenplum 权限管理与客户端认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS 实现好看的边框
- 下一篇: 汉印N41驱动官网