2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: 開發版
不支援的版本: 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 伺服器有一個非標準選項,它會導致返回的使用者名稱被加密,使用的是隻有原始機器管理員知道的金鑰。當與 PostgreSQL 一起使用 ident 伺服器時,不得 使用此選項,因為 PostgreSQL 無法解密返回的字串來確定實際使用者名稱。

提交更正

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