如何使用 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 EntraMicrosoft Entra 或混合 Microsoft Entra。 传入的基于信任的流适用于运行 Windows 10 或 Windows Server 2012 或更高版本的客户端,其中客户端已加入 AD。”
现代交互式流程适用于运行 Windows 10 21H1 及更高版本且已加入 Microsoft Entra 或混合 Microsoft Entra 的启发式客户端。 在现代交互式流程中,用户无需访问域控制器 (DC) 即可访问 Azure SQL 托管实例。 无需在客户的 AD 中创建信任对象。 要启用现代交互流程,管理员需为登录期间使用的 Kerberos 身份验证票证 (TGT) 设置组策略。
传入的基于信任的流适用于运行 Windows 10 或 Windows Server 2012 及更高版本的客户端。 此流程要求客户端加入 AD 并且能够从本地访问 AD。 在传入的基于信任的流中,信任对象在客户的 AD 中创建并在 Microsoft Entra ID 中注册。 若要启用传入的基于信任的流,管理员需将使用 Microsoft Entra ID 设置传入信任并通过组策略设置 Kerberos 代理。
现代交互式身份验证流程
需要满足以下先决条件才能实施现代交互式身份验证流程:
先决条件 | 说明 |
---|---|
客户端必须运行 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 身份验证。
传入的基于信任的身份验证流
实现传入的基于信任的身份验证流程需要以下先决条件:
先决条件 | 说明 |
---|---|
客户端必须运行 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 身份验证配置托管实例,需要满足以下先决条件:
先决条件 | 说明 |
---|---|
Az.Sql PowerShell 模块 | 此 PowerShell 模块为 Azure SQL 资源提供管理 cmdlet。 通过运行以下 PowerShell 命令安装此模块:Install-Module -Name Az.Sql |
Microsoft Graph PowerShell 模块 | 此模块为 Microsoft Entra ID 管理任务(例如用户和服务主体管理)提供管理 cmdlet。 通过运行以下 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 身份验证: