PostgreSQL Ident 認證

2021-08-31 15:13 更新

ident 認證方法通過從一個 ident 服務(wù)器獲得客戶端的操作系統(tǒng)用戶名并且用它作為被允許的數(shù)據(jù)庫用戶名(和可選的用戶名映射)來工作。它只在 TCP/IP 連接上支持。

注意

當為一個本地(非 TCP/IP)連接指定 ident 時,將實際使用 peer 認證(見第 20.9 節(jié))。

下列被支持的配置選項用于ident

map

允許系統(tǒng)和數(shù)據(jù)庫用戶名之間的映射。詳見第 20.2 節(jié)

Identification Protocol(標識協(xié)議)在 RFC 1413 中描述。實際上每個類 Unix 操作系統(tǒng)都帶著一個默認監(jiān)聽 TCP 113 端口的 ident 服務(wù)器。ident 服務(wù)器的基本功能是回答類似這樣的問題:哪個用戶從你的端口X發(fā)起了連接并且連到了我的端口Y?。因為當一個物理連接被建立后, PostgreSQL既知道X也知道Y, 所以它可以詢問嘗試連接的客戶端主機上的 ident 服務(wù)器并且在理論上可以判斷任意給定連接的操作系統(tǒng)用戶。

這個過程的缺點是它依賴于客戶端的完整性:如果客戶端機器不可信或者被攻破,攻擊者可能在 113 端口上運行任何程序并且返回他們選擇的任何用戶。因此這種認證方法只適用于封閉的網(wǎng)絡(luò), 這樣的網(wǎng)絡(luò)中的每臺客戶端機器都處于嚴密的控制下并且數(shù)據(jù)庫和操作系統(tǒng)管理員操作時可以方便地聯(lián)系。換句話說,你必須信任運行 ident 服務(wù)器的機器。注意這樣的警告:

 

標識協(xié)議的本意不是作為一種認證或訪問控制協(xié)議。

 
  --RFC 1413

有些 ident 服務(wù)器有一個非標準的選項,它導(dǎo)致返回的用戶名是被加密的,使用的是只有原機器管理員知道的一個密鑰。當與PostgreSQL配合使用 ident 服務(wù)器時,一定不要使用這個選項,因為PostgreSQL沒有任何方法對返回的字符串進行解密以獲取實際的用戶名。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號