GHawk

          PostgreSQL的主機認證配置

          轉自 http://www.linuxsir.org/bbs/showthread.php?t=32116

          pg_hba.conf 文件
          客戶端認證是由 $PGDATA 目錄里的文件pg_hba.conf 控制的,也就是說, /usr/local/pgsql/data/pg_hba.conf. (HBA 的意思是 host-based authentication:基于主機的認證.) 在initdb初始化數據區(qū)的時候,它會 安裝一個缺省的文件.

          文件 pg_hba.conf 的常用格式是一套記錄, 每行一條。空白行或者井號(“#”)開頭的行被忽略。一條記錄 是由若干用空格和/或 tab 分隔的字段組成。

          每條記錄可以下面三種格式之一

          local database authentication-method [ authentication-option ]
          host database IP-address IP-mask authentication-method [ authentication-option ]
          hostssl database IP-address IP-mask authentication-method [ authentication-option ]

          各個字段的含義如下:

          local
          這條記錄適用于通過 Unix 域套接字的聯接.

          host
          這條記錄適用于通過 TCP/IP 網絡的聯接.請注意,除非服務器是 帶著 -i 選項或者等效的配置參數集啟動的,否則 TCP/IP 聯接將完全被禁止掉.

          hostssl
          這條記錄適用于試圖建立在 TCP/IP 上的 SSL 之上的聯接. 要使用這個選項,服務器必須帶著 SSL 支持編譯.而且在服務器啟動的時候, 必須用 -l 選項 或等效的配置設置打開 SSL.

          database
          聲明記錄所適用的數據庫。值 all 表明該記錄應用于所有數據庫, 值 sameuser 表示于正在聯接的用戶同名的數據庫。 否則它就是某個具體的 Postgres 數據庫名字.

          IP address, IP mask
          這兩個字段以各主機的 IP 地址為基礎, 控制一條 host 記錄應用于哪個主機. (當然,IP 地址可能會被欺騙(spoofed),但是這個考慮 超過了 Postgres 的考慮范圍.) 準確的邏輯是,對于匹配的記錄

          (actual-IP-address xor IP-address-field) and IP-mask-field
          必需為零.

          authentication method(認證方法)
          聲明一個用戶在與該數據庫聯接的時候必須使用的認證方法. 可能的選擇如下,詳細情況在 Section 4.2.


          trust
          無條件地允許聯接.這個方法允許任何有登錄客戶機權限的用戶以任意 Postgres 數據庫用戶身份進行聯接.

          reject
          聯接無條件拒絕.常用于從組中“過濾”某些主機.

          password
          要求客戶端在嘗試聯接的時候提供一個口令, 這個口令與為該用戶設置的口令必須匹配.

          在 password 關鍵字后面可以聲明一個可選的文件名. 這個文件包含一個用戶列表,列表記錄的是那些適用口令認證記錄的用戶, 以及可選的候選口令.

          口令是以明文的方式在線路上傳輸的.如果要更好的保護,請使用 crypt 方法.

          crypt
          類似 password 方法,但是口令是用一種簡單的 口令對應協(xié)議加密后在線路上傳送的.這么做在密碼學理論上是不安全的, 但可以防止偶然的線路偵聽.在 crypt 關鍵字后面 可以有一個文件,文件里包含適用口令認證記錄的用戶列表.

          krb4
          用 Kerberos V4 認證用戶.只有在進行 TCP/IP 聯接的時候才能用. (譯注:Kerberos,"克爾波洛斯",故希臘神話冥王哈得斯的多頭看門狗. Kerberos 是 MIT 開發(fā)出來的基與對稱加密算法的認證協(xié)議和/或密鑰 交換方法.其特點是需要兩個不同用途的服務器,一個用于認證身份, 一個用于通道兩端用戶的密鑰交換.同時 Kerberos 對網絡時間同步 要求比較高,以防止回放攻擊,因此通常伴隨 NTP 服務.)

          krb5
          用 Kerberos V5 認證用戶.只有在進行 TCP/IP 聯接的時候才能用. (譯注:Kerberos V5 是上面 V4 的改良,主要是不再依賴 DES 算法, 同時增加了一些新特性.)

          ident
          服務器將詢問客戶機上的 ident 服務器以核實正在聯接的用戶身份. 然后 Postgres 核實該操作系統(tǒng)用戶是否被允許以其請求的數據庫用戶身份與數據庫聯接. 只有在使用 TCP/IP 聯接的時候才能用這個選項. 跟在 ident 關鍵字后面的 authentication option 聲明一個 ident map(身份映射), 該文件聲明那些操作系統(tǒng)用戶等效于數據庫用戶.見下文獲取詳細信息.


          authentication option(認證選項)
          這個字段根據不同的認證方法(authentication method)有不同的 解釋.

          認證時使用與聯接請求的客戶端 IP 地址和所要求的 數據庫名字匹配的第一條記錄. 請注意這里沒有 “fall-through(越過)” 或者 “backup(備份)”:如果選定了一條記錄但認證失敗, 那么將不會繼續(xù)考慮下面的記錄.如果沒有匹配的記錄,則拒絕訪問.

          在每次聯接的請求時,文件 pg_hba.conf 都會被重新讀?。虼撕苋菀拙湍茉诜掌鬟\行的時候修改訪問權限.

          在 Example 4-1 里是 pg_hba.conf 的一個例子. 閱讀下文理解不同認證方法的細節(jié).

          Example 4-1. 一個 pg_hba.conf 文件的例子

          # TYPE DATABASE IP_ADDRESS MASK AUTHTYPE MAP

          # 允許在本機上的任何用戶以任何身份聯接任何數據庫
          # 但必須是通過 IP 進行聯接

          host all 127.0.0.1 255.255.255.255 trust

          # 同樣,但用的是 Unix-套接字聯接

          local all trust

          # 允許 IP 地址為 192.168.93.x 的任何主機與數據庫
          # "template1" 相連,用與他們在自己的主機上相同 ident 的用戶名標識他自己
          # (通常是他的 Unix 用戶名)

          host template1 192.168.93.0 255.255.255.0 ident sameuser

          # 允許來自主機 192.168.12.10 的用戶與 "template1" 數據庫聯接,
          # 只要該用戶提供了在 pg_shadow 里正確的口令.

          host template1 192.168.12.10 255.255.255.255 crypt

          # 如果前面沒有其它 "host" 行,那么下面兩行將拒絕所有來自
          # 192.168.54.1 的聯接請求 (因為前面的記錄先匹配
          # 但是允許來自互聯網上其它任何地方有效的 Kerberos V5 認證的聯接
          # 零掩碼表示不考慮主機 IP 的任何位.因此它匹配任何主機:

          host all 192.168.54.1 255.255.255.255 reject
          host all 0.0.0.0 0.0.0.0 krb5

          # 允許來自 192.168.x.x 的任何用戶與任意數據庫聯接,只要他們通過 ident 檢查
          # 但如果 ident 說該用戶是 "bryanh" 而他要求以 PostgreSQL 用戶 "guest1" 聯接,
          # 那么只有在 `pg_ident.conf' 里有 "omicron" 的映射,說 "bryanh" 允許以
          # "guest1" 進行聯接時才真正可以進行聯接.

          host all 192.168.0.0 255.255.0.0 ident omicron

          posted on 2006-06-07 10:42 GHawk 閱讀(1216) 評論(0)  編輯  收藏 所屬分類: 其他

          主站蜘蛛池模板: 秦皇岛市| 潞城市| 嘉禾县| 横山县| 翼城县| 金寨县| 鹤峰县| 民勤县| 阳泉市| 呼图壁县| 阳高县| 西乌| 商丘市| 五寨县| 文昌市| 屯留县| 上思县| 新巴尔虎右旗| 泽州县| 开化县| 浦北县| 咸阳市| 双鸭山市| 陆丰市| 从江县| 固阳县| 营口市| 海宁市| 万安县| 东平县| 京山县| 凤山县| 汝阳县| 蒙城县| 新乡县| 阳城县| 华宁县| 宜黄县| 安国市| 兴宁市| 赣榆县|