本文說明如何在 Azure Database for PostgreSQL 彈性伺服器實例中建立已啟用 Microsoft Entra ID 的資料庫角色。
若要瞭解如何建立和管理 Azure 訂用帳戶使用者及其許可權,請參閱 Azure 角色型訪問控制(Azure RBAC)一文 或檢閱 如何自定義角色。
備註
本指南假設您已在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體上啟用 Microsoft Entra 驗證。
使用 Azure 入口網站或 Azure Resource Manager (ARM) API 來建立或刪除 Microsoft Entra 系統管理員
- 在 Azure 入口網站中,開啟適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的 [驗證] 頁面。
- 若要新增系統管理員,請選取 [ 新增Microsoft Entra Admin ],然後從目前的 Microsoft Entra 租用戶中選取使用者、群組、應用程式或受控識別。
- 若要移除管理員,請選取您要移除之管理員的 [刪除] 圖示。
- 選取 [儲存] ,然後等候佈建作業完成。
備註
即將支援透過 Azure SDK、az cli 和 Azure PowerShell,對 Microsoft Entra 管理員進行管理。
使用 SQL 來管理 Microsoft Entra 角色
從 Azure 入口網站或 API 建立第一個 Microsoft Entra 系統管理員之後,您可以使用系統管理員角色來管理適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體中的 Microsoft Entra 角色。
為了在適用於 PostgreSQL 的 Azure 資料庫中獲得 Microsoft Entra 整合的最佳體驗,建議您熟悉 Microsoft 身分識別平台。
主要類型
適用於 PostgreSQL 的 Azure 資料庫會在內部儲存 PostgreSQL 資料庫角色與 Microsoft Entra 物件唯一識別碼之間的對應。 每個 PostgreSQL 資料庫角色都可以對應至下列其中一種 Microsoft Entra 物件類型:
- 使用者 - 包括租戶本地和來賓使用者。
- 服務主體 - 包括 應用程式和受控識別
- 群組 - 當 PostgreSQL 角色連結至 Microsoft Entra 群組時,此群組的任何使用者或服務主體成員都可以使用群組角色連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
使用 SQL 來列出 Microsoft Entra 角色
select * from pg_catalog.pgaadauth_list_principals(isAdminValue boolean)
Arguments
isAdminValue
boolean - 當 true時,將傳回管理員使用者。 何時 false,會傳回所有 Microsoft Entra 使用者,包括 Microsoft Entra 系統管理員和非系統管理員。
傳回類型
TABLE(rolename name, principalType text, objectId text, tenantId text, isMfa integer, isAdmin integer) - 具有下列架構的表格:
-
rolename- PostgreSQL 中的角色名稱。 -
principalType- Microsoft Entra ID 中的主體類型。 可以是user、group或service。 -
objectId- 此主體的 Microsoft Entra ID 中物件的識別碼。 -
tenantId- 在 Microsoft Entra ID 中裝載此主體之租用戶的識別碼。 -
isMfa- 如果使用者/角色有強制執行 MFA,則傳回一個1的值。 -
isAdmin- 傳回1如果使用者/角色是 PostgreSQL 中的管理者。
使用Microsoft Entra 主體名稱建立使用者或角色
select * from pg_catalog.pgaadauth_create_principal(roleName text, isAdmin boolean, isMfa boolean)
Arguments
roleName
text 要建立的角色名稱。 此名稱必須符合 Microsoft Entra 主體的名稱。
- 對於 使用者,請使用設定檔中的使用者主體名稱。 對於來賓使用者,請使用 #EXT# 標籤,在其主網域中包含完整名稱。
- 針對 群組 和 服務主體,請使用顯示名稱。 該名稱在租用戶中必須是唯一的。
isAdmin
boolean,true 時,會建立 PostgreSQL 系統管理員使用者 (azure_pg_admin 角色的成員,並具有 CREATEROLE 和 CREATEDB 權限)。 當 false 時,將建立一般PostgreSQL使用者。
isMfa
boolean 當 true 時,為這個 PostgreSQL 使用者強制執行多因子驗證。
這很重要
isMfa 旗標會測試 Microsoft Entra ID 權杖中的 mfa 宣告,但不會影響權杖取得流程。 例如,如果未針對多重要素驗證來設定主體的租用戶,則會防止使用此功能。 而且,如果租戶要求所有令牌進行多重驗證,這會使此標記變得無用。
傳回類型
text 單一值,其中包含字串「為roleName創建的角色」,其中 roleName 是您傳遞給 roleName 參數的引數。
置放具有 Microsoft Entra 主體名稱的角色
您可以透過三種方式卸除對應至 Microsoft Entra ID 主體的角色:
Azure 入口網站
The Azure Resource Manager (ARM) API
透過執行以下SQL語句:
DROP ROLE rolename;
備註
Azure 入口網站只會顯示系統管理員角色。 若要卸除非系統管理員角色,請使用 Azure Resource Manager (ARM) API 或 SQL 陳述式。
使用 Microsoft Entra ID 物件識別碼建立角色
select * from pg_catalog.pgaadauth_create_principal_with_oid(roleName text, objectId text, objectType text, isAdmin boolean, isMfa boolean)
Arguments
roleName
text 要建立的角色名稱。
objectId
text Microsoft Entra 物件的唯一物件識別碼。
- 針對使用者、群組和受控識別,請在 Azure 入口網站的 Microsoft Entra ID 頁面中搜尋物件名稱以尋找
objectId。 請參閱本指南作為範例。 - 針對 群組 和 服務主體,請使用顯示名稱。 該名稱在租用戶中必須是唯一的。
- 針對 應用程式,請使用對應 服務主體的 objectId。 在 Azure 入口網站 中,在 [企業應用程式] 頁面上尋找必要的 objectId。
objectType
text,要連結至此角色的 Microsoft Entra 物件的類型。 可以是 user、group 或 service。
isAdmin
boolean,true 時,會建立 PostgreSQL 系統管理員使用者 (azure_pg_admin 角色的成員,並具有 CREATEROLE 和 CREATEDB 權限)。 當 false 時,將建立一般PostgreSQL使用者。
isMfa
boolean 當 true 時,為這個 PostgreSQL 使用者強制執行多因子驗證。
這很重要
isMfa 旗標會測試 Microsoft Entra ID 權杖中的 mfa 宣告,但不會影響權杖取得流程。 例如,如果未針對多重要素驗證來設定主體的租用戶,則會防止使用此功能。 而且,如果租戶要求所有令牌進行多重驗證,這會使此標記變得無用。
傳回類型
text 單一值,其中包含字串「為roleName創建的角色」,其中 roleName 是您傳遞給 roleName 參數的引數。
使用 SQL 為現有的 PostgreSQL 角色啟用 Microsoft Entra 驗證
適用於 PostgreSQL 的 Azure 資料庫會使用與資料庫角色相關聯的安全性標籤來儲存其對應的 Microsoft Entra ID 映射。
使用下列 SQL 來指派必要的安全性標籤,並將它對應至 Microsoft Entra 物件:
SECURITY LABEL for "pgaadauth" on role "<roleName>" is 'aadauth,oid=<objectId>,type=<objectType>,admin';
Arguments
roleName
text 現有 PostgreSQL 角色的名稱,以啟用Microsoft Entra 驗證。
objectId
text Microsoft Entra 物件的唯一物件識別碼。
objectType
text 設定為 user、 group或 service (針對在自己的服務認證下連線的應用程式或受控識別)。
admin
text 設定為存在或不存在。 如果出現在安全性標籤中,使用者或角色可以管理其他Microsoft Entra ID 角色。