你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Database for PostgreSQL 灵活服务器中管理 Microsoft Entra 组

适用于:Azure Database for PostgreSQL 灵活服务器

本文介绍如何在 Azure Database for PostgreSQL 灵活服务器实例中创建已启用 Microsoft Entra ID 的数据库角色。

注意

本指南假定已在 Azure Database for PostgreSQL 灵活服务器实例上启用了 Microsoft Entra 身份验证。 请参阅如何配置 Microsoft Entra 身份验证

如果想要了解如何创建和管理 Azure 订阅用户及其权限,可以访问“Azure 基于角色的访问控制 (Azure RBAC)”一文或查看如何自定义角色

使用 Azure 门户或 Azure 资源管理器 (ARM) API 创建或删除 Microsoft Entra 管理员

  1. 在 Azure 门户中打开 Azure Database for PostgreSQL 灵活服务器实例的“身份验证”页。
  2. 若要添加管理员,请选择“添加 Microsoft Entra 管理员”,然后从当前 Microsoft Entra 租户中选择用户、组、应用程序或托管标识
  3. 删除管理员 - 请选择要删除的管理员对应的“删除”图标。
  4. 选择“保存”并等待预配操作完成。

Screenshot of managing Microsoft Entra administrators via portal.

注意

对通过 Azure SDK、az cli 和 Azure PowerShell 管理 Microsoft Entra 管理员的支持即将推出。

使用 SQL 管理 Microsoft Entra 角色

从 Azure 门户或 API 创建第一个 Microsoft Entra 管理员后,可以使用管理员角色在 Azure Database for PostgreSQL 灵活服务器实例中管理 Microsoft Entra 角色。

建议熟悉 Microsoft 标识平台,以充分利用 Microsoft Entra 与 Azure Database for PostgreSQL 灵活服务器的集成。

主体类型

Azure Database for PostgreSQL 灵活服务器在内部存储 PostgreSQL 数据库角色与 AzureAD 对象的唯一标识符之间的映射。 每个 PostgreSQL 数据库角色都可以映射到以下 Microsoft Entra 对象类型之一:

  1. 用户 - 包括租户本地用户和来宾用户。
  2. 服务主体。 包括应用程序和托管标识
  3. 将 PostgreSQL 角色链接到 Microsoft Entra 组时,此组的任何用户或服务主体成员都可以使用组角色连接到 Azure Database for PostgreSQL 灵活服务器实例。

使用 SQL 列出 Microsoft Entra 角色

select * from pgaadauth_list_principals(true);

参数:

  • true -将返回管理员用户。
  • false - 将返回所有 Microsoft Entra 用户(Microsoft Entra 管理员和非 Microsoft Entra 管理员)。

使用 Microsoft Entra 主体名称创建角色

select * from pgaadauth_create_principal('<roleName>', <isAdmin>, <isMfa>);

--For example: 

select * from pgaadauth_create_principal('mary@contoso.com', false, false);

参数:

  • roleName - 待创建角色的名称。 这必须与 Microsoft Entra 主体的名称匹配
    • 对于“用户”,请使用配置文件中的用户主体名称。 对于来宾用户,请在其主域中包含带有 #EXT# 标记的全名。
    • 对于“组”和“服务主体”,请使用显示名称。 该名称在租户中必须唯一。
  • isAdmin - 如果创建管理员用户,则设置为“true”,对于常规用户,则设置为“false”。 以这种方式创建的管理员用户与通过门户或 API 创建的管理员用户具有相同的权限。
  • isMfa - 如果必须为此角色强制实施多重身份验证,则标记。

使用 Microsoft Entra 主体名称删除角色

请记住,必须使用 Microsoft Entra 管理员删除在 PostgreSQL 中创建的任何 Microsoft Entra 角色。如果使用常规 PostgreSQL 管理员删除 Entra 角色,则会导致错误。

DROP ROLE rolename;

使用 Microsoft Entra 对象标识符创建角色

select * from pgaadauth_create_principal_with_oid('<roleName>', '<objectId>', '<objectType>', <isAdmin>, <isMfa>);

For example: select * from pgaadauth_create_principal_with_oid('accounting_application', '00000000-0000-0000-0000-000000000000', 'service', false, false);

参数:

  • roleName - 待创建角色的名称。
  • objectId - Microsoft Entra 对象的唯一对象标识符:
    • 对于“用户”、“组”和“托管标识”,可以通过在 Azure 门户的 Microsoft Entra ID 页中搜索对象名称来查找 ObjectId请参阅本指南作为示例
    • 对于“应用程序”,必须使用相应服务主体的 Objectid。 在 Azure 门户中,可以在“企业应用程序”页上找到所需的 ObjectId。
  • objectType - 要链接到此角色的 Microsoft Entra 对象的类型:服务、用户、组。
  • isAdmin - 如果创建管理员用户,则设置为“true”,对于常规用户,则设置为“false”。 以这种方式创建的管理员用户与通过门户或 API 创建的管理员用户具有相同的权限。
  • isMfa - 如果必须为此角色强制实施多重身份验证,则标记。

使用 SQL 为现有的 PostgreSQL 角色启用 Microsoft Entra 身份验证

Azure Database for PostgreSQL 灵活服务器使用与数据库角色关联的安全标签来存储 Microsoft Entra ID 映射。

可以使用以下 SQL 来分配安全标签:

SECURITY LABEL for "pgaadauth" on role "<roleName>" is 'aadauth,oid=<objectId>,type=<user|group|service>,admin';

参数:

  • roleName - 需要为其启用 Microsoft Entra 身份验证的现有 PostgreSQL 角色的名称。
  • objectId - Microsoft Entra 对象的唯一对象标识符。
  • user - 最终用户主体。
  • service - 使用其自己的服务凭据进行连接的应用程序或托管标识。
  • group - Microsoft Entra 组的名称。

后续步骤