使用多重 Azure Active Directory 身份验证

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

Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse Analytics 支持使用“Azure Active Directory - 通用且具有 MFA 支持”身份验证从 SQL Server Management Studio (SSMS) 进行连接。 本文讨论了各种身份验证选项之间的差异,以及与将 Azure Active Directory (Azure AD) 中的通用身份验证用于 Azure SQL 相关的限制。

下载最新 SSMS - 在客户端计算机上,从 下载 SQL Server Management Studio (SSMS) 下载最新版本的 SSMS。

备注

在 2021 年 12 月,将不再使用 MFA 通过 Azure Active Directory 对 18.6 版之前的 SSMS 版本进行身份验证。

若要继续将 MFA 与 Azure Active Directory 身份验证结合使用,需要 SSMS 18.6 或更高版本

对于本文中讨论的所有功能,请至少使用 2017 年 7 月的版本 17.2。 最新连接对话框的外观应类似于下图:

SQL Server Management Studio 中“连接到服务器”对话框的屏幕截图,其中显示了服务器类型、服务器名称和身份验证的设置。

身份验证选项

Azure AD 有两种非交互式身份验证模型,它们可用于许多不同的应用程序(ADO.NET、JDCB、ODC 等)。 这两种方法绝对不会产生弹出式对话框:

  • Azure Active Directory - Password
  • Azure Active Directory - Integrated

同时支持 Azure AD 多重身份验证 (MFA) 的交互式方法是:

  • Azure Active Directory - Universal with MFA

Azure AD MFA 可保护对数据和应用程序的访问,同时满足用户对简单登录过程的需求。 它利用一系列简单的验证选项(电话、短信、含有 PIN 码的智能卡或移动应用通知)提供强身份验证,用户可以根据自己的偏好选择所用的方法。 配合使用 Azure AD 和交互式 MFA 时会出现用于验证的弹出式对话框。

有关 Azure AD 多重身份验证的说明,请参阅多重身份验证。 有关配置步骤,请参阅配置 SQL Server Management Studio 的 Azure SQL 数据库多重身份验证

Azure AD 域名称或租户 ID 参数

SSMS 版本 17 开始,以来宾用户身份从其他 Azure Active Directory 导入到当前 Azure AD 的用户在连接时可提供 Azure AD 域名或租户 ID。 来宾用户包括从其他 Azure AD、Microsoft 帐户(如 outlook.com、hotmail.com、live.com)或其他帐户(如 gmail.com)邀请的用户。 此信息让 Azure Active Directory - Universal with MFA 身份验证能够识别正确的身份验证授权。 此选项也是支持 outlook.com、hotmail.com、live.com 等 Microsoft 帐户 (MSA) 或非 MSA 帐户的必需选项。

所有要使用通用身份验证进行身份验证的来宾用户必须输入其 Azure AD 域名或租户 ID。 此参数表示 Azure SQL 逻辑服务器当前关联的 Azure AD 域名或租户 ID。 例如,如果 SQL 逻辑服务器与 Azure AD 域 contosotest.partner.onmschina.cn(其中用户 joe@contosodev.partner.onmschina.cn 作为从 Azure AD 域 contosodev.partner.onmschina.cn 导入的用户托管)相关联,则用于对此用户进行身份验证的域名需要为 contosotest.partner.onmschina.cn。 如果用户是与 SQL 逻辑服务器关联的 Azure AD 的本机用户,并且不是 MSA 帐户,则无需提供域名或租户 ID。 若要输入参数(从 SSMS 版本 17.2 开始),请执行以下此操作:

  1. 在 SSMS 中打开一个连接。 输入服务器名称,然后选择“Azure Active Directory - 通用且具有 MFA 支持”身份验证。 添加要用于登录的“用户名”。

  2. 选择“选项”框,然后转到“连接属性”选项卡。在“连接到数据库”对话框中,针对你的数据库填写对话框。 选中“AD 域名或租户 ID”框,并提供身份验证机构,如域名 (contosotest.partner.onmschina.cn) 或租户 ID 的 GUID。

    “连接属性”选项卡的屏幕截图,其中突出显示了“连接到数据库”和“AD 域名或租户 ID”的设置。

