你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Database for MySQL 灵活服务器的 Microsoft Entra 身份验证
Microsoft Entra 身份验证是一种使用 Microsoft Entra ID 中定义的标识连接到 Azure Database for MySQL 灵活服务器的机制。 使用 Microsoft Entra 身份验证,可以在一个中心位置管理数据库用户标识和其他 Microsoft 服务,从而简化权限管理。
好处
- 以统一的方式跨 Azure 服务对用户进行身份验证
- 在统一的位置管理密码策略和密码轮换
- Microsoft Entra ID 支持多种形式的身份验证,无需存储密码
- 客户可以使用外部 (Microsoft Entra ID) 组来管理数据库权限。
- Microsoft Entra 身份验证使用 MySQL 数据库用户以数据库级别对标识进行身份验证
- 支持对连接到 Azure Database for MySQL 灵活服务器的应用程序进行基于令牌的身份验证
使用以下步骤配置和使用 Microsoft Entra 身份验证
选择用于访问灵活服务器的首选身份验证方法。 默认情况下,选择的身份验证设置为仅 MySQL 身份验证。 仅选择 Microsoft Entra 身份验证或 MySQL 和 Microsoft Entra 身份验证以启用 Microsoft Entra 身份验证。
使用以下权限选择用户托管标识 (UMI),以配置 Microsoft Entra 身份验证:
- User.Read.All:允许访问 Microsoft Entra 用户信息。
- GroupMember.Read.All:允许访问 Microsoft Entra 组信息。
- Application.Read.ALL:允许访问 Microsoft Entra 服务主体(应用程序)信息。
添加 Microsoft Entra 管理员。它可以是有权访问灵活服务器的 Microsoft Entra 用户或组。
在映射到 Microsoft Entra 标识的数据库中创建数据库用户。
通过检索 Microsoft Entra 标识的令牌并登录,连接到数据库。
注意
有关如何使用 Azure Database for MySQL 灵活服务器配置 Microsoft Entra 身份验证的详细分步说明,请参阅为 Azure Database for MySQL 灵活服务器设置 Microsoft Entra 身份验证
体系结构
Microsoft Entra 身份验证需要用户托管标识。 当用户分配的标识链接到灵活服务器时,托管标识资源提供程序 (MSRP) 会在内部向该标识颁发证书。 删除托管标识时,相应的服务主体也会自动删除。
然后,该服务使用托管标识为支持 Microsoft Entra 身份验证的服务请求访问令牌。 Azure 数据库目前仅支持对 Azure Database for MySQL 灵活服务器使用用户分配的托管标识 (UMI)。 有关详细信息,请参阅 Azure 中的托管标识类型。
以下概要图概述了对 Azure Database for MySQL 灵活服务器使用 Microsoft Entra 身份验证进行身份验证的工作原理。 箭头表示通信路径。
- 应用程序可以从 Azure 实例元数据服务标识终结点请求令牌。
- 使用客户端 ID 和证书时,将调用 Microsoft Entra ID 以请求访问令牌。
- JSON Web 令牌 (JWT) 访问令牌由 Microsoft Entra ID 返回。 应用程序在调用灵活服务器时将发送访问令牌。
- 灵活服务器使用 Microsoft Entra ID 验证令牌。
管理员结构
使用 Microsoft Entra 身份验证时,有两个 Azure Database for MySQL 灵活服务器管理员帐户:原始 MySQL 管理员和 Microsoft Entra 管理员。
只有 Microsoft Entra 帐户的管理员可以在用户数据库中创建第一个包含 Microsoft Entra ID 的数据库用户。 进行 Microsoft Entra 管理员登录的可以是 Microsoft Entra 用户或 Microsoft Entra 组。 当管理员为组帐户时,可以由任何组成员使用,从而为灵活服务器启用多个 Microsoft Entra 管理员。 以管理员身份使用组帐户可便于集中添加和移除 Microsoft Entra ID 中的组成员,而无需更改灵活服务器中的用户或权限,提高了可管理性。 一次只能配置一个 Microsoft Entra 管理员(用户或组)。
用于访问灵活服务器的身份验证方法包括:
仅限 MySQL 身份验证 - 默认选项。 只有具有 MySQL 登录名和密码的本机 MySQL 身份验证才能用于访问灵活服务器。
仅限 Microsoft Entra 身份验证 - MySQL 本机身份验证将被禁用,用户只能使用其 Microsoft Entra 用户和令牌进行身份验证。 要启用此模式,请将服务器参数“aad_auth_only”设置为“开”。
使用 MySQL 和 Microsoft Entra ID 进行身份验证 - 支持本机 MySQL 身份验证和 Microsoft Entra 身份验证。 要启用此模式,请将服务器参数“aad_auth_only”设置为“关”。
权限
需要以下权限,UMI 才能作为服务器标识从 Microsoft Graph 进行读取。 或者,为用户分配的托管标识授予目录读取者角色。
重要
只有至少具有特权角色管理员角色的用户才能授予这些权限。
- User.Read.All:允许访问 Microsoft Entra 用户信息。
- GroupMember.Read.All:允许访问 Microsoft Entra 组信息。
- Application.Read.ALL:允许访问 Microsoft Entra 服务主体(应用程序)信息。
有关如何授予权限和使用权限的指导,请参阅 Microsoft Graph 权限概述
将权限授予 UMI 后,将为使用分配为服务器标识的 UMI 创建的所有服务器启用这些权限。
令牌验证
Azure Database for MySQL 灵活服务器中的 Microsoft Entra 身份验证可确保 MySQL 服务器中存在用户,并通过验证令牌的内容来检查令牌的有效性。 执行以下令牌验证步骤:
- 令牌由 Microsoft Entra ID 签名,并且未被篡改。
- 是否由 Microsoft Entra ID 为与服务器关联的租户颁发令牌。
- 令牌尚未过期。
- 令牌是否用于灵活服务器资源(而不是其他 Azure 资源)。
使用 Microsoft Entra 标识进行连接
Microsoft Entra 身份验证支持使用 Microsoft Entra 标识连接到数据库的以下方法:
- Microsoft Entra 密码
- Microsoft Entra 集成
- 使用 MFA 的 Microsoft Entra Universal
- 使用 Active Directory 应用程序证书或客户端密码
- 托管标识
对 Active Directory 进行身份验证后,请检索令牌。 此令牌是用于登录的密码。
注意
仅支持 Microsoft Entra 用户角色执行这种管理操作(例如添加新用户)。
注意
有关如何使用 Active Directory 令牌进行连接的详细信息,请参阅设置 Azure Database for MySQL 灵活服务器的 Microsoft Entra 身份验证。
其他注意事项
在任何情况下,只能为每个灵活服务器配置一个 Microsoft Entra 管理员。
只有 MySQL 的 Microsoft Entra 管理员才能在最开始时使用 Microsoft Entra 帐户连接到灵活服务器。 Active Directory 管理员可以配置后续的 Microsoft Entra 数据库用户或 Microsoft Entra 组。 当管理员为组帐户时,可以由任何组成员使用,从而为灵活服务器启用多个 Microsoft Entra 管理员。 以管理员身份使用组帐户可便于集中添加和移除 Microsoft Entra ID 中的组成员,而无需更改灵活服务器中的用户或权限,提高了可管理性。
如果用户从 Microsoft Entra ID 中删除,该用户将无法再使用 Microsoft Entra ID 进行身份验证。 因此,该用户不再可以获取访问令牌。 尽管匹配的用户仍在数据库中,但无法使用该用户连接到服务器。
注意
在令牌过期前(自令牌颁发起最长 60 分钟后到期),仍可以使用已删除的 Microsoft Entra 用户进行登录。 如果还从 Azure Database for MySQL 灵活服务器中删除了用户,此访问权限会立即撤销。
如果从服务器中移除了 Microsoft Entra 管理员,那么服务器将不再与 Microsoft Entra 租户关联,因此也就会对服务器禁用所有 Microsoft Entra 登录名。 从同一租户添加新的 Microsoft Entra 管理员将重新启用 Microsoft Entra 登录名。
灵活服务器使用用户的唯一 Microsoft Entra 用户 ID(而不是用户名),将访问令牌与 Azure Database for MySQL 灵活服务器用户进行匹配。 也就是说,如果你在 Microsoft Entra ID 中删除 Microsoft Entra 用户,然后新建了一个同名用户,那么灵活服务器会认为这是一个不同的用户。 因此,如果你从 Microsoft Entra ID 中删除了某个用户,然后添加了一个同名的新用户,那么新用户将无法使用现有用户进行连接。
注意
启用了 Microsoft Entra 身份验证的灵活服务器的订阅无法传输到另一个租户或目录。