從小白到專家 PG技術(shù)大講堂 - Part 9:pg_hba.conf配置

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內(nèi)容包括對PG基礎(chǔ)的認知、包括安裝使用、包括角色權(quán)限、包括維護管理、、等內(nèi)容,希望對熱愛PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
Part 9:實例連接訪問控制
內(nèi)容1:PG實例訪問控制概述
內(nèi)容2:pg_hba.conf 文件
內(nèi)容3:pg_hba.conf 名單格式
內(nèi)容4:pg_hba.conf 常見配置實例
9.1、PG實例訪問控制概述
?實例訪問控制就像是一道防火墻,用它來控制來自于不同主機、不同用戶是否允許訪問指定的數(shù)據(jù)庫、以及驗證方式。

9.2、pg_hba.conf文件
?客戶端認證是由一個配置文件(通常名為pg_hba.conf并被存放在數(shù)據(jù)目錄中)控制(HBA表示基于主機的認證)。
?在initdb初始化數(shù)據(jù)目錄時,它會安裝一個默認的pg_hba.conf文件。不過我們也可以把認證配置文件放在其它地方。
?pg_hba.conf文件的常用格式是一組記錄,每行一條??瞻仔袑⒈缓雎裕?#注釋字符后面的任何文本也被忽略。記錄不能跨行。
?一條記錄由若干用空格/或制表符分隔的域組成。如果域值用雙引號包圍,那么它可以包含空格。在數(shù)據(jù)庫、用戶或地址域中 引用一個關(guān)鍵字(例如,all或replication) 將使該詞失去其特殊 含義,并且只是匹配一個有該名字的數(shù)據(jù)庫、用戶或主機。
9.3、pg_hba.conf名單格式
?TYPE:指定連接類型?
?local:表示本地連接,只對Unix/Linux系統(tǒng)有效,使用socket方式登錄?
?host:表示主機通過TCP/IP連接?
?hostssl:表示主機連接需要SSL加密方式連接
?DATABASE:指定連接的數(shù)據(jù)庫?
?all:表示所有的數(shù)據(jù)庫?
?db_name:表示指定的數(shù)據(jù)庫?
?replication:表示主備復(fù)制時的連接?
?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地址或者網(wǎng)段
pg_hba.conf 示例:
host all +g1 0.0.0.0/0 md5 #g1組
host all u1 192.168.18.0/24 md5 #某個網(wǎng)段
?METHOD:指定驗證方式
?trust:信任客戶端連接,無需提供密碼?
?scram-sha-256:這是當(dāng)前提供的方法中最安全的一種,但是舊的客戶端庫不支持這種方法。?
?md5:它能防止口令嗅探并且防止口令在服務(wù)器上以明文存儲,但是無法保護攻擊者想辦法從服務(wù)器上竊取了口令哈希的情況。?
?password:方法password以明文形式發(fā)送口令,因此它對于口令“嗅探”攻擊很脆弱。?
?ident:該模式下系統(tǒng)會將請求發(fā)起者的操作系統(tǒng)用戶映射為PostgesSQL數(shù)據(jù)庫內(nèi) 部用戶,并以該內(nèi)部用戶的權(quán)限登錄,且此時無需提供登錄密碼。操作系統(tǒng)用戶 與數(shù)據(jù)庫內(nèi)部用戶之間的映射關(guān)系會記錄在pg_ident.conf文件中。?
?peer:該模式使用連接發(fā)起端的操作系統(tǒng)名進行身份驗證。僅限于Linux、BSD、 Mac OS X和Solaris,并且僅可用于本地服務(wù)器發(fā)起的連接。
?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實例連接訪問控制 的內(nèi)容,歡迎進群一起探討交流
釘釘交流群:358,22,460,本周六晚上8點會在釘釘群專門講解