使用 Azure Cosmos DB for PostgreSQL 進行 Microsoft Entra ID 和 PostgreSQL 驗證
適用於: Azure Cosmos DB for PostgreSQL (由 PostgreSQL 的超大規模 (Citus) 資料庫延伸模組提供)
Azure Cosmos DB for PostgreSQL 支援 PostgreSQL 驗證,並與 Microsoft Entra ID 整合。 每個 Azure Cosmos DB for PostgreSQL 叢集都是使用已啟用原生 PostgreSQL 驗證和一個名為 citus
的內建 PostgreSQL 角色來建立。 完成叢集布建之後,您可以新增更多原生 PostgreSQL 角色。
除了 PostgreSQL 驗證方法之外,您也可以在叢集上啟用 Microsoft Entra ID (先前稱為 Azure Active Directory) 驗證,或加以取代。 您可以在每個 Azure Cosmos DB for PostgreSQL 叢集上獨立設定驗證方法。 如果您需要變更驗證方法,您可以在叢集佈建完成之後隨時執行。 變更驗證方法不需要重新啟動叢集。
PostgreSQL 驗證
PostgreSQL 引擎會使用角色來控制資料庫物件的存取。 新建立的 Azure Cosmos DB for PostgreSQL 叢集隨附數個預先定義的角色:
- 預設 PostgreSQL 角色
postgres
citus
由於 Azure Cosmos DB for PostgreSQL 是受控 PaaS 服務,因此只有 Microsoft 可以使用 postgres
超級使用者角色登入。 針對有限的系統管理存取權,Azure Cosmos DB for PostgreSQL 提供 citus
角色。
受控服務必須將所有PostgreSQL角色複寫至叢集中的所有節點。 為了方便這項需求,必須使用 Azure Cosmos DB for PostgreSQL 管理功能來建立所有其他 PostgreSQL 角色。
超大規模 (Citus) 角色
citus
角色的權限:
- 讀取所有組態變數,甚至是通常只有超級使用者才可見的變數。
- 讀取所有 pg_stat_* 檢視表,並使用各種統計資料相關的延伸模組,甚至是通常只有超級使用者才可見的檢視表或延伸模組。
- 執行可能在資料表上長時間佔有 ACCESS SHARE 鎖定的監視函式。
- 建立 PostgreSQL 擴充功能。
值得注意的是,citus
角色有一些限制:
- 無法建立角色
- 無法建立資料庫
無法刪除 citus
角色,但如果叢集上選取 [僅限 Microsoft Entra ID 驗證] 驗證方法,則會停用。
Microsoft Entra ID 驗證
Microsoft Entra ID (先前稱為 Azure Active Directory) 驗證是使用 Microsoft Entra ID 中定義的身分識別連線到 Azure Cosmos DB for PostgreSQL 的機制。 透過 Microsoft Entra ID 驗證,您可以在集中的位置管理資料庫使用者的身分識別和其他 Microsoft 服務,從而簡化權限管理。
使用 Microsoft Entra ID 的優點包括:
- 以一致的方式跨 Azure 服務來驗證使用者
- 在單一位置管理密碼原則和密碼輪替
- Microsoft Entra ID 可支援多種形式的驗證,從而避免儲存密碼的需要
- Microsoft Entra ID 驗證會使用 PostgreSQL 資料庫角色在資料庫層級驗證身分識別
- 可針對連線到 Azure Cosmos DB for PostgreSQL 的應用程式支援權杖型驗證
管理 Microsoft Entra ID 主體的 PostgreSQL 存取
啟用 Microsoft Entra ID 驗證,並將 Microsoft Entra ID 主體新增為 Microsoft Entra ID 系統管理員時,帳戶會取得與 citus
角色相同的權限。 Microsoft Entra ID 系統管理員登入可以是 Microsoft Entra ID 使用者、服務主體或受控識別。 您可以隨時設定多個 Microsoft Entra ID 系統管理員,而且您可以選擇性地停用 Azure Cosmos DB for PostgreSQL 叢集的 PostgreSQL (密碼) 驗證,以取得更好的稽核與合規性需求。
此外,一旦啟用 Microsoft Entra ID 驗證,您可以隨時將任意數量的非系統管理員 Microsoft Entra ID 角色新增至叢集。 非系統管理員 Microsoft Entra ID 角色的資料庫權限會與一般角色類似。
使用 Microsoft Entra ID 身分識別進行連線
Microsoft Entra ID 驗證支援使用 Microsoft Entra ID 身分識別連線到資料庫的下列方法:
- Microsoft Entra ID 密碼
- Microsoft Entra ID 整合
- 具有 MFA 的 Microsoft Entra ID Universal
- 使用 Microsoft Entra ID 應用程式憑證或用戶端密碼
- 受控識別
針對 Microsoft Entra ID 進行驗證後就可以擷取權杖。 此權杖是您用來登入的密碼。
其他考量
- 您可以隨時將多個 Microsoft Entra ID 主體 (使用者、服務主體或受控識別) 設定為 Azure Cosmos DB for PostgreSQL 叢集的 Microsoft Entra ID 系統管理員。
- 如果 Microsoft Entra ID 主體從 Microsoft Entra ID 服務中刪除,它仍會維持為叢集上的 PostgreSQL 角色,但無法再取得新的存取權杖。 在此情況下,雖然比對角色仍然存在於 Postgres 資料庫中,但無法向叢集節點進行驗證。 資料庫管理員必須手動轉移所有權並卸除這類角色。
注意
在權杖到期之前 (從權杖發出後最多 90 分鐘),仍可使用已刪除的 Microsoft Entra ID 使用者來登入。 如果您也從 Azure Cosmos DB for PostgreSQL 叢集中移除該使用者,則會立即撤銷此存取權。
- Azure Cosmos DB for PostgreSQL 會使用使用者唯一的 Microsoft Entra ID 使用者識別碼來比對資料庫角色的存取權杖,而不是使用使用者名稱。 如果已刪除 Microsoft Entra ID 使用者,且以相同名稱建立新使用者,則 Azure Cosmos DB for PostgreSQL 會認為是不同的使用者。 因此,如果使用者從 Microsoft Entra ID 中刪除,且新增具有相同名稱的新使用者,新使用者將無法與現有的角色連線。
下一步
- 請參閱 Microsoft Entra ID 限制以及 Azure Cosmos DB for PostgreSQL 的局限性
- 瞭解如何為 Azure Cosmos DB for PostgreSQL 叢集設定驗證
- 設定叢集節點的專用網路存取,請參閱管理私人存取
- 設定叢集節點的公用網路存取,請參閱管理公用存取