1. 程式人生 > >pg_hba.conf檔案說明與配置

pg_hba.conf檔案說明與配置

客戶端訪問和認證受到標準的PostgreSQL的基於主機的認證檔案(pg_hba.conf)的控制。在Greenplum資料庫中,Master例項的pg_hba.conf檔案控制對Greenplum資料庫系統的客戶端訪問及認證。Greenplum資料庫的Segment也有pg_hba.conf檔案,它們被配置來只允許來自Master主機的客戶端連線並且永不接受客戶端連線。不要在Segment上更改pg_hba.conf檔案。

格式

pg_hba.conf檔案的一般格式是一組記錄,每行一個。一個記錄由多個被空格或者製表符分隔的域組成。如果域值被加上引號,域可以包含空格。記錄不能跨越多行。
每一行的格式為:

連線方式	連線的資料庫	連線的使用者	連線的主機IP	認證方式

每一個遠端客戶端訪問記錄具有如下的格式:

host   database   role   CIDR-address   authentication-method

每一個UNIX-域套接字記錄具有如下的格式:

local   database   role   authentication-method
連線方式

連線方式有四種:local 、host、hostssl、hostnossl

local
這條記錄匹配通過 Unix 域套接字進行的聯接企圖, 沒有這種型別的記錄,就不允許 Unix 域套接字的聯接。

host
這條記錄匹配通過TCP/IP網路進行的聯接嘗試。他既匹配通過ssl方式的連線,也匹配通過非ssl方式的連線。

注意:要使用該選項你要在postgresql.conf檔案裡設定listen_address選項,不在listen_address裡的IP地址是無法匹配到的。因為預設的行為是隻在localhost上監聽本地連線。

hostssl
這條記錄匹配通過在TCP/IP上進行的SSL聯接企圖。

要使用該選項,伺服器編譯時必須使用–with-openssl選項,並且在伺服器啟動時ssl設定是開啟的,具體內容可見這裡。

hostnossl
這個和上面的hostssl相反,只匹配通過在TCP/IP上進行的非SSL聯接企圖。

資料庫

指定這一記錄匹配的資料庫名。值all指定它匹配所有資料庫。可以提供多個數據庫名,用逗號分隔它們。在檔名前面放一個@,可以指定一個含有資料庫名的單獨的檔案。

使用者名稱

指定這一記錄匹配的資料庫角色名。值all指定它匹配所有角色。如果指定的角色是一個組並且希望該組中的所有成員都被包括在內,在該角色名前面放一個+。可以提供多個角色名,用逗號分隔它們。在檔名前面放一個@,可以指定一個含有角色名的單獨的檔案。

主機IP

指定這一記錄匹配的客戶端機器的IP地址範圍。它包含一個標準點分十進位制表示的IP地址和一個CIDR掩碼長度。IP地址只能用數字指定,不能寫成域或者主機名。掩碼長度指示客戶端IP地址必須匹配的高位位數。給定IP地址中,在這些位的右邊必須是零。IP地址、/和CIDR掩碼長度之間不能有任何空格。
典型的CIDR地址例子是:192.0.2.89/32是一個單一主機,192.0.2.0/24是一個小網路,10.6.0.0/16是一個大網路。要指定一個單一主機,對IPv4使用一個CIDR掩碼32,對IPv6使用128。在一個網路地址中,不要省略拖尾的零。

ip地址(ip-address)、子網掩碼(ip-mask)

這兩個欄位包含可以看成是標準點分十進位制表示的 IP地址/掩碼值的一個替代。
例如,使用255.255.255.0 代表一個24位的子網掩碼。它們倆放在一起,聲明瞭這條記錄匹配的客戶機的 IP 地址或者一個IP地址範圍。本選項只能在連線方式是host,hostssl或者hostnossl的時候指定。

認證方法

常用的認證方法有:
trust
無條件地允許聯接,這個方法允許任何可以與PostgreSQL 資料庫聯接的使用者以他們期望的任意 PostgreSQL 資料庫使用者身份進行聯接,而不需要口令。

reject
聯接無條件拒絕,常用於從一個組中"過濾"某些主機。

md5
要求客戶端提供一個 MD5 加密的口令進行認證,這個方法是允許加密口令儲存在pg_shadow裡的唯一的一個方法。

password
和"md5"一樣,但是口令是以明文形式在網路上傳遞的,我們不應該在不安全的網路上使用這個方式。

示例
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all            all             10.10.56.17/32             md5

上述表示允許IP地址為10.10.56.17的所有使用者可以通過MD5的密碼驗證方式連線主機上所有的資料庫。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    test            pgtest           10.10.56.17/32             md5

上述表示允許地址為 10.10.56.17 的使用者 pgtest通過 MD5加密方式連線主機上的 test 資料庫。

 host    all    all    10.1.1.0/24    md5

上述表示允許10.1.1.0~10.1.1.255網段登入資料庫。

host    test            pgtest           0.0.0.0/0               trust

表示任意IP地址的使用者 pgtest 無需密碼驗證可直接連線訪問該主機的 test 資料庫。

使用

pg_hba.conf修改後,使用pg_ctl reload重新讀取pg_hba.conf檔案使其生效。在greenplum中,使用gpstop -u命令來重新裝載pg_hba.conf配置檔案來讓更改生效。
參考:
1.https://gp-docs-cn.github.io/docs/admin_guide/client_auth.html
2.https://blog.csdn.net/yaoqiancuo3276/article/details/80404883
3.https://www.cnblogs.com/flying-tiger/p/5983588.html
4.https://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html