你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 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 凭证登录,请使用此方法。 有关详细信息,请参阅 Microsoft Entra 无缝单一登录。
启动 SSMS 或 SSDT,然后在“连接到服务器”(或“连接到数据库引擎”)对话框的“登录”选项卡中:
- 以
<server-name>.database.windows.net
格式提供“服务器名称”。 - 对于“身份验证”,选择“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.windows.net
格式提供“服务器名称”。 - 对于“身份验证”,选择“Microsoft Entra 密码”。
- 在“用户名”框中,以
username@domain.com
格式键入 Microsoft Entra 用户名。 用户名必须是 Microsoft Entra ID 中的帐户,或来自具有 Microsoft Entra ID 的托管域或联盟域的帐户。 - 在“密码”框中,键入 Microsoft Entra 帐户或托管/联盟域帐户的用户密码。
- 对于“加密”,请选择“严格(SQL Server 2022 和 Azure SQL)”,该加密应用于连接到 Azure SQL 资源。
- 以
在“连接属性”选项卡上的“连接到数据库”字段中,键入要连接到的用户数据库的名称。
Microsoft Entra MFA
通过此方法可以在使用多重身份验证 (MFA) 的情况下,使用以交互方式请求的密码进行交互式身份验证。 使用此方法能够以 Microsoft Entra 仅限云的标识用户身份或者以使用 Microsoft Entra 混合标识的用户身份,向 SQL 数据库、SQL 托管实例和 Azure Synapse Analytics 中的数据库进行身份验证。
以下步骤演示如何在最新版本的 SSMS 中使用多重身份验证进行连接。
要使用 MFA 进行连接,请在 SSMS 的“连接到服务器”对话框中选择“Microsoft Entra MFA”。
使用服务器名称填充“服务器名称”框。 使用 Microsoft Entra 凭据填充“用户名”框,格式为
user_name@domain.com
。选择“连接” 。
出现“登录到帐户”对话框时,它应该已使用你在步骤 2 中提供的用户名进行了预填充。 如果用户属于与 Microsoft Entra ID 联合的域,则无需任何密码。
系统会提示你使用基于 MFA 管理员设置配置的方法之一进行身份验证。
验证完成后,SSMS 便会正常连接(前提是凭据和防火墙访问有效)。
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 无缝单一登录。
连接到数据库的客户端应用程序(或服务)必须运行在已使用用户的域凭据加入域的计算机上。
要使用集成的身份验证和 Microsoft Entra 标识连接到数据库,必须将数据库连接字符串中的 Authentication
关键字设置为 Active Directory Integrated
。 将 <server_name>
替换为你的逻辑服务器名称。 下面的 C# 代码示例使用 ADO.NET。
string ConnectionString = @"Data Source=<server-name>.database.windows.net; 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.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
通过 Microsoft Entra 身份验证 GitHub 演示中提供的演示代码示例,了解有关 Microsoft Entra 身份验证方法的详细信息。
Microsoft Entra ID 访问令牌
此身份验证方法允许中间层服务通过获取 JSON Web 令牌 (JWT) 来连接到 SQL 数据库中的数据库、SQL 托管实例,或通过从 Microsoft Entra ID 获取令牌来连接到 Azure Synapse。 此方法可实现各种应用程序方案,包括使用基于证书的身份验证的服务标识、服务主体和应用程序。 必须完成四个基本步骤才能使用 Microsoft Entra 令牌身份验证:
- 使用 Microsoft Entra ID 注册应用程序并获取代码的客户端 ID。
- 创建表示应用程序的数据库用户(如创建映射到 Microsoft Entra 标识的包含的用户部分中所述)。
- 在运行应用程序的客户端计算机上创建证书。
- 为应用程序添加用作密钥的证书。
示例连接字符串。 将 <server-name>
替换为你的逻辑服务器名称:
string ConnectionString = @"Data Source=<server-name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();
有关详细信息,请参阅 SQL Server 安全性博客。 有关添加证书的详细信息,请参阅 Microsoft Entra ID 中基于证书的身份验证入门。
Microsoft Entra 多重身份验证
Microsoft Entra 多重身份验证是所有 SQL 工具支持的身份验证方法。 有关使用 Microsoft Entra ID 以编程方式进行身份验证的信息,请参阅 Microsoft 身份验证库 (MSAL) 概述。
sqlcmd
以下语句使用 sqlcmd 版本 13.1 进行连接。 下载适用于 SQL Server 的 Microsoft 命令行实用程序 14.0。
注意
带 -G
的 sqlcmd
命令不适用于系统标识,它需要用户主体登录名。
sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -G
sqlcmd -S <database or datawarehouse name>.<server-name>.database.windows.net -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 的身份继续>”。