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

在 Azure Database for PostgreSQL 中管理Microsoft Entra 角色

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

若要了解如何创建和管理 Azure 订阅用户及其特权,请参阅 Azure 基于角色的访问控制(Azure RBAC)一文 或了解如何 自定义角色

注释

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

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

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

注释

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

使用 SQL 管理 Microsoft Entra 角色

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

若要获得最佳 Azure Database for PostgreSQL 中 Microsoft Entra 集成的体验,建议熟悉 Microsoft标识平台

主要类型

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

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

使用 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 中的主体类型。 可以是 usergroupservice
  • objectId - Microsoft Entra ID 中主体的对象标识符。
  • tenantId - Microsoft Entra ID 中托管此主体的租户的标识符。
  • isMfa - 返回用户/角色是否强制实施 MFA 的值 1
  • isAdmin - 如果用户/角色是 PostgreSQL 中的管理员,则返回一个值 1

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

select * from pg_catalog.pgaadauth_create_principal(roleName text, isAdmin boolean, isMfa boolean)

Arguments

roleName

text 要创建的角色的名称。 此名称必须与 Microsoft Entra 主体的名称匹配。

  • 对于 用户,请使用配置文件中的用户主体名。 对于来宾用户,请在包含 #EXT# 标记的主域中包含全名。
  • 对于和服务主体,请使用显示名称。 名称在租户中必须是唯一的。
isAdmin

booleantrue时,会创建一个PostgreSQL管理员用户(具有azure_pg_admin角色成员身份,并拥有CREATEROLE和CREATEDB权限)。 当为 false 时,它​​会创建一个常规 PostgreSQL 用户。

isMfa

当为 booleantrue,它会对此 PostgreSQL 用户强制执行多重身份验证。

重要

isMfa 标志会测试 Microsoft Entra ID 令牌中的 mfa 声明,但它不会影响令牌获取流程。 例如,如果主体的租户未配置多重身份验证,则它会阻止使用该功能。 如果租户需要对所有令牌进行多重身份验证,则会使此标志无用。

返回类型

text包含字符串“为 roleName 创建角色”的单个值,其中 roleName 是你为 roleName 参数传递的参数。

删除带有 Microsoft Entra 主体名称的角色

可以通过三种方式移除与 Microsoft Entra ID 主体对应的角色:

  • Azure 门户

  • Azure 资源管理器 (ARM) API

  • 通过执行以下 SQL 语句:

    DROP ROLE rolename;
    

注释

Azure 门户仅显示管理员角色。 若要删除非管理员角色,请使用 Azure 资源管理器 (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

要与此角色关联的 Microsoft Entra 对象的 text 类型。 可以是 usergroupservice

isAdmin

booleantrue时,会创建一个PostgreSQL管理员用户(具有azure_pg_admin角色成员身份,并拥有CREATEROLE和CREATEDB权限)。 当为 false 时,它​​会创建一个常规 PostgreSQL 用户。

isMfa

当为 booleantrue,它会对此 PostgreSQL 用户强制执行多重身份验证。

重要

isMfa 标志会测试 Microsoft Entra ID 令牌中的 mfa 声明,但它不会影响令牌获取流程。 例如,如果主体的租户未配置多重身份验证,则它会阻止使用该功能。 如果租户需要对所有令牌进行多重身份验证,则会使此标志无用。

返回类型

text包含字符串“为 roleName 创建角色”的单个值,其中 roleName 是你为 roleName 参数传递的参数。

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

Azure Database for PostgreSQL 使用与数据库角色关联的安全标签来存储其相应的Microsoft Entra ID 映射。

使用以下 SQL 分配所需的安全标签并将其映射到 Microsoft Entra 对象:

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

Arguments

roleName

text 用于启用Microsoft Entra 身份验证的现有 PostgreSQL 角色的名称。

objectId

text,Microsoft Entra 对象的唯一对象标识符。

objectType

text 设置为 usergroupservice(适用于在其自身服务凭据下连接的应用程序或托管标识)。

admin

text 设置为'存在'或'不存在'。 如果在安全标签中存在,用户或角色可以管理其他 Microsoft Entra ID 角色。