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 可讓您透過 Kerberos 進行驗證,並將 Active Directory 做為驗證後端。驗證步驟如下圖所示。

圖片

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

後續步驟