全部產品
Search
文件中心

ApsaraDB RDS:RDS PostgreSQL接入自建域

更新時間:Jun 19, 2024

本文介紹如何配置ECS執行個體的AD網域控制站,以及如何將RDS PostgreSQL執行個體接入域。

背景資訊

活動目錄AD(Active Directory),是微軟提供的目錄服務。目錄是一種分層結構,用於儲存同一區域網路絡上對象的資訊。在目錄中可以收錄公司的電腦帳號、使用者帳號、組等以提供更好的安全性和更便捷的管理能力。

RDS PostgreSQL提供接入自建AD域功能,用於公司應用程式中心化管理,同時提升使用者訪問安全性,支援資料庫層級和使用者層級的黑白名單能力。

說明

RDS PostgreSQL對AD網域服務資訊的修改是通過修改RDS PostgreSQL執行個體上pg_hba.conf檔案實現的,修改或匯入AD網域服務資訊的內容即修改執行個體的pg_hba.conf檔案,所以RDS管理主控台除了可以配置AD網域服務之外,還支援其他常用的pg_hba.conf檔案配置,具體參考:PostgreSQL pg_hba.conf介紹

前提條件

  • RDS PostgreSQL執行個體版本需要滿足以下條件。

    • 執行個體大版本:10或以上版本。

    • 核心小版本:大於等於20210228,如需升級核心小版本,請參見升級核心小版本

    • 儲存類型:雲端硬碟儲存。

  • 建立ECS執行個體。RDS PostgreSQL接入自建域必須使用內網,ECS需要滿足以下條件:

    • AD網域控制站所在ECS與目標RDS PostgreSQL執行個體處於相同VPC。

    • ECS安全性群組放通RDS的內網IP。詳情請參見添加安全性群組規則

    • ECS執行個體系統防火牆預設關閉,如果您開啟過,ECS執行個體系統防火牆需要放通RDS的內網IP。

    • 系統鏡像選擇Windows Server 2016及以上版本。

  • 域帳號屬於Domain Admins組。

  • 登入的阿里雲帳號為主帳號。

