适用于 SQL Server 的 Microsoft Entra 身份验证

适用于: SQL Server 2022 (16.x)

SQL Server 2022 (16.x) 引入了对使用 Microsoft Entra ID(以前称为 Azure Active Directory)在本地 Windows 和 Linux 以及 Windows Azure 虚拟机上的 SQL Server 进行身份验证的支持。

将 Microsoft Entra ID 与独立的 SQL Server 实例或 AlwaysOn 可用性组配合使用。 SQL Server 故障转移群集实例目前不支持Microsoft Entra 身份验证。

概述

现在可以使用以下 Microsoft Entra 身份验证方法连接到 SQL Server:

  • 默认身份验证
  • 用户名和密码
  • 集成
  • 全局使用多重身份验证
  • 服务主体
  • 托管的标识
  • 访问令牌

当前的身份验证模式 SQL 身份验证和 Windows 身份验证保持不变。

Microsoft Entra ID 是 Azure 基于云的标识和访问管理服务。 Microsoft Entra ID 在概念上类似于 Active Directory,提供一个集中式存储库,用于管理对组织资源的访问权限。 标识是 Microsoft Entra ID 中表示用户、组或应用程序的对象。 可以通过基于角色的访问控制为其分配权限,并用于对 Azure 资源进行身份验证。 以下应用程序支持 Microsoft Entra 身份验证:

  • Azure SQL 数据库
  • Azure SQL 托管实例
  • Windows Azure 虚拟机上的 SQL Server
  • Azure Synapse Analytics
  • SQL Server

有关更多信息,请参阅“将 Microsoft Entra 与 Azure SQL 一起使用”和“使用 Azure SQL 配置并管理 Microsoft Entra 身份验证”。

如果 Windows Server Active Directory 与 Microsoft Entra ID 联合,则用户可使用 Windows 凭据(作为 Windows 登录名或 Microsoft Entra 登录名)向 SQL Server 进行身份验证。 尽管 Microsoft Entra ID 并非支持 Windows Server Active Directory 支持的所有 AD 功能,例如服务帐户或复杂网络林体系结构, 不过 Microsoft Entra ID 也提供了 Active Directory 并不支持的其他功能,例如多重身份验证。 比较 Microsoft Entra ID 与 Active Directory,了解更多信息。

使用 Microsoft Entra ID 连接 SQL Server 到 Azure

要使 SQL Server 与 Azure 通信,SQL Server 和运行它的 Windows 或 Linux 主机都必须注册到 Azure Arc。要使 SQL Server 与 Azure 通信,需要安装 Azure Arc 代理适用于 SQL Server 的 Azure 扩展

若要开始操作,请参阅将 SQL Server 连接到 Azure Arc

注意

如果在 Azure 虚拟机上运行 SQL Server,则无需向 Azure Arc 注册虚拟机,必须改为向 SQL IaaS 代理扩展注册虚拟机。 注册虚拟机后,请参阅“在 Azure 虚拟机上的 SQL Server 启用 Azure AD 身份验证”,以获取更多详细信息。

默认身份验证

Microsoft Entra ID 的默认身份验证选项通过无密码和非交互式机制(包括托管标识、Visual Studio、Visual Studio Code、Azure CLI 等)进行身份验证。

用户名和密码

允许向客户端和驱动程序指定用户名和密码。 出于安全原因,许多租户通常会禁用用户名和密码方法。 尽管连接已加密,但最佳做法是/建议尽可能避免使用用户名和密码,因为需要通过网络发送密码。

集成

通过集成 Windows 身份验证 (IWA),Microsoft Entra ID 为拥有本地基础结构和云基础结构的组织提供解决方案。 本地 Active Directory 域可以通过联合与 Microsoft Entra ID 同步,允许在 Microsoft Entra ID 中处理管理和访问控制,而用户身份验证仍在本地进行。 使用 IWA,根据 Active Directory 对用户的 Windows 凭据进行身份验证,成功后,Microsoft Entra ID 中的用户身份验证令牌将返回到 SQL。

全局使用多重身份验证

这是适用于 Microsoft Entra 帐户的具有多重身份验证选项的标准交互方法。 这在大多数情况下都适用。

服务主体

服务主体是一个 标识,可创建用于自动化工具、作业和应用程序。 通过服务主体身份验证方法,可以使用服务主体标识的客户端 ID 和密钥连接到 SQL Server 实例。

托管的标识

托管标识是特殊形式的服务主体。 有两种类型的托管标识:系统分配的托管标识和用户分配的托管标识。 直接在 Azure 资源上启用系统分配的托管标识,而用户分配的托管标识可以分配给一个或多个 Azure 资源的独立资源。

注意

要使用托管标识通过 GUI 客户端(如 SSMS 和 ADS)连接到 SQL 资源,则运行客户端应用程序的计算机必须有一个 Microsoft Entra 客户端,该客户端与存储在其中的标识证书一起运行。 这通常是通过 Azure VM 实现的,因为通过 VM 的门户窗格可以轻松地将标识分配给计算机。

对于 SQL Server Management Studio (SSMS) 等使用 Azure 标识库的工具,在使用托管标识进行连接时,需要使用 GUID 进行登录,例如 abcd1234-abcd-1234-abcd-abcd1234abcd1234。 有关详细信息,请参阅 (ManagedIdentityCredential。 如果错误传递了用户名,则会出现错误,例如:

ManagedIdentityCredential authentication unavailable. The requested identity has not been assigned to this resource.
Status: 400 (Bad Request)
Content:
{"error":"invalid_request","error_description":"Identity not found"}

访问令牌

一些非 GUI 客户端(例如 Invoke-sqlcmd)允许提供访问令牌。 访问令牌的范围或受众必须是 https://database.windows.net/

注解

  • 对于 Microsoft Entra 身份验证,仅支持使用 Windows 或 Linux 操作系统,或 Windows Azure 虚拟机上的 SQL Server 2022 的本地 SQL Server 2022 (16.x)。
  • 要将 SQL Server 连接到 Azure Arc,Microsoft Entra 帐户需要以下权限:
    • 资源组中“Azure Connected Machine 加入”组或“参与者”角色的成员
    • 资源组中“Azure Connected Machine 资源管理员”角色的成员
    • 资源组中“读者”角色的成员
  • SQL Server 故障转移群集实例不支持Microsoft Entra 身份验证