本頁說明如何使用一般安全性服務應用程式設計介面 (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 進行驗證。下圖顯示完成驗證的步驟。

- 用戶端
psql會使用金鑰發布中心 (KDC) 中的驗證服務 (AS) 啟動驗證要求。 - AS 會驗證用戶端,並向用戶端核發票證授予票證 (TGT) (T1)。然後使用 TGT 要求服務票證。
- 用戶端會使用 TGT 向 KDC 中的授予票券服務 (TGS) 索取 PostgreSQL 服務的服務票證。用戶端現在要求存取特定 PostgreSQL 伺服器。
- TGS 會驗證 TGT,並向用戶端核發服務票證 (T2)。這張票證包含工作階段金鑰 (T3),並使用 PostgreSQL 伺服器的密鑰加密。
- 用戶端將加密的服務票證 (T2) 傳送至 PostgreSQL 伺服器。
- PostgreSQL 伺服器會使用金鑰 (來自 keytab 檔案) 解密服務票證 (T2),然後擷取工作階段金鑰 (T3) 並驗證票證的真實性。如果這項作業成功,伺服器就會授予存取權,並使用工作階段金鑰與用戶端建立安全通訊管道。
後續步驟
- 將 Active Directory 使用者支援功能與 AlloyDB Omni 整合。
- 在 Kubernetes 上整合 Active Directory 使用者支援。
- 將 Active Directory 群組支援功能與 AlloyDB Omni 整合。
- 在 Kubernetes 整合 Active Directory 群組支援。
- 排解 AlloyDB Omni 中的 Active Directory 整合問題。