pg_hba.conf 中 md5 和 scram-sha-256 的区别
db: postgresql 11
auth-method
 指定當一個連接匹配這個記錄時,要使用的認證方法。下面對可能的選擇做了概述,詳見第 20.3 節。
trust
 無條件地允許連接。這種方法允許任何可以與PostgreSQL數據庫服務器連接的用戶以他們期望的任意PostgreSQL數據庫用戶身份登入,而不需要口令或者其他任何認證。詳見第 20.4 節。
reject
 無條件地拒絕連接。這有助于從一個組中“過濾出”特定主機,例如一個reject行可以阻塞一個特定的主機連接,而后面一行允許一個特定網絡中的其余主機進行連接。
scram-sha-256
 執行SCRAM-SHA-256認證來驗證用戶的口令。詳見第 20.5 節。
md5
 執行SCRAM-SHA-256或MD5認證來驗證用戶的口令。詳見第 20.5 節。
password
 要求客戶端提供一個未加密的口令進行認證。因為口令是以明文形式在網絡上發送的,所以我們不應該在不可信的網絡上使用這種方式。詳見第 20.5 節。
gss
 用 GSSAPI 認證用戶。只對 TCP/IP 連接可用。詳見第 20.6 節。
sspi
 用 SSPI 來認證用戶。只在 Windows 上可用。詳見第 20.7 節。
ident
 通過聯系客戶端的 ident 服務器獲取客戶端的操作系統名,并且檢查它是否匹配被請求的數據庫用戶名。Ident 認證只能在 TCIP/IP 連接上使用。當為本地連接指定這種認證方式時,將用 peer 認證來替代。詳見第 20.8 節。
peer
 從操作系統獲得客戶端的操作系統用戶,并且檢查它是否匹配被請求的數據庫用戶名。這只對本地連接可用。詳見第 20.9 節。
ldap
 使用LDAP服務器認證。詳見第 20.10 節。
radius
 用 RADIUS 服務器認證。詳見第 20.11 節。
cert
 使用 SSL 客戶端證書認證。詳見第 20.12 節。
pam
 使用操作系統提供的可插入認證模塊服務(PAM)認證。詳見第 20.13 節。
bsd
 使用由操作系統提供的 BSD 認證服務進行認證。詳見第 20.14 節。
==================================================================
20.5. 口令認證
 有幾種基于口令的認證方法。這些方法的過程類似,但是區別在于用戶口令如何被存放在服務器上以及客戶端提供的口令如何被通過連接發送。
scram-sha-256
 方法scram-sha-256按照RFC 7677中的描述執行SCRAM-SHA-256認證。它使用的是一種挑戰-響應的方案,可以防止在不可信連接上對口令的嗅探并且支持在服務器上以一種加密哈希的方式存放口令,因此被認為是安全的。
這是當前提供的方法中最安全的一種,但是舊的客戶端庫不支持這種方法。
md5
 方法md5使用一種自定義的安全性較低的挑戰-響應機制。它能防止口令嗅探并且防止口令在服務器上以明文存儲,但是無法保護攻擊者想辦法從服務器上竊取了口令哈希的情況。此外,現在認為MD5哈希算法對于確定攻擊已經不再安全。
md5方法不能與db_user_namespace特性一起使用。
為了簡化從md5方法到較新的SCRAM方法的轉變,如果在pg_hba.conf中指定了md5但是用戶在服務器上的口令是為SCRAM(見下文)加密的,則將自動選擇基于SCRAM的認證。
password
 方法password以明文形式發送口令,因此它對于口令“嗅探”攻擊很脆弱。如果可能應該盡量避免使用它。不過,如果連接被SSL加密保護著,那么可以安全地使用password(不過如果依靠SSL,SSL證書認證可能是更好的選擇)。
PostgreSQL數據庫口令獨立于操作系統用戶口令。每個數據庫用戶的口令被存儲在pg_authid系統目錄中。口令可以用 SQL 命令CREATE USER和ALTER ROLE管理,例如CREATE ROLE foo WITH LOGIN PASSWORD 'secret’或者psql的\password命令。如果沒有為一個用戶設置口令,那么存儲的口令為空并且對該用戶的口令認證總會失敗。
不同的基于口令的認證方法的可用性取決于用戶的口令在服務器上是如何被加密(或者更準確地說是哈希)的。這由設置口令時的配置參數password_encryption控制。如果口令使用scram-sha-256設置加密,那么它可以被用于認證方法scram-sha-256和password(但后一種情況中口令將以明文傳輸)。如上所釋,在這種情況下,指定的認證方法md5將自動切換到使用scram-sha-256方法。如果口令使用md5設置加密,那么它僅能用于md5和password認證方法說明(同樣,后一種情況中口令以明文傳輸)。(之前的PostgreSQL發行版支持在服務器上存儲明文口令。現在已經不可能了)。要檢查當前存儲的口令哈希,可以參考系統目錄pg_authid。
要把現有的安裝從md5升級到scram-sha-256,可以在確保所有在用的客戶端已經足以支持SCRAM之后,在postgresql.conf中設置password_encryption = ‘scram-sha-256’,然后讓所有用戶設置新口令并且在pg_hba.conf中將認證方法說明改為scram-sha-256.
參考:
 http://postgres.cn/docs/11/auth-pg-hba-conf.html
 http://postgres.cn/docs/11/auth-password.html
總結
以上是生活随笔為你收集整理的pg_hba.conf 中 md5 和 scram-sha-256 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 如何禁止计算机自动安装驱动,安全第一 阻
 - 下一篇: Z4使用简评,极影音是最大亮点,但整体依