PostgreSQL訪問控制,允許&禁止指定IP訪問

PostgreSQL中允許哪些IP的機器能夠訪問數據庫是由配置文件pg_hba.conf控制的,通過配置該文件,能夠指定哪些ip可以訪問,哪些ip不可以訪問,以及訪問的認證方式。hba是host-based authentication的縮寫。

原文地址:
https://mytecdb.com/blogDetail.php?id=77

initdb在初始化數據目錄的時候,會生成一個默認的pg_hba.conf文件。pg_hba.conf文件格式由多條記錄組成,每條記錄佔一行,#開頭爲註釋,這些記錄控制着客戶端訪問數據庫的權限和認證方式。

先看一個PostgreSQL默認生成的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

1. 語法

local <dbname> <user> <auth-method> [auth-options]

host <dbname> <user> <ip/masklen> <auth-method> [auth-options]

例子:

本地socket連接
local all all trust

IPv4本地連接
host all all 127.0.0.1/32 trust

允許所有IP使用md5加密的口令訪問
host all all 0.0.0.0/0 md5

2. 字段取值詳解

2.1 第一個字段,主機類型
  • local,匹配本地socket方式連接數據庫
  • host,匹配TCP/IP網絡協議連接,包括SSL和非SSL
  • hostssl,匹配TCP/IP網絡協議連接,必須是SSL加密的連接
  • hostnossl,匹配TCP/IP網絡協議連接,必須非SSL加密的
2.2 第二個字段,數據庫名稱

一行記錄的第二個字段,用於設置一個數據庫名稱,設置all表示可以匹配任何數據庫,設置爲replication表示允許流複製,而不是一個名叫“replication”的數據庫。

2.3 第三個字段,用戶名稱

一行記錄的第三個字段,表示一個用戶名稱,設置爲all,匹配所有用戶。

2.4 第四個字段,IP地址

一行記錄的第四個字段,<ip/masklen>表示允許哪些IP地址來訪問,也可以匹配ip段,如192.168.56.0/24。配置爲0.0.0.0/0 表示匹配任意IP。

2.5 第五個字段,認證方式

一行記錄的第五個字段,表示驗證方法,常用的有trust,reject,md5,ident等。

  • trust,無條件的允許連接,不需要密碼或其他認證
  • reject,無條件的拒絕連接
  • md5,要求客戶端提供一個MD5加密的口令進行認證
  • password,要求客戶端提供一個未加密的口令進行認證
  • gss,用GSSAPI認證用戶
  • sspi,用SSPI認證用戶
  • krb5,用Kerberos V5認證用戶
  • ident,允許客戶端上的特定操作系統用戶連接到數據庫
  • ldap,用LDAP服務器認證
  • radius,用RADIUS服務器認證
  • cert,用SSL客戶端證書認證
  • pam,用操作系統提供的可插入認證模塊服務(PAM)來認證
2.6 第六個字段,認證選項

一行記錄的第六個字段,[auth-options] 表示認證選項,也可以不指定。


注:
修改pg_hba.conf配置文件後,需要重新加載生效。
service postgresql reload
或者
pg_ctl reload -D data_dir
或者
select pg_reload_conf();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章