Azure SQL 的 Microsoft Entra ID 中的目录读取者角色

适用于:Azure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics

Microsoft Entra ID(旧称 Azure Active Directory)引入了使用组来管理角色分配。 这可以实现向组分配 Microsoft Entra 角色。

注意

借助 Azure SQL 的 Microsoft Graph 支持,可以使用较低级别的权限替换“目录读取者”角色。 有关详细信息,请参阅 Microsoft Entra 中用于 Azure SQL 的用户分配的托管标识

为 Azure SQL 数据库、Azure SQL 托管实例或 Azure Synapse Analytics 启用托管标识时,可以向标识分配 Microsoft Entra ID 目录读取者角色,以实现对 Microsoft Graph API 的读取访问。 SQL 数据库和 Azure Synapse 的托管标识称为服务器标识。 SQL 托管实例的托管标识称为托管实例标识,在创建实例时会自动分配。 有关向 SQL 数据库或 Azure Synapse 分配服务器标识的详细信息,请参阅使服务主体能够创建 Microsoft Entra 用户

目录读取者角色可以用作服务器或实例标识,以帮助:

  • 为 SQL 托管实例创建 Microsoft Entra 登录名
  • 在 Azure SQL 中模拟 Microsoft Entra 用户
  • 将使用 Windows 身份验证的 SQL Server 用户迁移到使用 Microsoft Entra 身份验证的 SQL 托管实例(使用 ALTER USER [Transact-SQL] 命令)
  • 更改 SQL 托管实例 的 Microsoft Entra 管理员
  • 允许服务主体(应用程序)在 Azure SQL 中创建 Microsoft Entra 用户

注意

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

分配目录读取者角色

为了将目录读取者角色分配给标识,需要一个具有全局管理员特权角色管理员权限的用户。 经常管理或部署 SQL 数据库、SQL 托管实例或 Azure Synapse 的用户可能无法访问这些高特权角色。 如果用户创建了计划外 Azure SQL 资源,或者如果用户需要高特权角色成员的帮助,而在大型组织中经常无法接触到这些成员,这往往会带来麻烦。

对于 SQL 托管实例,必须先将目录读取者角色分配给托管实例标识,然后才能为托管实例设置 Microsoft Entra 管理员

为逻辑服务器设置 Microsoft Entra 管理员时,SQL 数据库或 Azure Synapse 不需要向服务器标识分配目录读取者角色。 但是,要在 SQL 数据库或 Azure Synapse 中代表 Microsoft Entra 应用程序实现 Microsoft Entra 对象创建,则需要目录读取者角色。 如果未将该角色分配给逻辑服务器标识,则将无法在 Azure SQL 中创建 Microsoft Entra 用户。 有关详细信息,请参阅使用 Azure SQL 的 Microsoft Entra 服务主体

向 Microsoft Entra 组授予目录读取者角色

可以让全局管理员特权角色管理员创建一个 Microsoft Entra 组,并为该组分配目录读取者权限。 这将允许该组的成员访问 Microsoft 图形 API。 此外,作为该组所有者的 Microsoft Entra 用户可以为该组分配新成员,包括逻辑服务器的标识。

此解决方案仍要求高特权用户(全局管理员或特权角色管理员)一次性创建组和分配用户,但 Microsoft Entra 组所有者能够在以后分配其他成员。 这样,以后就不必需要高特权用户在其 Microsoft Entra 租户中配置所有 SQL 数据库、SQL 托管实例或 Azure Synapse 服务器。

后续步骤