PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,内容包括對PG基礎的認知、包括安裝使用、包括角色權限、包括維護管理、、等内容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
Part 9:執行個體連接配接通路控制
内容1:PG執行個體通路控制概述
内容2:pg_hba.conf 檔案
内容3:pg_hba.conf 名單格式
内容4:pg_hba.conf 常見配置執行個體
9.1、PG執行個體通路控制概述
執行個體通路控制就像是一道防火牆,用它來控制來自于不同主機、不同使用者是否允許通路指定的資料庫、以及驗證方式。
9.2、pg_hba.conf檔案
用戶端認證是由一個配置檔案(通常名為pg_hba.conf并被存放在資料目錄中)控制(HBA表示基于主機的認證)。
在initdb初始化資料目錄時,它會安裝一個預設的pg_hba.conf檔案。不過我們也可以把認證配置檔案放在其它地方。
pg_hba.conf檔案的常用格式是一組記錄,每行一條。空白行将被忽略, #注釋字元後面的任何文本也被忽略。記錄不能跨行。
一條記錄由若幹用空格/或制表符分隔的域組成。如果域值用雙引号包圍,那麼它可以包含空格。在資料庫、使用者或位址域中 引用一個關鍵字(例如,all或replication) 将使該詞失去其特殊 含義,并且隻是比對一個有該名字的資料庫、使用者或主機。
9.3、pg_hba.conf名單格式
TYPE:指定連接配接類型
local:表示本地連接配接,隻對Unix/Linux系統有效,使用socket方式登入
host:表示主機通過TCP/IP連接配接
hostssl:表示主機連接配接需要SSL加密方式連接配接
DATABASE:指定連接配接的資料庫
all:表示所有的資料庫
db_name:表示指定的資料庫
replication:表示主備複制時的連接配接
USER:指定連接配接的使用者
all:表有所有使用者 ? user_name:表示指定的使用者
+group_name:表示一組使用者
@file_name:表示檔案中包含的使用者清單
ADDRESS:指定連接配接的用戶端
127.0.0.1/32:表示本地用戶端主機
0.0.0.0/0:表示所有用戶端主機
host_name:表示指定的主機名(hosts檔案中包含)
ip_addr/net_mask:表示指定的ip位址或者網段
pg_hba.conf 示例:
host all +g1 0.0.0.0/0 md5 #g1組
host all u1 192.168.18.0/24 md5 #某個網段
METHOD:指定驗證方式
trust:信任用戶端連接配接,無需提供密碼
scram-sha-256:這是目前提供的方法中最安全的一種,但是舊的用戶端庫不支援這種方法。
md5:它能防止密碼嗅探并且防止密碼在伺服器上以明文存儲,但是無法保護攻擊者想辦法從伺服器上竊取了密碼哈希的情況。
password:方法password以明文形式發送密碼,是以它對于密碼“嗅探”攻擊很脆弱。
ident:該模式下系統會将請求發起者的作業系統使用者映射為PostgesSQL資料庫内 部使用者,并以該内部使用者的權限登入,且此時無需提供登入密碼。作業系統使用者 與資料庫内部使用者之間的映射關系會記錄在pg_ident.conf檔案中。
peer:該模式使用連接配接發起端的作業系統名進行身份驗證。僅限于Linux、BSD、 Mac OS X和Solaris,并且僅可用于本地伺服器發起的連接配接。
reject:該模式表示拒絕所有請求。
9.4、pg_hba.conf常見配置執行個體
常見配置執行個體
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
host all +g1 192.168.18.0/24 md5
host all cuug 0.0.0.0/0 identmap=cuug
以上就是Part 9 - PostgreSQL執行個體連接配接通路控制 的内容,歡迎進群一起探讨交流
釘釘交流群:358,22,460,本周六晚上8點會在釘釘群專門講解