天天看點

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證書的(公共名稱)屬性将與請求的資料庫使用者名進行比較,如果比對,則允許登入.      

繼續閱讀