使用 Microsoft Entra 向 Azure Database for PostgreSQL 灵活服务器进行身份验证

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

Microsoft Entra 身份验证是一种使用 Microsoft Entra ID 中定义的标识连接到 Azure Database for PostgreSQL 灵活服务器的机制。 使用 Microsoft Entra 身份验证,可以在一个中心位置管理数据库用户标识和其他 Azure 服务,从而简化权限管理。

使用 Microsoft Entra ID 的优势包括:

  • 以统一的方式跨 Azure 服务对用户进行身份验证。
  • 在统一的位置管理密码策略和密码轮换。
  • 支持多种形式的身份验证,无需存储密码。
  • 客户使用外部 (Microsoft Entra ID) 组管理数据库权限的能力。
  • 使用 PostgreSQL 数据库角色在数据库级别对标识进行身份验证。
  • 支持对连接到 Azure Database for PostgreSQL 灵活服务器的应用程序进行基于令牌的身份验证。

不同部署选项的 Microsoft Entra ID 特性和功能比较

适用于 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra 身份验证结合了从 Azure Database for PostgreSQL 单一服务器收集的体验和反馈。

下表对 Azure Database for PostgreSQL 单一服务器和 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra ID 特性与功能做了概要性的比较。

特性/功能 Azure Database for PostgreSQL 单一服务器 Azure Database for PostgreSQL 灵活服务器
多个 Microsoft Entra 管理员
托管标识(系统分配和用户分配) 部分 完全
受邀用户支持
能够关闭密码验证 不可用 可用
服务主体能够充当组成员
Microsoft Entra 登录的审核
PgBouncer 支持

Microsoft Entra ID 在 Azure Database for PostgreSQL 灵活服务器中的工作原理

以下概要图概述了对 Azure Database for PostgreSQL 灵活服务器使用 Microsoft Entra 身份验证进行身份验证的工作原理。 箭头表示通信路径。

身份验证流

有关配置适用于 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra ID 的步骤,请参阅配置和登录适用于 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra ID

PostgreSQL 管理员与 Microsoft Entra 管理员之间的区别

为灵活服务器启用 Microsoft Entra 身份验证并将 Microsoft Entra 主体添加为 Microsoft Entra 管理员时,帐户:

  • 获取与原始 PostgreSQL 管理员相同的权限。
  • 可以管理服务器上的其他 Microsoft Entra 角色。

PostgreSQL 管理员只能创建基于本地密码的用户。 但 Microsoft Entra 管理员有权管理 Microsoft Entra 用户和基于本地密码的用户。

Microsoft Entra 管理员可以是 Microsoft Entra 用户、Microsoft Entra 组、服务主体或托管标识。 使用组帐户作为管理员可增强可管理性。 这可以在 Microsoft Entra ID 中集中添加和删除组成员,而无需更改 Azure Database for PostgreSQL 灵活服务器实例中的用户或权限。

可以同时配置多个 Microsoft Entra 管理员。 可以选择停用 Azure Database for PostgreSQL 灵活服务器实例的密码身份验证,以便进一步满足审核和合规性需求。

管理结构

注意

服务主体或托管标识可在 Azure Database for PostgreSQL 灵活服务器中充当功能完备的 Microsoft Entra 管理员。 这以前是 Azure Database for PostgreSQL 单一服务器的一个限制。

通过 Azure 门户、API 或 SQL 创建的 Microsoft Entra 管理员具有与在服务器预配期间创建的常规管理员用户相同的权限。 非管理员 Microsoft Entra 角色的数据库权限的托管方式与常规角色类似。

通过 Microsoft Entra 标识进行连接

Microsoft Entra 身份验证支持使用 Microsoft Entra 标识连接到数据库的以下方法:

  • Microsoft Entra 密码身份验证
  • Microsoft Entra 集成身份验证
  • 使用多重身份验证的 Microsoft Entra Universal
  • Active Directory 应用程序证书或客户端密码
  • 托管的标识

对 Active Directory 进行身份验证后,请检索令牌。 此令牌是用于登录的密码。

如果要配置适用于 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra ID,可按照配置和登录适用于 Azure Database for PostgreSQL 灵活服务器的 Microsoft Entra ID中的步骤操作。

