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

向 Azure Database for PostgreSQL 进行 Microsoft Entra 身份验证

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

使用 Microsoft Entra ID 的优势包括:

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

Microsoft Entra ID 在 Azure Database for PostgreSQL 中的工作原理

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

Microsoft Entra ID、用户计算机和服务器之间的身份验证流示意图。

  1. 应用程序可以从 Azure 灵活服务器实例元数据服务标识终结点请求令牌。
  2. 使用客户端 ID 和证书时,将调用 Microsoft Entra ID 以请求访问令牌。
  3. Microsoft Entra ID 会返回一个 JSON Web访问令牌 (JWT) 。 应用程序在调用灵活服务器实例时发送访问令牌。
  4. 灵活服务器实例使用 Microsoft Entra ID 验证令牌。

有关使用 Azure Database for PostgreSQL 配置 Microsoft Entra ID 的步骤,请参阅 使用 Microsoft Entra ID 通过 Azure Database for PostgreSQL 进行身份验证

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 灵活服务器实例的密码身份验证,以增强审核和合规性要求。

Entra ID 管理员结构的屏幕截图。

通过 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 的步骤,请参阅 使用 Microsoft Entra ID 通过 Azure Database for PostgreSQL 进行身份验证

限制和注意事项

将 Microsoft Entra 身份验证与 Azure Database for PostgreSQL 结合使用时,请记住以下几点:

  • 若要让 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 用户和基于本地密码的用户。

  • 在 Azure Database for PostgreSQL 灵活服务器实例上启用 Microsoft Entra 身份验证时会发生什么情况?

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

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

    可以使用客户端工具(例如 psqlpgAdmin 登录灵活服务器实例)。 将 Microsoft Entra 用户 ID 用作用户名,将 Microsoft Entra 令牌用作密码。

  • 如何生成令牌

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

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

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

  • 组身份验证与个人身份验证有何区别?

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

令牌生存期是什么?

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