共用方式為


管理適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的 Microsoft Entra 角色

適用於: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

本文說明如何在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體內建立已啟用 Microsoft Entra ID 的資料庫角色。

注意

本指南假設您已在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體上啟用 Microsoft Entra 驗證。 請參閱如何設定 Microsoft Entra 驗證 (部分機器翻譯)

如果您想要了解如何建立和管理 Azure 訂用帳戶使用者及其權限,您可以瀏覽 Azure 角色型存取控制 (Azure RBAC) 一文,或檢閱如何自訂角色

使用 Azure 入口網站或 Azure Resource Manager (ARM) API 來建立或刪除 Microsoft Entra 系統管理員

  1. 在 Azure 入口網站中,開啟適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體的 [驗證] 頁面。
  2. 若要新增系統管理員 - 選取 [新增 Microsoft Entra 系統管理員],然後從目前的 Microsoft Entra 租用戶選取使用者、群組、應用程式或受控識別。
  3. 若要移除系統管理員 - 選取要移除之系統管理員的 [刪除] 圖示。
  4. 選取 [儲存],並等候佈建作業完成。

透過入口網站管理 Microsoft Entra 系統管理員的螢幕擷取畫面。

注意

即將推出透過 Azure SDK、az cli 和 Azure PowerShell 管理 Microsoft Entra 系統管理員的支援。

使用 SQL 來管理 Microsoft Entra 角色

從 Azure 入口網站或 API 建立第一個 Microsoft Entra 系統管理員之後,您可以使用系統管理員角色來管理適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體中的 Microsoft Entra 角色。

建議您熟悉 Microsoft 身分識別平台 (部分機器翻譯),以充分利用 Microsoft Entra 與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的整合。

主體類型

適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會在內部儲存 PostgreSQL 資料庫角色與 AzureAD 物件唯一識別碼之間的對應。 每個 PostgreSQL 資料庫角色都可以對應至下列其中一種 Microsoft Entra 物件類型:

  1. 使用者 - 包括租用戶本機和來賓使用者。
  2. 服務主體。 包括應用程式和受控識別
  3. 群組 當 PostgreSQL 角色連結到 Microsoft Entra 群組時,此群組的任何使用者或服務主體成員都可以使用群組角色連線到適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。

使用 SQL 來列出 Microsoft Entra 角色

pg_catalog.pgaadauth_list_principals(isAdminValue boolean)

引數

isAdminValue

booleantrue 時,會傳回系統管理員使用者。 為 false 時,則會傳回所有 Microsoft Entra 使用者,包括 Microsoft Entra 系統管理員和非系統管理員。

傳回類型

TABLE(rolname name, principalType text, objectId text, tenantId text, isMfa integer, isAdmin integer) 具有下列結構描述的資料表:

  • rolname PostgreSQL 中角色的名稱。
  • principalType Microsoft Entra ID 中主體的類型。 可以是 usergroupservice
  • objectId Microsoft Entra ID 中此主體物件的識別碼。
  • tenantId 在 Microsoft Entra ID 中裝載此主體之租用戶的識別碼。
  • isMfa 會在使用者/角色強制執行 MFA 時傳回 1 的值。
  • isAdmin 會在使用者/角色是 PostgreSQL 中的系統管理員時傳回 1 的值。

使用 Microsoft Entra 主體名稱來建立使用者/角色

pg_catalog.pgaadauth_create_principal(roleName text, isAdmin boolean, isMfa boolean)

引數

roleName

text 要建立之角色的名稱。 這「必須符合 Microsoft Entra 主體的名稱」

  • 針對使用者,請使用設定檔中的使用者主體名稱。 針對來賓使用者,請在其主網域中包括全名及 #EXT# 標籤。
  • 針對群組服務主體,請使用顯示名稱。 該名稱在租用戶中必須是唯一的。
isAdmin

booleantrue 時,會建立 PostgreSQL 系統管理員使用者 (azure_pg_admin 角色的成員,且具有 CREATEROLE 和 CREATEDB 權限)。 為 false 時,會建立一般 PostgreSQL 使用者。

isMfa

booleantrue 時,會為這個 PostgreSQL 使用者強制執行多重要素驗證。

重要

isMfa 旗標會測試 Microsoft Entra ID 權杖中的 mfa 宣告,但不會影響權杖取得流程。 例如,如果未針對多重要素驗證來設定主體的租用戶,則會防止使用此功能。 如果租用戶要求所有權杖都要使用多重要素驗證,則會讓此旗標變得無用。

傳回類型

text 單一值,由字串「Created role for roleName組成,其中 roleName 是針對 roleName 參數傳遞的引數。

使用 Microsoft Entra 主體名稱來卸除角色

請記住,在 PostgreSQL 中建立的 Microsoft Entra 角色都必須使用 Microsoft Entra 系統管理員來卸除。如果您使用一般的 PostgreSQL 系統管理員來卸除 Entra 角色,則會導致錯誤。

DROP ROLE rolename;

使用 Microsoft Entra 物件識別碼來建立角色

pg_catalog.pgaadauth_create_principal_with_oid(roleName text, objectId text, objectType text, isAdmin boolean, isMfa boolean)

引數

roleName

text 要建立之角色的名稱。

objectId

text Microsoft Entra 物件的唯一物件識別碼。

  • 若為使用者群組受控識別,您可以在 Azure 入口網站的 Microsoft Entra ID 頁面中搜尋物件名稱來找到 objectId。 請參閱此指南作為範例
  • 針對群組服務主體,請使用顯示名稱。 該名稱在租用戶中必須是唯一的。
  • 若為應用程式,則必須使用相對應服務主體的 objectId。 您可以在 Azure 入口網站中的 [企業應用程式] 頁面上找到所需的 objectId。
objectType

text 要連結至此角色之 Microsoft Entra 物件的類型。 可以是 usergroupservice

isAdmin

booleantrue 時,會建立 PostgreSQL 系統管理員使用者 (azure_pg_admin 角色的成員,且具有 CREATEROLE 和 CREATEDB 權限)。 為 false 時,會建立一般 PostgreSQL 使用者。

isMfa

booleantrue 時,會為這個 PostgreSQL 使用者強制執行多重要素驗證。

重要

isMfa 旗標會測試 Microsoft Entra ID 權杖中的 mfa 宣告,但不會影響權杖取得流程。 例如,如果未針對多重要素驗證來設定主體的租用戶,則會防止使用此功能。 如果租用戶要求所有權杖都要使用多重要素驗證,則會讓此旗標變得無用。

傳回類型

text 單一值,由字串「Created role for 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';

引數

roleName

text 必須為其啟用 Microsoft Entra 驗證之現有 PostgreSQL 角色的名稱。

objectId

text Microsoft Entra 物件的唯一物件識別碼。

objectType

text 其可以設定為 usergroupservice (針對在自己的服務認證底下連線的應用程式或受控識別)。

admin

text 其可以存在,也可以不存在。 在其安全性標籤中有這個部分的使用者/角色可以管理其他 Microsoft Entra ID 角色。

下一步