你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
applies to:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
- SQL Server 2022
- SQL Server 2025
Azure SQL Database &Azure SQL Managed Instance - Azure VM 上的 SQL Server
本文介绍如何将 Microsoft Entra ID 用于身份验证和 Azure SQL Database、Azure SQL Managed Instance 和 Azure Synapse Analytics。
注意
Microsoft Entra ID以前称为Azure Active Directory(Azure AD)。
或者,还可以为在 Azure 虚拟机上的 SQL Server 配置 Microsoft Entra 身份验证。
先决条件
若要对Azure SQL资源使用Microsoft Entra身份验证,需要满足以下先决条件:
- 在 Microsoft Entra 租户中填充了用户和组。
- 现有Azure SQL资源,例如 Azure SQL Database 或 Azure SQL Managed Instance。
创建并填充Microsoft Entra租户
在为Azure SQL资源配置Microsoft Entra身份验证之前,需要创建Microsoft Entra租户,并使用用户和组填充该租户。 Microsoft Entra租户可以完全在Azure内进行管理,也可以用于本地Active Directory Domain服务的联合。
有关详细信息,请参阅:
- 什么是 Microsoft Entra ID?
- 使用 Microsoft Entra ID 集成本地身份
- 将域名添加到 Microsoft Entra ID
- 与 Microsoft Entra ID 的联合是什么?
- 与 Microsoft Entra ID 目录同步
- 使用 Windows PowerShell 管理 Microsoft Entra ID
- 混合标识所需的端口和协议
设置 Microsoft Entra 管理员
若要对资源使用Microsoft Entra身份验证,需要设置Microsoft Entra管理员。 虽然从概念上讲,步骤与Azure SQL Database、Azure Synapse Analytics和Azure SQL Managed Instance相同,但本部分详细介绍了每个产品要执行的不同 API 和门户体验。
创建Azure SQL资源时,还可以配置Microsoft Entra管理员。 如果已配置Microsoft Entra管理员,请跳过本部分。
Azure SQL Database和Azure Synapse Analytics
通过设置 Microsoft Entra 管理员,可以为 Azure SQL Database 和 Azure Synapse Analytics 启用 Logical 服务器 的 Microsoft Entra 身份验证。 可以使用 Azure 门户、PowerShell、Azure CLI 或 REST API 为服务器设置Microsoft Entra管理员。
在 Azure 门户中,可以找到 logical server 名称
- 在 Azure SQL 数据库的 概览 页面上的 服务器名称 字段中。
- 在 Azure Synapse Analytics 中独立专用 SQL 池的 Overview 页上的 server name 字段中。
- 在你的 Azure Synapse Analytics 工作区的 Overview 页上的相关 SQL 端点 中。
若要在 Azure 门户中为逻辑服务器设置Microsoft Entra管理员,请执行以下步骤:
在 Azure 门户 Directories + 订阅窗格中,选择包含Azure SQL资源的目录作为 Current directory。
搜索“SQL 服务器”,然后选择数据库资源的逻辑服务器以打开“SQL Server”窗格。
在逻辑服务器的SQL 服务器窗格中,在Settings下选择Microsoft Entra ID,打开Microsoft Entra ID窗格。
在 Microsoft Entra ID 窗格中,选择 Set admin打开 Microsoft Entra ID 窗格。
Microsoft Entra ID 窗格显示当前目录中的所有用户、组和应用程序,并允许按名称、别名或 ID 进行搜索。 在 Microsoft Entra 管理员中找到您所需的身份,并选择它,然后选择 选择 以关闭窗格。
在逻辑服务器的 Microsoft Entra ID 页顶部,选择 保存。
Object ID显示在Microsoft Entra用户和组的管理员名称旁边。 对于应用程序(服务主体),将显示应用程序 ID。
更改管理员的过程可能需要几分钟时间。 然后,新管理员将显示在 Microsoft Entra admin 字段中。
若要删除管理员,请在 Microsoft Entra ID 页面顶部选择 Remove admin,然后选择 Save。 将 Microsoft Entra 管理员删除会导致您的逻辑服务器禁用 Microsoft Entra 身份验证。
注意
Microsoft Entra管理员以用户(数据库主体)的形式存储在服务器的 master 数据库中。 由于数据库主体名称必须唯一,因此管理员的显示名称不能与服务器 master 数据库中任何用户的名称相同。 如果已经存在同名用户,Microsoft Entra 管理员设置将会失败并回滚,显示该名称已被使用。
Azure SQL 托管实例
设置Microsoft Entra管理员可为Azure SQL Managed Instance启用Microsoft Entra身份验证。 可以使用 Azure 门户、PowerShell、Azure CLI 或 REST API 为 SQL 托管实例设置Microsoft Entra管理员。
若要使用 Azure 门户向 SQL 托管实例授予对Microsoft Entra ID的读取权限,请以 Privileged Role Administrator 身份登录,然后执行以下步骤:
在 Azure 门户中,在右上角选择帐户,然后选择 切换目录以确认哪个目录是 当前目录。 如有必要,请切换目录。
在 Azure 门户 Directories + 订阅窗格中,选择包含托管实例的目录作为 Current directory.''
搜索“SQL 托管实例”,然后选择托管实例 以打开“SQL 托管实例”窗格。 然后,在
Settings Microsoft Entra ID>,打开实例的Microsoft Entra ID 窗格。Azure门户的截图,显示为所选 SQL 托管实例打开的 Microsoft Entra 管理页。
在Microsoft Entra管理员窗格中,从导航栏中选择Set admin打开Microsoft Entra ID窗格。
在Microsoft Entra ID窗格中,搜索用户,选中用户或组旁边的框作为管理员,然后按 Select 关闭窗格,然后返回到托管实例的 Microsoft Entra admin 页面。
Microsoft Entra ID 窗格显示当前目录中的所有成员和组。 无法选择灰色显示的用户或组,因为它们不支持作为Microsoft Entra管理员。 选择您想要赋予管理员身份的身份。
从托管实例的 Microsoft Entra admin 页的导航栏中,选择“保存”以确认您的 Microsoft Entra 管理员。
管理员更改作完成后,新管理员将显示在Microsoft Entra管理员字段中。
Object ID显示在Microsoft Entra用户和组的管理员名称旁边。 对于应用程序(服务主体),将显示应用程序 ID。
提示
若要删除管理员,请选择Microsoft Entra ID页顶部的 Remove admin,然后选择 Save。
分配Microsoft Graph权限
SQL Managed Instance需要权限才能读取Microsoft Entra ID,以便在授权通过安全组成员身份连接的用户和新用户创建等场景中使用。 若要运行Microsoft Entra身份验证,需要将托管实例标识分配给 Directory Readers 角色。 可以使用 Azure 门户或 PowerShell 执行此作。
对于某些操作,Azure SQL Database 和 Azure Synapse Analytics 还需要具有查询 Microsoft Graph 的权限,如 Microsoft Graph 权限中所述。 Azure SQL Database 和 Azure Synapse Analytics 支持在这些应用场景中使用精细的图形权限,而 SQL Managed Instance 则需要 Directory Readers 角色。 在启用服务主体创建 Microsoft Entra 用户中详细介绍了细粒度权限及其分配。
重要
Azure SQL Database 和 SQL Managed Instance使用不同的权限模型进行Microsoft Graph访问:
-
Azure SQL Database 和 Azure Synapse Analytics:支持直接分配给服务器标识的精细Microsoft Graph API权限(如
User.Read.All、GroupMember.Read.All和Application.Read.All)。 此方法遵循最低特权原则,建议使用此方法。 有关分步说明,请参阅 启用服务主体以创建 Microsoft Entra 用户。 目录读取器角色也可以用作更广泛的替代方案。 - SQL 托管实例:需要为实例身份分配Directory Readers角色或等效的细粒度的 Microsoft Graph 权限。 Azure门户在Microsoft Entra ID页上提供了方便的横幅,提示你授予目录读取者角色。 请按照“目录读取器”角色部分中的步骤进行操作。
如果要配置 Azure SQL Database,则无需为基本 Microsoft Entra 管理员设置分配目录读取者角色。 相反,如在 Microsoft Entra 中为 Azure SQL 设置的托管标识中所述,将细粒度的 Microsoft Graph 权限分配给服务器标识。
目录读取者角色
Directory Readers 角色和本节中描述的门户横幅主要适用于 SQL Managed Instance。 对于Azure SQL Database,可以改为分配细化Microsoft Graph权限,或者可以选择使用目录读取器作为更广泛的替代方法。
Azure 门户中SQL Managed Instance的 Microsoft Entra ID 页在未分配目录读取者权限时显示方便的横幅。
选择 Microsoft Entra ID 页上的横幅,并向代表实例的系统分配或用户分配的托管标识授予权限。 只有租户中的 特权角色管理员 或更高角色才能执行此操作。
注意
如果未看到横幅,则实例可能已经被分配了目录阅读者角色,或者您可能没有所需的 特权角色管理员 角色。 如果没有此角色,请让租户管理员授予权限,或使用 PowerShell 选项卡上的 PowerShell 方法。
操作成功后,右上角会显示“成功”通知:
Microsoft Entra管理员现在可用于创建Microsoft Entra服务器主体(登录名)和数据库主体(用户)。 有关详细信息,请参阅 Microsoft Entra 与 Azure SQL 托管实例的集成。
在 SQL 中创建 Microsoft Entra 主体
若要使用 Microsoft Entra 身份验证连接到 SQL 数据库或 Azure Synapse Analytics,必须在数据库中为该身份配置一个至少具有 CONNECT 权限的主体。
数据库用户权限
创建数据库用户时,它默认会收到 CONNECT 对数据库的权限。 数据库用户还会在两种情况下继承权限:
- 如果用户是分配了服务器权限的 Microsoft Entra 组的成员。
- 如果用户是通过登录名创建的,它会继承服务器为该登录名分配的并适用于数据库的权限。
无论主体类型(Microsoft Entra ID、SQL 身份验证等),服务器和数据库主体的管理权限都相同。 建议向数据库角色授予权限,而不是直接向用户授予权限。 然后,可以将用户添加到具有适当权限的角色。 这简化了长期权限管理,并减少了身份在超过适当期限后仍保留访问权限的可能性。
有关详细信息,请参阅:
包含的数据库用户
独立数据库用户是一种不连接到 master 数据库登录名的 SQL 用户。 若要创建包含Microsoft Entra的数据库用户,请使用至少具有 ALTER ANY USER** 权限的Microsoft Entra标识连接到数据库。 以下 T-SQL 示例从 Microsoft Entra ID 创建数据库主体 Microsoft_Entra_principal_name。
CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;
若要为Microsoft Entra组创建包含的数据库用户,请输入组的显示名称:
CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;
要为托管标识或服务主体创建包含的数据库用户,请输入该标识的显示名称:
CREATE USER [appName] FROM EXTERNAL PROVIDER;
若要为 Microsoft Entra 用户创建受限数据库用户,请输入标识的用户主体名称:
CREATE USER [adrian@contoso.com] FROM EXTERNAL PROVIDER;
基于登录名的用户
注意
Microsoft Entra服务器主体(登录名)目前在Azure SQL Database和Azure Synapse Analytics中以公开预览形式提供。 Microsoft Entra登录名通常用于 Azure SQL Managed Instance 和 SQL Server 2022。
Microsoft Entra服务器主体(或登录名)受支持,这意味着不需要包含的数据库用户。 数据库主体(用户)可以基于服务器主体创建,这意味着Microsoft Entra用户可以继承登录名的服务器级分配权限。
CREATE USER [appName] FROM LOGIN [appName];
有关详细信息,请参阅 SQL Managed Instance 概述。 有关创建Microsoft Entra服务器主体(登录名)的语法,请参阅 CREATE LOGIN。
外部用户
不能直接为在与您的 Azure 订阅关联的 Microsoft Entra 租户之外的其他租户中管理的标识创建数据库用户。 但是,可以将其他目录中的用户作为外部用户导入到关联的目录中。 然后,可以使用它们创建可访问数据库的受限数据库用户。 外部用户还可以通过Microsoft Entra组中的成员身份获得访问权限。
例: 若要创建表示 Microsoft Entra 联合或托管域用户的受限数据库用户:
CREATE USER [alice@fabrikam.com] FROM EXTERNAL PROVIDER;
如果将联合域用户帐户作为外部用户导入到托管域,则此用户必须使用托管域标识。
名称考虑事项
不支持在 T-SQL CREATE LOGIN 和 CREATE USER 语句中将特殊字符作为用户名使用,例如冒号 : 或与号 &。
Microsoft Entra ID和Azure SQL在用户管理设计上存在一个关键区别:Microsoft Entra ID允许在租户中显示名称重复,而Azure SQL要求服务器或实例上的所有服务器主体和数据库中的所有数据库主体具有唯一名称。 由于 Azure SQL 在创建主体时直接使用标识的 Microsoft Entra 显示名称,因此在创建用户时可能会导致错误。 若要解决此问题,Azure SQL已发布当前预览版中的 WITH OBJECT_ID 增强功能,允许用户指定要添加到服务器或实例的标识的Microsoft Entra对象 ID。
Microsoft Graph权限
CREATE USER ... FROM EXTERNAL PROVIDER 命令要求Azure SQL代表登录用户访问Microsoft Entra ID(“外部提供程序”)。 有时,某些情况会导致 Microsoft Entra ID 返回异常给 Azure SQL。
- 可能会遇到 SQL 错误 33134,其中包含特定于Microsoft Entra ID的错误消息。 错误通常会指出访问被拒绝、用户必须注册 MFA 才能访问资源,或者在第一方应用程序之间进行的访问必须通过预授权进行处理。 在前两种情况下,问题通常是由在用户的Microsoft Entra租户中设置的条件访问策略引起的:它们阻止用户访问外部提供程序。 更新条件访问策略以允许访问应用程序“00000003-0000-0000-c000-00000000000000”(Microsoft Graph API的应用程序 ID)应解决此问题。 如果错误指出在第一方应用程序之间进行的访问必须通过预授权进行处理,则出现问题是因为用户以服务主体的身份登录。 如果命令改由用户执行,它应该会成功。
- 如果收到 Connection Timeout Expired,则可能需要将连接字符串的
TransparentNetworkIPResolution参数设置为 false。 有关详细信息,请参阅 .NET Framework 4.6.1 的连接超时问题 - 网络IP透明解析。
有关如何基于 Microsoft Entra 身份创建容纳的数据库用户的详细信息,请参阅 CREATE USER。
配置多重身份验证
为了提高Azure SQL资源的安全性,请考虑配置 multifactor authentication (MFA),这提示用户使用第二种替代方法向数据库(例如电话呼叫或验证器应用)进行身份验证。
若要对 Azure SQL 资源使用多重身份验证,请先启用多重身份验证,然后使用条件访问策略为 Azure SQL 资源强制实施多重身份验证。
使用 Microsoft Entra 进行连接
配置Microsoft Entra身份验证后,可以使用它通过 Microsoft 工具(如 SQL Server Management Studio 和 SQL Server Data Tools)连接到 SQL 资源,并配置 client 应用程序以使用Microsoft Entra标识。
排查Microsoft Entra身份验证问题
有关排查问题的指南,请参阅