你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文将向您展示如何使用 Microsoft Entra 认证连接 Azure Synapse Analytics。
Note
Microsoft Entra server principals 目前在 Azure Synapse Analytics 中处于预览阶段。
Prerequisites
要连接,你需要为你的 Azure Synapse 资源配置 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 标识连接到 Synapse SQL。
Microsoft Entra 集成方案
当你想使用已与 Microsoft Entra ID 建立联合的 Windows 凭证登录时,可以使用这种方法。 有关详细信息,请参阅 Microsoft Entra 无缝单一登录。
启动 SSMS 或 SSDT,然后在“连接到服务器”(或“连接到数据库引擎”)对话框的“登录”选项卡中:
- 输入 SQL 终结点的完全限定服务器名称。 关于端点格式,请参见 连接Synapse SQL。
- 对于“身份验证”,选择“Microsoft Entra Integrated”。 你不需要输入密码,因为连接时已使用你现有的凭证。
- 对于加密,请选择严格。
在“连接属性”选项卡上的“连接到数据库”字段中,键入要连接到的用户数据库的名称。
Microsoft Entra 密码
通过使用 Microsoft Entra 托管域连接 Microsoft Entra 主体名称时,使用该方法。 你也可以在无法访问域的情况下,比如远程工作时,将其用于联合身份帐户。
使用此方法,使用仅 Microsoft Entra 云端身份的用户或拥有 Microsoft Entra 混合身份的用户向 Synapse SQL 进行身份验证。 这种方法支持那些在本地机器未加入域时(例如使用远程访问时)使用Windows凭证的用户。
启动 SSMS 或 SSDT,然后在“连接到服务器”
(或“连接到数据库引擎” )对话框的“登录” 选项卡上: - 输入你SQL端点的完整限定 服务器名称 。 关于端点格式,请参见 连接Synapse SQL。
- 对于“身份验证”,选择“Microsoft Entra 密码”。
- 在“用户名”框中,以 格式键入 Microsoft Entra 用户名。
username@domain.com用户名必须是 Microsoft Entra ID 中的帐户,或来自具有 Microsoft Entra ID 的托管域或联盟域的帐户。 - 在“密码”框中,键入 Microsoft Entra 帐户或托管/联盟域帐户的用户密码。
- 对于加密,选择严格。
在“连接属性”选项卡上的“连接到数据库”字段中,键入要连接到的用户数据库的名称。
Microsoft Entra 多重身份验证 (MFA)
使用此方法通过 多重身份验证(MFA) 进行交互式身份验证,并以交互方式请求密码。 该方法可用于供仅具有 Microsoft Entra 云身份的用户或具有 Microsoft Entra 混合身份的用户向 Synapse SQL 进行身份验证。
以下步骤展示了如何在最新版本SSMS中使用多因素认证实现连接。
要通过多重身份验证连接,请在 SSMS 的 “连接到服务器” 对话框中选择 Microsoft Entra MFA。
使用服务器名称填充“服务器名称”框。 在 用户名 框中输入您的 Microsoft Entra 凭据,格式为
user_name@domain.com。选择 连接。
当“ 登录您的账户 ”对话框出现时,已经预先填充了你在第二步中提供的 用户名 。 如果用户属于与 Microsoft Entra ID 联合的域,则无需任何密码。
系统会提示你使用基于 MFA 管理员设置配置的方法之一进行身份验证。
验证完成后,SSMS 便会正常连接(前提是凭据和防火墙访问有效)。
Microsoft Entra 服务主体
使用该方法通过 Microsoft Entra 服务主体认证至 Synapse SQL。
Microsoft Entra 托管标识
使用此方法通过 Microsoft Entra 托管标识向 Synapse SQL 进行身份验证。 欲了解更多,请参见 Azure Synapse Analytics 的 Microsoft Entra 托管标识。
Microsoft Entra 默认
Microsoft Entra ID 的默认身份验证选项可通过无密码和非交互机制进行身份验证,包括托管身份。
从客户端应用程序进行连接
以下步骤展示了如何通过客户端应用使用 Microsoft Entra 身份连接到 Synapse SQL。 此列表未包含所有认证方法。 更多信息请参见 Microsoft Entra 认证和 SqlClient。
配置客户端应用程序
Note
System.Data.SqlClient 使用弃用的 Azure Active Directory 身份验证库 (ADAL)。 如果使用 System.Data.SqlClient 命名空间进行 Microsoft Entra 身份验证,请将应用程序迁移到 Microsoft.Data.SqlClient 和 Microsoft 身份验证库 (MSAL)。 要了解 .NET 中可用的连接方法,请参见 Microsoft Entra 认证和 SqlClient。
如果你必须继续在应用中使用 ADAL.DLL ,请使用本节链接安装包含最新 ADAL.DLL 库的ODBC或OLE DB驱动程序。
在你的应用程序或用户通过 Microsoft Entra 身份连接到 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 身份连接到数据库,请将数据库 连接字符串 Active Directory Integrated中的关键字设置为 Authentication 。 将 <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 连接到 Synapse SQL。 建立 ODBC 连接时,去除空格并将认证设置为 ActiveDirectoryIntegrated。
Microsoft Entra 密码身份验证
若要使用 Microsoft Entra 仅云身份用户帐户或使用 Microsoft Entra 混合身份的用户连接到数据库,请将 Authentication 关键字设置为 Active Directory Password。 连接字符串必须包含用户 ID/和 Password/UID 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 访问令牌
这种认证方法允许中层服务从 Microsoft Entra ID 获取 JSON Web 令牌(JWT),并使用从 Microsoft Entra ID 获取的令牌连接到 Synapse SQL。 此方法可实现各种应用程序方案,包括使用基于证书的身份验证的服务标识、服务主体和应用程序。 必须完成四个基本步骤才能使用 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();
有关添加证书的详细信息,请参阅 Microsoft Entra ID 中基于证书的身份验证入门。
Microsoft Entra多重身份验证
Microsoft Entra 多重身份验证是所有 SQL 工具支持的身份验证方法。 有关使用 Microsoft Entra ID 以编程方式进行身份验证的信息,请参阅 Microsoft 身份验证库 (MSAL) 概述。
sqlcmd
以下语句使用 sqlcmd 版本 13.1 进行连接。 下载适用于 SQL Server 的 Microsoft 命令行实用程序 14.0。
Note
带 -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