PostgreSQL 默認(rèn)角色

2021-08-31 15:22 更新

PostgreSQL提供了一組默認(rèn)角色,它們提供對特定的、通常需要的、需要特權(quán)的功能和信息的訪問。管理員可以把這些角色GRANT給其環(huán)境中的用戶或者其他角色,讓這些用戶能夠訪問指定的功能和信息。

表 21.1中描述了默認(rèn)的角色。注意由于額外功能的增加,每一種默認(rèn)角色相關(guān)的權(quán)限可能會(huì)在未來被改變。管理員應(yīng)該關(guān)注發(fā)行注記中提到的這方面的變化。

表 21.1. 默認(rèn)角色

角色 允許的訪問
pg_read_all_settings 讀取所有配置變量,甚至是那些通常只對超級(jí)用戶可見的變量。
pg_read_all_stats 讀取所有的pg_stat_*視圖并且使用與擴(kuò)展相關(guān)的各種統(tǒng)計(jì)信息,甚至是那些通常只對超級(jí)用戶可見的信息。
pg_stat_scan_tables 執(zhí)行可能會(huì)在表上取得ACCESS SHARE鎖的監(jiān)控函數(shù)(可能會(huì)持鎖很長時(shí)間)。
pg_monitor 讀取/執(zhí)行各種不同的監(jiān)控視圖和函數(shù)。 這角色是pg_read_all_settingspg_read_all_statspg_stat_scan_tables的成員。
pg_signal_backend 發(fā)信號(hào)到其他后端以取消查詢或中止它的會(huì)話。
pg_read_server_files 允許使用COPY以及其他文件訪問函數(shù)從服務(wù)器上該數(shù)據(jù)庫可訪問的任意位置讀取文件。
pg_write_server_files 允許使用COPY以及其他文件訪問函數(shù)在服務(wù)器上該數(shù)據(jù)庫可訪問的任意位置中寫入文件。
pg_execute_server_program 允許用運(yùn)行該數(shù)據(jù)庫的用戶執(zhí)行數(shù)據(jù)庫服務(wù)器上的程序來配合COPY和其他允許執(zhí)行服務(wù)器端程序的函數(shù)。

pg_monitor、pg_read_all_settings、pg_read_all_statspg_stat_scan_tables角色的目的是允許管理員能為監(jiān)控?cái)?shù)據(jù)庫服務(wù)器的目的很容易地配置角色。它們授予一組常用的特權(quán),這些特權(quán)允許角色讀取各種有用的配置設(shè)置、統(tǒng)計(jì)信息以及通常僅限于超級(jí)用戶的其他系統(tǒng)信息。

pg_signal_backend角色想要允許管理員啟用受信任的、但是非超級(jí)用戶的、發(fā)送信號(hào)給其他后端的角色。 當(dāng)前,此角色允許發(fā)送信號(hào)以取消另一個(gè)后端上的查詢或終止其會(huì)話。不過授予此角色的用戶不能向?qū)儆诔?jí)用戶的后端發(fā)送信號(hào)。 參見第 9.27.2 節(jié)

pg_read_server_files、pg_write_server_files以及pg_execute_server_program角色的目的是允許管理員有一些可信但不是超級(jí)用戶的角色來訪問文件以及以運(yùn)行數(shù)據(jù)庫的用戶在數(shù)據(jù)庫服務(wù)器上運(yùn)行程序。 由于這些角色能夠訪問服務(wù)器文件系統(tǒng)上的任何文件,因此在直接訪問文件時(shí)它們會(huì)繞過任何數(shù)據(jù)庫級(jí)別的權(quán)限檢查并且它們可以被用來得到超級(jí)用戶級(jí)別的訪問,因此在把這些角色授予給用戶時(shí)應(yīng)當(dāng)特別小心。

在授予這些角色時(shí)應(yīng)當(dāng)非常小心,以確保它們只被用在需要的地方,并且要理解這些角色會(huì)授予對特權(quán)信息的訪問。

管理員可以用GRANT命令把對這些角色的訪問授予給用戶,例如:

GRANT pg_signal_backend TO admin_user;


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)