其他注意事项

  • 如果你希望 Microsoft Entra 主体在任何部署过程中取得用户数据库的所有权,可在你的部署(Terraform 或 Azure 资源管理器)模块中添加显式的依赖项,以确保在创建任何用户数据库之前启用 Microsoft Entra 身份验证。

  • 可随时将多个 Microsoft Entra 主体(用户、组、服务主体或托管标识)配置为 Azure Database for PostgreSQL 灵活服务器实例的 Microsoft Entra 管理员。

  • 只有 PostgreSQL 的 Microsoft Entra 管理员才能最初使用 Microsoft Entra 帐户连接到 Azure Database for PostgreSQL 灵活服务器实例。 Active Directory 管理员可以配置后续的 Microsoft Entra 数据库用户。

  • 如果从 Microsoft Entra ID 中删除某个 Microsoft Entra 主体,该主体将保留为 PostgreSQL 角色,但它不再能够获取新的访问令牌。 在这种情况下,尽管匹配角色仍存在于数据库中,但它将无法向服务器进行身份验证。 数据库管理员需要手动转让所有权并删除角色。

    注意

    在令牌过期前(自令牌颁发起最长 60 分钟后到期),已删除的 Microsoft Entra 用户仍可登录。 如果还从 Azure Database for PostgreSQL 灵活服务器中删除了用户,此访问权限会立即撤销。

  • Azure Database for PostgreSQL 灵活服务器使用用户的唯一 Microsoft Entra 用户 ID(而不是用户名),将访问令牌与数据库角色进行匹配。 如果你删除了一个 Microsoft Entra 用户,然后新建了一个同名用户,那么 Azure Database for PostgreSQL 灵活服务器会认为这是一个不同的用户。 因此,如果你从 Microsoft Entra ID 中删除了一个用户,然后添加了一个同名的新用户,那么新用户将无法使用现有角色进行连接。

常见问题解答

  • Azure Database for PostgreSQL 灵活服务器中提供哪些身份验证模式?

    Azure Database for PostgreSQL 灵活服务器支持三种身份验证模式:“仅 PostgreSQL 身份验证”、“仅 Microsoft Entra 身份验证”以及“PostgreSQL 和 Microsoft Entra 身份验证”。

  • 是否可以在灵活服务器上配置多个 Microsoft Entra 管理员

    是的。 可以在灵活服务器上配置多个 Microsoft Entra 管理员。 预配期间,只能设置一个 Microsoft Entra 管理员。 但在创建服务器后,可以通过转到“身份验证”窗格来设置任意数量的 Microsoft Entra 管理员

  • Microsoft Entra 管理员是否只是 Microsoft Entra 用户?

    否。 Microsoft Entra 管理员可以是用户、组、服务主体或托管标识。

  • Microsoft Entra 管理员是否可以创建基于密码的本地用户

    Microsoft Entra 管理员有权管理 Microsoft Entra 用户和基于本地密码的用户。

  • 在灵活服务器上启用 Microsoft Entra 身份验证时会发生什么情况

    在服务器级别设置 Microsoft Entra 身份验证时,将启用 PGAadAuth 扩展,服务器重启。

  • 如何使用 Microsoft Entra 身份验证登录?

    可以使用 psql 或 pgAdmin 等客户端工具登录到灵活服务器。 将 Microsoft Entra 用户 ID 用作用户名,将 Microsoft Entra 令牌用作密码。

  • 如何生成令牌

    使用 az login 生成令牌。 有关详细信息,请参阅检索 Microsoft Entra 访问令牌

  • 组登录和个人登录之间的区别是什么

    以 Microsoft Entra 组成员身份登录和以单个 Microsoft Entra 用户身份登录的唯一区别在于用户名。 以单个用户身份登录需要单个 Microsoft Entra 用户 ID。 以组成员身份登录需要组名称。 在这两种情况下,你都使用相同的单个 Microsoft Entra 令牌作为密码。

  • 令牌生存期是什么?

    用户令牌最长有效期为 1 小时。 系统分配的托管标识的令牌最长有效期为 24 小时。

后续步骤