操作步驟

  1. ECS執行個體配置AD網域控制站。

    1. 遠程登入ECS的Windows Server 2016系統。

      說明

      AD網域控制站需要建立在Windows Server作業系統之上,建議使用Windows Server 2016及以上版本,本樣本以Windows Server 2016為例,建立可供RDS使用的AD網域控制站。

    2. 搜尋伺服器管理員並開啟。

    3. 儀錶盤中單擊添加角色和功能

      添加角色和功能

    4. 添加角色和功能嚮導視窗中進行如下配置。

      嚮導頁簽

      設定說明

      開始之前

      保持預設配置。

      安裝類型

      保持預設配置。

      伺服器選擇

      保持預設配置。

      伺服器角色

      • 選中Active Directory 網域服務,並在彈出的對話方塊中單擊添加功能

      • 選中DNS 伺服器,並在彈出的對話方塊中單擊添加功能

        說明

        如果提示您電腦不是固定IP,建議您修改電腦為固定IP,防止IP自動變更導致DNS伺服器無法使用。

      功能

      保持預設配置。

      AD DS

      保持預設配置。

      DNS 伺服器

      保持預設配置。

      確認

      單擊安裝按鈕開始安裝服務。

    5. 等待安裝完成後,單擊關閉按鈕關閉設定精靈。

    6. 伺服器管理員頁面左側導覽列單擊AD DS,然後在右上方單擊更多

      AD DS更多

    7. 所有伺服器 任務詳細資料視窗中單擊將此伺服器提升為網域控制站

      將此伺服器提升為網域控制站

    8. Active Directory 網域服務設定精靈視窗中進行如下配置。

      嚮導頁簽

      設定說明

      部署配置

      選擇添加新林,設定根網域名稱

      說明

      本文樣本的根網域名稱pgsqldomain.net,其中pgsqldomain為網域名稱首碼,net為網域名稱尾碼,均可以進行自訂,請注意在後文中進行同步修改。

      添加新林,設定網域名稱

      網域控制站選項

      設定目錄服務還原模式(DSRM)密碼設定還原密碼

      伺服器選擇

      取消選中建立 DNS 委派建立 DNS 委派

      其他選項

      保持預設配置。

      路徑

      保持預設配置。

      查看選項

      保持預設配置。

      先決條件檢查

      單擊安裝按鈕開始安裝服務。

      說明

      設定完成後需要重啟ECS伺服器,請等待重啟完成後再進行後續步驟。

  2. AD網域控制站中添加管理使用者。

    1. 遠程登入ECS伺服器,搜尋伺服器管理員並開啟。

    2. 伺服器管理員左側導覽列單擊AD DS,然後在右側目標網域控制站上單擊右鍵,選擇Active Directory 使用者和電腦添加ad使用者

    3. pgsqldomain.net > Users上單擊右鍵,選擇建立 > 使用者添加使用者

      說明

      pgsqldomain.netActive Directory 網域服務設定精靈中設定的根網域名稱,請根據實際情況選擇。

    4. 設定登入的使用者名稱稱,單後單擊下一步建立對象-使用者

    5. 設定登入密碼,勾選密碼永不到期,最後單擊下一步完成設定密碼

    6. 雙擊新建立的使用者,將使用者加入Domain AdminsAdministrator 群組中。加入Administrator 群組

      添加後結果如下:添加Administrator 群組結果

  3. AD網域控制站中添加普通使用者用於登入。

    說明

    添加普通使用者步驟與網域控制站中添加管理使用者方法相同,普通登入使用者不需要加入Domain AdminsAdministrator 群組。

    本樣本以ldapuser使用者為例,作為AD網域控制站中的普通使用者,用於登入RDS PostgreSQL執行個體。

  4. 配置ECS執行個體安全性群組規則。

    1. 登入ECS管理主控台

    2. 在左側導覽列,選擇執行個體與鏡像 > 執行個體

    3. 在頂部功能表列左上方處,選擇地區。

    4. 執行個體列表頁面中,單擊目標執行個體ID。

    5. 在上方導覽列單擊安全性群組頁簽,然後在目標安全性群組右側操作列單擊配置規則

      說明

      網域控制站需要開放較多連接埠,因此不建議和其他ECS執行個體共用安全性群組,建議建立單獨的安全性群組使用。

    6. 入方向頁簽內單擊手動添加,允許如下連接埠訪問ECS執行個體。

      協議類型

      連接埠範圍

      說明

      TCP

      88

      Kerberos認證協議連接埠。

      TCP

      135

      遠端程序呼叫協議(RPC)連接埠。

      TCP/UDP

      389

      輕量型目錄存取通訊協定(LDAP)連接埠。

      TCP

      445

      通用互連網文檔系統協議(CIFS)連接埠。

      TCP

      3268

      Global Catalog連接埠。

      TCP/UDP

      53

      DNS連接埠。

      TCP

      49152~65535

      串連的預設動態連接埠範圍。輸入格式為:49152/65535。

  5. 配置RDS執行個體。

    1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
    2. 建立名為ldapuser的使用者帳號。具體操作請參見建立帳號dbadminrds帳號

      說明

      RDS管理主控台建立的帳號名需要與AD域中建立的普通帳號名相同,密碼可以不一樣,當啟用AD域控制使用者訪問時,校正AD網域控制站中該帳號對應的密碼,當不啟用AD域控制使用者訪問時,系統校正RDS管理主控台的帳號管理中設定的使用者密碼。

    3. 單擊左側導覽列的帳號管理,選擇AD網域服務資訊頁簽。

      首次開啟AD網域服務資訊頁簽,系統預設建立了以下兩條記錄:

      host    all            all    0.0.0.0/0    md5
      host    replication    all    0.0.0.0/0    md5

      該預設配置可以刪除或修改。

    4. 單擊第一條預設記錄後的編輯,修改第一條預設記錄,填寫如下參數取值。

      說明

      下表中僅簡單介紹本樣本使用的取值範例及含義,更多參數取值含義及配置方法請參見PostgreSQL官方文檔

      參數

      取值樣本

      說明

      優先順序

      0

      表示該條記錄的優先順序,0優先順序最高,系統自動產生。修改第一條預設記錄,優先順序為0,表示AD網域服務的配置優先順序最高。

      TYPE

      host

      支援配置以下取值:

      • host:該條記錄驗證TCP/IP串連,包括SSL串連和非SSL串連。

      • hostssl:該條記錄只驗證通過SSL建立的TCP/IP串連。

        說明

        要使用此參數,請開啟SSL鏈路加密,具體請參見SSL鏈路加密

      • hostnossl:該條記錄只驗證通過非SSL建立的TCP/IP串連。

      DATABASE

      all

      允許使用者訪問的資料庫,all表示允許使用者訪問所有資料庫。如果配置多個,可通過逗號(,)分隔。

      USER

      ldapuser

      允許哪些使用者訪問資料庫,填寫AD域中建立的使用者名稱。如果配置多個,可通過逗號(,)分隔。

      說明

      配置在AD域中建立的普通使用者的使用者名稱。

      ADDRESS

      0.0.0.0/0

      允許使用者從哪個或哪些IP訪問資料庫,0.0.0.0/0表示允許使用者從任意IP地址訪問資料庫。

      MASK

      掩碼。如果ADDRESS為IP地址,可以通過此參數指定IP地址的掩碼。

      METHOD

      ldap

      說明

      LDAP(Lightweight Directory Access Protocol,輕量目錄訪問協議)是設計用來訪問目錄資料庫的一個協議,本樣本以LDAP為例。

      認證方法,支援:

      • trust

      • reject

      • scram-sha-256

      • md5

      • password

      • gss

      • sspi

      • ldap

      • radius

      • cert

      • pam

      說明

      手動輸入時請注意此處使用英文小寫字母。

      OPTION

      ldapserver=<ECS伺服器的私網IP> ldapbasedn="CN=Users,DC=<根網域名稱首碼,例如本樣本為pgsqldomain>,DC=<根網域名稱尾碼,例如本樣本為net>" ldapbinddn="CN=<AD域中建立的管理使用者名>,CN=Users,DC=<根網域名稱首碼,例如本樣本為pgsqldomain>,DC=<根網域名稱尾碼,例如本樣本為net>" ldapbindpasswd="<AD域中建立的管理使用者密碼>" ldapsearchattribute="sAMAccountName"

      認證方式對應的選擇性參數。本樣本使用LDAP認證,需要配置。此參數的更多解釋,請參見Authentication Methods

    5. 在上一步配置的AD網域服務記錄後單擊添加,新增如下記錄。

      host    all            all    0.0.0.0/0    md5
    6. 填寫完成後單擊確定,最後單擊提交按鈕

      說明

      提交後系統狀態將變為維護執行個體中,預計時間長度約1分鐘,修改後的新配置僅對新串連生效,對於舊串連,需要您斷開已有串連後重新串連才會生效。

  6. (可選)除手動添加AD網域服務資訊配置外,RDS PostgreSQL還支援通過匯入方式大量設定AD網域服務資訊。匯入AD網域服務資訊

    匯入方式支援以下三總種模式

    • 覆蓋已有服務資訊

    • 追加服務資訊(優先度最高):在已有服務資訊前追加AD域記錄,優先順序高於已有服務資訊。

    • 追加服務資訊(優先度最低):在已有服務資訊最後追加AD域記錄,優先順序低於已有服務資訊。

    配置格式:

    TYPE|DATABASE|USER1|ADDRESS|MASK|METHOD|OPTION

    請在編輯AD域的編輯框中按順序填寫需要匯入的服務資訊。各參數取值請參見參數說明

    配置樣本:

    host|all|<AD域中建立的普通使用者的使用者名稱>|0.0.0.0/0||ldap|ldapserver=<ECS伺服器的私網IP> ldapbasedn="CN=Users,DC=<根網域名稱首碼,例如本樣本為pgsqldomain>,DC=<根網域名稱尾碼,例如本樣本為net>" ldapbinddn="CN=<AD域中建立的管理使用者名>,CN=Users,DC=<根網域名稱首碼,例如本樣本為pgsqldomain>,DC=<根網域名稱尾碼,例如本樣本為net>" ldapbindpasswd="<AD域中建立的管理使用者密碼>" ldapsearchattribute="sAMAccountName"
  7. 測試連接。

    使用PostgreSQL命令列終端串連RDS。

    說明

    串連RDS PostgreSQL資料庫可以通過多種方式,本樣本以PostgreSQL命令列終端為例,串連前需要安裝PostgreSQL用戶端,具體方法及其他串連方式,請參見串連PostgreSQL執行個體

    使用如下命令串連RDS PostgreSQL資料庫,使用在AD網域控制站中普通使用者的使用者名稱及密碼。

    psql -h <執行個體串連地址> -U <AD域中建立的普通使用者的使用者名稱> -p 5432 -d postgres

查看AD域修改記錄

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
  2. 單擊左側導覽列的帳號管理,選擇AD域修改記錄頁簽。

  3. 您可以在操作列查看變更詳情,當修改失敗時,狀態為未生效,您可以單擊變更日誌,查看錯誤資訊。查看AD域修改記錄