Active Directory 總覽

本頁說明如何使用一般安全性服務應用程式設計介面 (GSSAPI),在 AlloyDB Omni 中將 PostgreSQL 與 Active Directory 整合,並介紹重要的 Kerberos 概念。Kerberos 是 Active Directory 採用的驗證通訊協定。

Active Directory 是 Microsoft 為 Windows 網域網路開發的目錄服務。Active Directory 是集中式標準系統,可自動管理使用者資料、安全性及分散式資源的網路。這項目錄服務提供單一管理點,可用於管理使用者帳戶、群組和其他網路物件。Active Directory 的主要功能是驗證,可確認使用者的身分和授權,並授予使用者存取網路上特定資源的權限。

Active Directory 元件

領域是 Kerberos 驗證的管理網域。在 Active Directory 中,領域等同於 Active Directory 網域。領域代表共用通用驗證資料庫的使用者、電腦和服務邏輯群組。設定 Kerberos 時,您必須指定用戶端和服務所屬的領域。領域是大寫版本的網域名稱,例如,如果網域是 ad.example.com,則領域為 AD.EXAMPLE.COM。

金鑰分配中心 (KDC) 是核心 Kerberos 服務,在 Active Directory 的每個網域控制器上執行。KDC 的主要功能如下:

  • 驗證服務 (AS):在使用者首次登入時驗證身分,例如登入 Windows 時,並核發授權票證 (TGT)。
  • 票證授予服務 (TGS):向出示有效 TGT 的已驗證使用者核發服務票證。這些服務票證可授予特定服務的存取權,例如 PostgreSQL 資料庫。

「主體」是 Kerberos 領域中的專屬身分,可指派票證。以下是主要類型的主體:

  • 使用者主體:代表人類使用者,例如 username@REALM。
  • 服務主體 (SPN):代表特定主機上的特定服務,例如 postgres/db-server.ad.example.com@REALM。用戶端必須為資料庫註冊 SPN,才能要求資料庫的服務票證。

keytab 或金鑰表檔案包含主體清單和對應的私密金鑰,這些金鑰衍生自主體的密碼。服務會使用 keytab 檔案向 KDC 證明自己的身分,並解密用戶端提供的服務票證。

這種做法可讓 PostgreSQL 等服務向 Kerberos 系統驗證自身,不必人為互動,也不會在伺服器上儲存純文字密碼。keytab 檔案極為機密,必須妥善儲存及保護。

PostgreSQL 與 Active Directory 整合

將 PostgreSQL 與 Active Directory 整合後,您就能根據公司身分集中管理使用者,進而提升資料庫安全性。

為支援驗證,PostgreSQL 提供下列與 Active Directory 整合的方法:

  • 輕量型目錄存取通訊協定 (LDAP):您可以設定 PostgreSQL,使用 LDAP 通訊協定對 Active Directory 伺服器驗證使用者。當使用者嘗試連線至資料庫時,PostgreSQL 會透過 LDAP 與 Active Directory 目錄伺服器通訊,驗證使用者的憑證 (通常是使用者名稱和密碼)。這個方法會使用 Active Directory 做為外部驗證供應商。

  • 採用 Kerberos 的一般安全性服務應用程式設計介面 (GSSAPI):這是一種更安全且複雜的方法,使用 Kerberos 通訊協定,這是 Active Directory 中的預設驗證機制。GSSAPI 提供標準介面,讓應用程式存取安全性服務。

雖然 LDAP 和 GSSAPI 都能整合 Active Directory,但 GSSAPI 搭配 Kerberos 採用強大的票證式密碼編譯驗證機制,因此在企業環境中是更安全、更穩健的做法。本頁說明如何使用 GSSAPI 方法,為 AlloyDB Omni 實作 Active Directory 整合。

使用 GSSAPI 進行 Active Directory 驗證

AlloyDB Omni 可讓您使用 Active Directory 做為驗證後端,透過 Kerberos 進行驗證。下圖顯示完成驗證的步驟。

圖片

  1. 用戶端 psql 會使用金鑰發布中心 (KDC) 中的驗證服務 (AS) 啟動驗證要求。
  2. AS 會驗證用戶端,並向用戶端核發票證授予票證 (TGT) (T1)。然後使用 TGT 要求服務票證。
  3. 用戶端會使用 TGT 向 KDC 中的授予票券服務 (TGS) 索取 PostgreSQL 服務的服務票證。用戶端現在要求存取特定 PostgreSQL 伺服器。
  4. TGS 會驗證 TGT,並向用戶端核發服務票證 (T2)。這張票證包含工作階段金鑰 (T3),並使用 PostgreSQL 伺服器的密鑰加密。
  5. 用戶端將加密的服務票證 (T2) 傳送至 PostgreSQL 伺服器。
  6. PostgreSQL 伺服器會使用金鑰 (來自 keytab 檔案) 解密服務票證 (T2),然後擷取工作階段金鑰 (T3) 並驗證票證的真實性。如果這項作業成功,伺服器就會授予存取權,並使用工作階段金鑰與用戶端建立安全通訊管道。

後續步驟