ident 驗證方法透過從 ident 伺服器獲取客戶端的作業系統使用者名稱,並將其用作允許的資料庫使用者名稱(可選擇使用者名稱對應)。這僅在 TCP/IP 連線上支援。
當為本機(非 TCP/IP)連線指定 ident 時,將改為使用 peer 驗證(請參閱第 20.9 節)。
以下配置選項支援用於 ident
map
允許在系統和資料庫使用者名稱之間進行對應。 詳情請參閱第 20.2 節。
“識別協定”在RFC 1413中描述。 幾乎每個類 Unix 作業系統都帶有一個 ident 伺服器,預設情況下在 TCP 埠 113 上監聽。 ident 伺服器的基本功能是回答諸如“哪個使用者啟動了從您的埠 X
發出並連線到我的埠 Y
的連線?”之類的問題。 由於 PostgreSQL 在建立實體連線時知道 X
和 Y
,因此它可以查詢連線客戶端主機上的 ident 伺服器,並且理論上可以確定任何給定連線的作業系統使用者。
此過程的缺點是它取決於客戶端的完整性:如果客戶端機器不受信任或已洩露,則攻擊者可以在埠 113 上執行幾乎任何程式,並傳回他們選擇的任何使用者名稱。 因此,此驗證方法僅適用於每個客戶端機器都受到嚴格控制,並且資料庫和系統管理員密切合作的封閉網路。 換句話說,您必須信任執行 ident 伺服器的機器。 注意警告
識別協定不適用於作為授權或存取控制協定。 |
||
--RFC 1413 |
某些 ident 伺服器有一個非標準選項,該選項會導致傳回的使用者名稱被加密,使用只有原始機器管理員知道的金鑰。 將 ident 伺服器與 PostgreSQL 一起使用時,絕對不能使用此選項,因為 PostgreSQL 無法解密傳回的字串以確定實際使用者名稱。
如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。