如何使用 Microsoft Entra ID 和 Kerberos 为 Azure SQL 托管实例设置 Windows 身份验证

本文概述了如何设置基础结构和托管实例,以使用 Microsoft Entra ID(前 Azure Active Directory为 Azure SQL 托管实例上的主体实现 Windows 身份验证

使用 Microsoft Entra ID 和 Kerberos 为 Azure SQL 托管实例设置 Windows 身份验证有两个阶段。

  • 一次性基础设施搭建。
    • 同步 Active Directory (AD) 和 Microsoft Entra ID(如果尚未完成)。
    • 启用新式交互式身份验证流(如果可用)。 如果组织使用的是已加入 Microsoft Entra混合加入型客户端,且客户端运行 Windows 10 20H1/Windows Server 2022 及更高版本,建议使用新式交互式流。
    • 设置传入的基于信任的身份验证流。 如果客户无法使用现代交互式流程但已将 AD 加入运行 Windows 10/Windows Server 2012 及更高版本的客户端,则建议使用此方法。
  • Azure SQL 托管实例的配置。
    • 为每个托管实例创建系统分配的服务主体。

备注

Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。

一次性基础设施配置

基础结构设置的第一步是将 AD 与 Microsoft Entra ID 同步(如果尚未完成)。

在此之后,系统管理员配置身份验证流。 有两个身份验证流可用于在 Azure SQL 托管实例上为 Microsoft Entra 主体实现 Windows 身份验证:传入的基于信任的流支持运行 Windows Server 2012 或更高版本的已加入 AD 的客户端,而现代交互式流支持运行 Windows 10 21H1 或更高版本的已加入 Microsoft Entra 的客户端。

将 AD 与 Microsoft Entra ID 同步

客户应首先实现 Microsoft Entra Connect ,以便将本地目录与 Microsoft Entra ID 集成。

选择要实现的身份验证流

下图显示了新式交互流和基于信任流的适用性及核心功能。

显示选择身份验证流的条件的决策树。

“该决策树显示:新式交互式流适用于运行 Windows 10 20H1 或 Windows Server 2022 或更高版本的客户端,且这些客户端已仅加入或混合加入 Microsoft Entra。 基于信任的传入流适用于运行 Windows 10 或 Windows Server 2012 或更高版本的客户端,且这些客户端已加入 AD。”

新式交互式流适用于运行 Windows 10 21H1 及更高版本的启发式客户端,且这些客户端已仅加入或混合加入 Microsoft Entra。 在现代交互流程中,用户无需与域控制器(DCs)直接连接即可访问 Azure SQL 托管实例。 无需在客户的 AD 中创建信任对象。 若要启用新式交互式流,管理员将为登录期间使用的 Kerberos 身份验证票证(TGT)设置组策略。

传入的基于信任的流适用于运行 Windows 10 或 Windows Server 2012 及更高版本的客户端。 此流要求将客户端加入 AD,并能够从本地部署访问 AD。 在基于信任的传入流中,信任对象在客户的 AD 中创建,并在 Microsoft Entra ID 中注册。 若要启用基于传入信任的流,管理员将使用 Microsoft Entra ID 设置传入信任,并通过组策略设置 Kerberos 代理。

新式交互式身份验证流

需要满足以下先决条件才能实施现代交互式身份验证流程:

先决条件 DESCRIPTION
客户端必须运行 Windows 10 20H1、Windows Server 2022 或更高版本的 Windows。
客户端必须已加入 Microsoft Entra已混合加入 Microsoft Entra 你可以通过运行 dsregcmd 命令来确定是否满足此先决条件:dsregcmd.exe /status
应用程序必须通过交互式会话连接到托管实例。 这支持 SQL Server Management Studio (SSMS) 和 Web 应用程序等应用程序,但不适用于作为服务运行的应用程序。
Microsoft Entra 租户。
计划用于身份验证的同一 Microsoft Entra 租户下的 Azure 订阅。
已安装 Microsoft Entra Connect 混合环境,身份同时存在于 Microsoft Entra ID 和 AD 中。

有关启用此身份验证流的步骤,请参阅如何使用现代交互式流为 Microsoft Entra ID 设置 Windows 身份验证

传入中的基于信任的身份验证流

实现传入的基于信任的身份验证流程需要以下先决条件:

先决条件 DESCRIPTION
客户端必须运行 Windows 10、Windows Server 2012 或更高版本的 Windows。
客户必须加入 AD。 域的功能级别必须是 Windows Server 2012 或更高版本。 可以通过运行 dsregcmd 命令:dsregcmd.exe /status来确定客户端是否建立 AD 联接
Azure AD 混合身份验证管理模块。 此 PowerShell 模块提供本地设置管理功能。
Microsoft Entra 租户。
计划用于身份验证的同一 Microsoft Entra 租户下的 Azure 订阅。
已安装 Microsoft Entra Connect 混合环境,身份同时存在于 Microsoft Entra ID 和 AD 中。

有关启用此身份验证流的说明,请参阅如何使用基于传入信任的流为 Microsoft Entra ID 设置 Windows 身份验证

配置 Azure SQL 托管实例

对于传入的基于信任的身份验证流程和现代交互式身份验证流程,设置 Azure SQL 托管实例的步骤是相同的。

配置托管实例的先决条件

要为 Microsoft Entra 主体的 Windows 身份验证配置托管实例,需要满足以下先决条件:

先决条件 DESCRIPTION
Az.Sql PowerShell 模块 此 PowerShell 模块为 Azure SQL 资源提供管理 cmdlet。 通过运行以下 PowerShell 命令安装此模块:Install-Module -Name Az.Sql
Microsoft Graph PowerShell 模块 此模块为 Microsoft Entra ID 的管理任务提供管理命令行脚本,例如用户和服务主体管理。 通过运行以下 PowerShell 命令安装此模块:Install-Module -Name Microsoft.Graph
托管实例 你可以创建新的托管实例,也可以使用现有的托管实例。

配置每个托管实例

有关配置每个托管实例的步骤,请参阅为 Microsoft Entra ID 的 Windows 身份验证配置 Azure SQL 托管实例

局限性

以下限制适用于 Azure SQL 托管实例上 Microsoft Entra 主体的 Windows 身份验证:

不适用于 Linux 客户端

Microsoft Entra 主体的 Windows 身份验证目前仅支持运行 Windows 的客户端计算机。

Microsoft Entra ID 缓存登录

Windows 限制其与 Microsoft Entra ID 的连接频率,因此在客户端计算机升级或全新部署后的 4 小时内,用户帐户可能无法获得已刷新的 Kerberos 票证授权票据 (TGT)。 没有刷新 TGT 的用户帐户会导致来自 Microsoft Entra ID 的票证请求失败。

作为管理员,可以通过在客户端计算机上运行以下命令来立即触发联机登录来处理升级方案,然后锁定和解锁用户会话以获取刷新的 TGT:

dsregcmd.exe /RefreshPrt

后续步骤

详细了解如何为 Azure SQL 托管实例上的 Microsoft Entra 主体实现 Windows 身份验证: