PostgreSQL數據庫客戶端驗證 (四)


身份驗證是數據庫服務器建立客戶端身份的過程,並通過擴展確定是否允許客戶端應用程序(或運行客戶端應用程序的用戶)與所請求的數據庫用戶名連接。

可以基於(客戶端)主機地址,數據庫和用戶來選擇用於認證特定客戶端連接的方法。


- 1.pg_hba.conf文件:

    客戶端身份驗證由pg_hba.conf配置文件控制。存儲在數據庫的數據目錄中。


    記錄方式:
        連接類型    數據庫名稱  用戶名    客戶端IP地址範圍    用於匹配這些參數的連接的身份驗證方法
    連接類型: 
        local : 匹配使用Unix域套接字的連接嘗試。
        host : 匹配使用TCP/IP進行的連接嘗試, host記錄匹配SSL或非SSL連接嘗試。
        hostssl : 匹配使用TCP/IP進行的連接嘗試,僅限使用SSL加密進行連接時。
        hostnossl : 僅匹配通過TCP/IP進行的不使用SSL的連接嘗試
    database : 記錄匹配的數據庫名稱. all指定匹配所有數據庫。可以通過用逗號分隔來提供多個數據庫名稱。
    user : 匹配的數據庫用戶名. 用逗號分隔來提供多個用戶名.
    address :  匹配的客戶端計算機地址. 可包括主機名或IP地址範圍。 0.0.0.0/0表示所有IPv4地址,::0/0表示所有IPv6地址。

        

    METHOD :  
        記錄匹配時要使用的身份驗證方法。
        trust : 允許無條件連接。允許所有連接,無需密碼和其他身份驗證。
        reject : 無條件拒絕連接。
        scram-sha-256 : 執行SCRAM-SHA-256身份驗證以驗證用戶的密碼。
        MD5 : 執行SCRAM-SHA-256或MD5身份驗證以驗證用戶的密碼。
        password : 要求客戶端提供未加密的密碼以進行身份驗證。網絡明文傳送,不安全。
        gss : 使用GSSAPI對用戶進行身份驗證。這僅適用於TCP/IP連接.
        ident : 與客戶端的ident服務器獲取客戶端主機的用戶名。並檢查它是否與請求的數據庫用戶名匹配。Ident身份驗證只能用於TCP/IP連接。
        peer : 從操作系統獲取主機名,僅適用於本地連接
        cert : 使用SSL客戶端證書進行身份驗證。
        pam : 使用操作系統提供的可插入身份驗證模塊(PAM)服務進行身份驗證。



- 2. ident用戶名: 配置文件:pg_ident.conf

    記錄格式: MAPNAME       SYSTEM-USERNAME         PG-USERNAME
    用戶名映射在ident映射文件中定義.



- 3. 認證方法:

    信任認證: 
        在與服務器的連接上有足夠的操作系統級保護時,才應使用.
        trust如果使用文件系統權限限制對服務器的Unix域套接字文件的訪問,則可以在多用戶計算機上使用.
    密碼認證:
        scram-sha-256身份認證:
            防止密碼嗅探不受信任的連接,並支持以加密的哈希形式在服務器上存儲密碼.
        md5:
            防止密碼嗅探並避免以明文形式在服務器上存儲密碼.
        
        優選選擇基於SCRAM的身份驗證。
        password 明文形式發送密碼,連接受SSL加密保護纔可使用。
        
        每個數據庫用戶的密碼都存儲在pg_authid系統目錄中



- 4. GSSAPI身份驗證:

       GSSAPI提供了一種用於支持它的系統自動認證(單點登錄)。身份驗證本身是安全的.除非使用SSL。
       構建PostgreSQL時必須啓用GSSAPI支持。
    身份驗證:
        ident身份驗證方法的工作原理是從身份服務器獲取客戶端的操作系統用戶名,
        並將其用作允許的數據庫用戶名,在TCP / IP連接上受支持.
    對等身份驗證:
        對等身份驗證方法的工作原理是從內核獲取客戶端的操作系統用戶名,
        並將其用作允許的數據庫用戶名.僅在本地連接時支持。
    
    證書認證:
        使用SSL客戶端證書執行身份驗證. 僅適用於SSL連接.
        使用此身份驗證方法時,服務器將要求客戶端提供有效的可信證書。沒有密碼提示將被髮送到客戶端。
        cn證書的(公共名稱)屬性將與請求的數據庫用戶名進行比較,如果匹配,則允許登錄.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章