postgresql訪問認證設置
安裝postgresql是一件很簡單的事,但是當我第一次安裝了postgresql以后,它的安全設置曾經讓我困擾過一陣,現在我將以我的經歷為線索來講述如何配置postgresql的訪問認證,postg
安裝postgresql是一件很簡單的事,但是當我第一次安裝了postgresql以后,它的安全設置曾經讓我困擾過一陣,現在我將以我的經歷為線索來講述如何配置postgresql的訪問認證,postgresql的版本是7.3.1,老一點的版本在配置文件上會有稍許不同,請自己注意區(qū)別。另外,在閱讀中,請注意區(qū)分數據庫用戶和系統(tǒng)用戶的區(qū)別,以免混淆。
postgresql的訪問認證配置主要涉及到兩個主要的配置文件:postgresql.conf和pg_hba.conf。
postgresql.conf包含了許多的選項,這些選項控制了postgresql.conf的方方面面,中間影響訪問認證的選項是:
unix_socket_group
設置 Unix 域套接字的組所有人,(套接字的所有權用戶總是啟動 postmaster 的用戶)與 UNIX_SOCKET_PERMISSIONS 選項一起使用可以給這種套接字類型增加額外的訪問控制機制,缺省時是一個空字串,也就是使用當前用戶的缺省的組, 這個選項只能在服務器啟動時設置。
unix_socket_permissions
給 Unix 域套接字設置訪問權限,Unix 域套接字使用通常的 Unix 文件系統(tǒng)權限集??蛇x的值可以是一個 chmod 和 umask 系統(tǒng)調用可以接受的數字模式。(要使用客戶化的八進制格式,該數字必須以 0 (零)開頭)
缺省權限是 0777,意即任何人都可以聯接,合理的選則可能是0770 (只有用戶和組, 參閱UNIX_SOCKET_GROUP)和 0700 (只有用戶)。(請注意對于 Unix 套接字而言,實際上只有寫權限有意義,而且 也沒有辦法設置或者取消讀或執(zhí)行權限)
這個選項只能在服務器啟動時設置。
pg_hba.conf是設置訪問認證的主要文件,格式為每條記錄一行,每行指定一條訪問認證。設定一條訪問認證包含了7個部分:連接方式(type)、數據庫(database)、用戶名(user)、ip地址(ip-address)、子網掩碼(ip-mask)、認證方法(authentication method)、認證配置(authentication-option),以下是這7個部分的詳細說明:
連接方式(type)
連接方式共有三種:local、host、hostssl
local
這條記錄匹配通過 Unix 域套接字進行的聯接企圖, 沒有這種類型的記錄,就不允許 Unix 域套接字的聯接。
host
這條記錄匹配通過 TCP/IP 網絡進行的聯接嘗試,請注意,除非服務器是 帶著 -i 選項或者打開了 postgresql.conf 里面的 tcpip_socket 配置參數集啟動的,否則 TCP/IP 聯接是被禁止掉的。
hostssl
這條記錄匹配通過在 TCP/IP 上進行的 SSL 聯接企圖, host 記錄可以匹配 SSL 和非 SSL 的聯接企圖, 但 hostssl 記