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 灵活服务器实例元数据服务标识终结点请求令牌。
- 使用客户端 ID 和证书时,将调用 Microsoft Entra ID 以请求访问令牌。
- Microsoft Entra ID 会返回一个 JSON Web访问令牌 (JWT) 。 应用程序在调用灵活服务器实例时发送访问令牌。
- 灵活服务器实例使用 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 灵活服务器实例的密码身份验证,以增强审核和合规性要求。
              
               
              
              
            
通过 Azure 门户、API 或 SQL 创建的 Microsoft Entra 管理员具有与在服务器预配期间创建的常规管理员用户相同的权限。 按与常规角色类似的方式管理 Microsoft Entra 非管理员角色的数据库权限。
通过 Microsoft Entra 标识建立连接
Microsoft Entra 身份验证支持使用 Microsoft Entra 标识连接到数据库的以下方法:
- Microsoft Entra 密码身份验证
- Microsoft Entra 集成身份验证
- 使用多重身份验证Microsoft Entra 通用
- 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 角色,但无法再获取新的访问令牌。 在这种情况下,尽管数据库中仍然存在匹配的角色,但它无法向服务器进行身份验证。 数据库管理员需要手动转移所有权并删除角色。 - 注释 - 已删除Microsoft Entra 用户仍可登录,直到令牌过期(令牌颁发最多 60 分钟)。 如果还从 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 身份验证登录? - 可以使用客户端工具(例如 - psql或- pgAdmin登录灵活服务器实例)。 使用 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 小时。
