支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11

20.8. Ident 驗證 #

ident 驗證方法透過從 ident 伺服器獲取客戶端的作業系統使用者名稱,並將其用作允許的資料庫使用者名稱(可選擇使用者名稱對應)。這僅在 TCP/IP 連線上支援。

注意

當為本機(非 TCP/IP)連線指定 ident 時,將改為使用 peer 驗證(請參閱第 20.9 節)。

以下配置選項支援用於 ident

map

允許在系統和資料庫使用者名稱之間進行對應。 詳情請參閱第 20.2 節

識別協定RFC 1413中描述。 幾乎每個類 Unix 作業系統都帶有一個 ident 伺服器,預設情況下在 TCP 埠 113 上監聽。 ident 伺服器的基本功能是回答諸如哪個使用者啟動了從您的埠 X 發出並連線到我的埠 Y 的連線?之類的問題。 由於 PostgreSQL 在建立實體連線時知道 XY,因此它可以查詢連線客戶端主機上的 ident 伺服器,並且理論上可以確定任何給定連線的作業系統使用者。

此過程的缺點是它取決於客戶端的完整性:如果客戶端機器不受信任或已洩露,則攻擊者可以在埠 113 上執行幾乎任何程式,並傳回他們選擇的任何使用者名稱。 因此,此驗證方法僅適用於每個客戶端機器都受到嚴格控制,並且資料庫和系統管理員密切合作的封閉網路。 換句話說,您必須信任執行 ident 伺服器的機器。 注意警告

 

識別協定不適用於作為授權或存取控制協定。

 
  --RFC 1413

某些 ident 伺服器有一個非標準選項,該選項會導致傳回的使用者名稱被加密,使用只有原始機器管理員知道的金鑰。 將 ident 伺服器與 PostgreSQL 一起使用時,絕對不能使用此選項,因為 PostgreSQL 無法解密傳回的字串以確定實際使用者名稱。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。