如果运行的是 SSMS 18.x 或更高版本,则来宾用户不再需要 AD 域名或租户 ID,因为 18.x 或更高版本会自动识别它。

SSMS 的“连接到服务器”对话框中“连接属性”选项卡的屏幕截图。在“连接到数据库”字段中选择了“MyDatabase”。

Azure AD 企业到企业支持

重要

公共预览版目前不支持来宾用户在不成为某个组的成员的情况下连接到 Azure SQL 数据库、SQL 托管实例和 Azure Synapse。 有关详细信息,请参阅创建 Azure AD 来宾用户并将其设置为 Azure AD 管理员

作为来宾用户受 Azure AD B2B 方案支持的 Azure AD 用户(请参阅什么是 Azure B2B 协作)只能作为在关联的 Azure AD 中创建并使用给定数据库中的 CREATE USER (Transact-SQL) 语句手动映射的组成员的一部分连接到 SQL 数据库和 Azure Synapse。 例如,如果 steve@gmail.com 受邀加入 Azure AD contosotest(具有 Azure Ad 域 contosotest.partner.onmschina.cn),则必须在 Azure AD 中创建包含 steve@gmail.com 成员的 Azure AD 组(如 usergroup)。 随后,必须通过执行 Transact-SQL CREATE USER [usergroup] FROM EXTERNAL PROVIDER 语句,通过 Azure AD SQL 域或 Azure AD DBO 为特定数据库(例如,MyDatabase)创建此组。

创建数据库用户后,用户 steve@gmail.com 随后可以使用 SSMS 身份验证选项 Azure Active Directory – Universal with MFA 登录 MyDatabase。 默认情况下,usergroup 仅具有连接权限。 任何进一步的数据访问权限需要由具有足够特权的用户在数据库中授予

备注

对于 SSMS 17.x,如果使用 steve@gmail.com 作为来宾用户,则必须选中“AD 域名或租户 ID”框,然后在“连接属性”对话框中添加 AD 域名 contosotest.partner.onmschina.cn。 “Azure Active Directory - 通用且具有 MFA 支持”身份验证仅支持“AD 域名或租户 ID”选项。 否则,该复选框会显示为灰色。

通用身份验证限制

  • SSMS 和 SqlPackage.exe 是目前唯一通过 Active Directory 通用身份验证针对 MFA 启用的工具。
  • SSMS 版本 17.2 支持使用具有 MFA 支持的通用身份验证进行多用户并发访问。 对于 SSMS 版本 17.0 和 17.1,工具将 SSMS 实例限制为使用通用身份验证登录到单个 Azure Active Directory 帐户。 若要以另一个 Azure AD 帐户登录,则必须使用另一个 SSMS 实例。 此限制限于 Active Directory 通用身份验证;可以使用 Azure Active Directory - Password 身份验证、Azure Active Directory - Integrated 身份验证或 SQL Server Authentication 登录其他服务器。
  • 对于对象资源管理器、查询编辑器和查询存储可视化效果,SSMS 支持 Active Directory 通用身份验证。
  • SSMS 版本 17.2 为导出/提取/部署数据数据库提供 DacFx 向导支持。 在特定用户使用通用身份验证通过初始身份验证对话框进行了身份验证之后,DacFx 向导的工作方式与针对所有其他身份验证方法的方式相同。
  • SSMS 表设计器不支持通用身份验证。
  • 除了必须使用支持的 SSMS 版本,Active Directory 通用身份验证没有其他软件需求。
  • 有关用于通用身份验证的最新 Active Directory 身份验证库 (ADAL) 版本,请参阅以下链接:Microsoft.IdentityModel.Clients.ActiveDirectory

后续步骤