使用 Microsoft Entra 身份验证连接到 Azure SQL 资源
适用于: Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics
本文介绍如何使用 Microsoft Entra 身份验证连接到 Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse Analytics。
先决条件
要连接到 Azure SQL 资源,需要为资源配置 Microsoft Entra 身份验证。
要确认 Microsoft Entra 管理员已正确设置,请使用 Microsoft Entra 管理员帐户连接到 master
数据库。
要创建基于 Microsoft Entra 的包含的数据库用户,请使用具有数据库访问权限且至少具有 ALTER ANY USER
权限的 Microsoft Entra 标识连接到数据库。
使用 SSMS 或 SSDT 进行连接
以下过程说明如何使用 SQL Server Management Studio (SSMS) 或 SQL Server 数据库工具 (SSDT) 连接到具有 Microsoft Entra 标识的 SQL 数据库。
Microsoft Entra Integrated
如果要使用联合到 Microsoft Entra ID 的 Windows 凭证登录,请使用此方法。
启动 SSMS 或 SSDT,然后在“连接到服务器”(或“连接到数据库引擎”)对话框的“登录”选项卡中:
- 以
<server-name>.database.chinacloudapi.cn
格式提供“服务器名称”。 - 对于“身份验证”,选择“Microsoft Entra 集成”。 无需输入密码,因为现有凭据已用于连接。
- 对于“加密”,请选择“严格(SQL Server 2022 和 Azure SQL)”,该加密应用于连接到 Azure SQL 资源。
- 以
在“连接属性”选项卡上的“连接到数据库”字段中,键入要连接到的用户数据库的名称。
Microsoft Entra 密码
使用 Microsoft Entra 托管域通过 Microsoft Entra 主体名称进行连接时,请使用此方法。 还可以在某些情况下(例如,远程工作时)将其用于联合帐户而无需访问域。
使用此方法能够以 Microsoft Entra 仅限云的标识用户身份或者以使用 Microsoft Entra 混合标识的用户身份,向 SQL 数据库或 SQL 托管实例中的数据库进行身份验证。 此方法支持想要使用其 Windows 凭据,但其本地计算机未加入域(例如,使用远程访问)的用户。 在这种情况下,Windows 用户可以指定其域帐户和密码,然后可以向 SQL 数据库、SQL 托管实例或 Azure Synapse 中的数据库进行身份验证。
启动 SSMS 或 SSDT,然后在“连接到服务器”(或“连接到数据库引擎”)对话框的“登录”选项卡上:
- 以
<server-name>.database.chinacloudapi.cn
格式提供“服务器名称”。 - 对于“身份验证”,选择“Microsoft Entra 密码”。
- 在“用户名”框中,以
username@domain.com
格式键入 Microsoft Entra 用户名。 用户名必须是 Microsoft Entra ID 中的帐户,或来自具有 Microsoft Entra ID 的托管域或联盟域的帐户。 - 在“密码”框中,键入 Microsoft Entra 帐户或托管/联盟域帐户的用户密码。
- 对于“加密”,请选择“严格(SQL Server 2022 和 Azure SQL)”,该加密应用于连接到 Azure SQL 资源。
- 以
在“连接属性”选项卡上的“连接到数据库”字段中,键入要连接到的用户数据库的名称。
Microsoft Entra 服务主体
使用此方法通过 Microsoft Entra 服务主体(Microsoft Entra 应用程序)对 SQL 数据库或 SQL 托管实例中的数据库进行身份验证。 有关详细信息,请参阅使用 Azure SQL 的 Microsoft Entra 服务主体。
Microsoft Entra 托管标识
使用此方法通过 Microsoft Entra 托管标识对 SQL 数据库或 SQL 托管实例中的数据库进行身份验证。 有关详细信息,请参阅 Microsoft Entra 中用于 Azure SQL 的托管标识。
Microsoft Entra ID 默认
Microsoft Entra ID 的默认身份验证选项支持通过无密码和非交互式机制(包括托管标识)进行的身份验证。
从客户端应用程序进行连接
以下过程说明如何使用 Microsoft Entra 标识从客户端应用程序连接到 SQL 数据库。 使用 Microsoft Entra 标识时,这不是身份验证方法的完整列表。 有关详细信息,请参阅使用 Microsoft Entra 身份验证和 SqlClient 连接到 Azure SQL。
配置客户端应用程序
注意
System.Data.SqlClient 使用弃用的 Azure Active Directory 身份验证库 (ADAL)。 如果使用 System.Data.SqlClient 命名空间进行 Microsoft Entra 身份验证,请将应用程序迁移到 Microsoft.Data.SqlClient 和 Microsoft 身份验证库 (MSAL)。 要了解 .NET 中可用的连接方法,请参阅使用 Microsoft Entra 身份验证和 SqlClient 连接到 Azure SQL。
如果要继续在应用程序中使用 ADAL.DLL,可以使用本部分中的链接来安装包含最新 ADAL.DLL 库的最新 ODBC 或 OLE DB 驱动程序。
在应用程序或用户要使用 Microsoft Entra 标识连接到 SQL 数据库或 Azure Synapse Analytics 的所有客户端计算机上,必须安装以下软件:
- .NET Framework 4.6 或更高版本。
- Microsoft 身份验证库 (MSAL) 或适用于 SQL Server 的 Microsoft 身份验证库 (ADAL.DLL)。 可在此处获取安装包含 ADAL.DLL 库的最新 SSMS、ODBC 和 OLE DB 驱动程序:
可以通过以下操作来满足这些要求:
- 安装最新版本的 SQL Server Management Studio 或 SQL Server Data Tools 以符合 .NET Framework 4.6 要求。
- SSMS 安装 ADAL.DLL 的 x86 版本。
- SSDT 安装 ADAL.DLL 的 amd64 版本。
- Visual Studio 下载提供的最新 Visual Studio 符合 .NET Framework 4.6 要求,但并未安装必需的 amd64 版 ADAL.DLL。
Microsoft Entra 集成身份验证
若要使用集成的 Windows 身份验证,域的 Active Directory 必须与 Microsoft Entra ID 联合。
连接到数据库的客户端应用程序(或服务)必须运行在已使用用户的域凭据加入域的计算机上。
要使用集成的身份验证和 Microsoft Entra 标识连接到数据库,必须将数据库连接字符串中的 Authentication
关键字设置为 Active Directory Integrated
。 将 <server_name>
替换为你的逻辑服务器名称。 下面的 C# 代码示例使用 ADO.NET。
string ConnectionString = @"Data Source=<server-name>.database.chinacloudapi.cn; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
不支持使用连接字符串关键字 Integrated Security=True
连接到 Azure SQL 数据库。 进行 ODBC 连接时,需要删除空格,并将身份验证设置为 ActiveDirectoryIntegrated
。
Microsoft Entra 密码身份验证
要使用 Microsoft Entra 仅限云的标识用户帐户或那些使用 Microsoft Entra 混合标识的用户帐户连接到数据库,必须将身份验证关键字设置为 Active Directory Password
。 连接字符串必须包含“User ID/UID”和“Password/PWD”关键字和值。 将 <server_name>
、<email_address>
和 <password>
替换为适当的值。 下面的 C# 代码示例使用 ADO.NET。
string ConnectionString =
@"Data Source=<server-name>.database.chinacloudapi.cn; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
通过 Microsoft Entra 身份验证 GitHub 演示中提供的演示代码示例,了解有关 Microsoft Entra 身份验证方法的详细信息。
sqlcmd
以下语句使用 sqlcmd 版本 13.1 进行连接。 下载适用于 SQL Server 的 Microsoft 命令行实用程序 14.0。
注意
带 -G
的 sqlcmd
命令不适用于系统标识,它需要用户主体登录名。
sqlcmd -S <database or datawarehouse name>.<server-name>.database.chinacloudapi.cn -G
sqlcmd -S <database or datawarehouse name>.<server-name>.database.chinacloudapi.cn -U adrian@contoso.com -P <password> -G -l 30
在 Azure 门户查询编辑器(Azure SQL 数据库)中连接
有关 Azure SQL 数据库的 Azure 门户查询编辑器的详细信息,请参阅快速入门:使用 Azure 门户查询编辑器查询 Azure SQL 数据库。
在 Azure 门户中导航到 SQL 数据库。 例如,访问 Azure SQL 仪表板。
在 Azure 门户 的 SQL 数据库“概述”页面上,从左侧菜单中选择“查询编辑器”。
在登录屏幕上的“欢迎使用 SQL 数据库查询编辑器”下,选择“以<用户或组 ID 的身份继续>”。