当 Kerberos 用于对客户端和服务标识进行相互身份验证时,服务主体名称(SPN)唯一标识 Active Directory 域中的服务实例。 SPN 与运行服务实例的登录帐户相关联。
对于通过 Kerberos 身份验证连接到 Analysis Services 的客户端应用程序,Analysis Services 客户端库使用连接字符串和其他已知变量(如服务类)中的主机名构造 SPN,这些变量在任何给定的 Analysis Services 版本中都是固定的。
若要进行相互身份验证,客户端构造的 SPN 必须与 Active Directory 域控制器 (DC) 上的相应 SPN 对象匹配。 这意味着,可能需要为单个 Analysis Services 实例注册多个 SPN,以涵盖用户在连接字符串上指定主机名的所有方式。 例如,您可能需要两个 SPN 来同时处理服务器的完全限定域名(FQDN)和计算机的短名称。 正确注册 Analysis Services SPN 对于成功连接至关重要。 如果 SPN 不存在、格式不正确或重复,连接将失败。
SPN 注册是由 Analysis Services 管理员执行的手动任务。 与 SQL Server 数据库引擎不同,Analysis Services 永远不会在服务启动时自动注册其 SPN。 当 Analysis Services 在默认虚拟帐户、域用户帐户或内置帐户(包括每个服务 SID)下运行时,需要手动注册。
如果服务在域管理员创建的预定义托管服务帐户下运行,则不需要 SPN 注册。 请注意,根据域的功能级别,注册 SPN 可能需要域管理员权限。
小窍门
Microsoft Kerberos Configuration Manager for SQL Server 是一款诊断工具,可帮助解决与 Kerberos Configuration Manager for SQL Server相关的连接问题。 有关详细信息,请参阅 Microsoft Kerberos Configuration Manager for SQL Server。
小窍门
Microsoft Kerberos Configuration Manager for SQL Server 是一款诊断工具,可帮助解决与 Kerberos Configuration Manager for SQL Server相关的连接问题。 有关详细信息,请参阅 Microsoft Kerberos Configuration Manager for SQL Server。
本主题包含以下部分:
需要 SPN 注册时
在连接字符串上指定“SSPI=Kerberos”的任何客户端连接都将引入 Analysis Services 实例的 SPN 注册要求。
在以下情况下,需要 SPN 注册。 有关详细信息,请参阅 配置 Kerberos 约束委派的分析服务。
标识委派是将用户标识从客户端应用程序或中间层服务流向 Analysis Services 所必需的。 在特定对象上定义每用户权限或筛选器时,通常会使用身份委派。
涉及身份委派的常见场景是配置中间层服务(如 Excel 服务或 Reporting 服务),以便在检索 Analysis 服务中的数据时进行受限的身份模拟。 为了支持此行为,您必须在为受限委派配置 Excel 服务或报表服务时,提供分析服务 SPN 作为目标服务。
Analysis Services 在使用 DirectQuery 模式时委托用户身份,以从 SQL Server 关系数据库检索数据。 这是 Analysis Services 将用户标识委托给另一个服务的唯一方案。
Analysis Services 的 SPN 格式
使用 setspn 注册 SPN。 在较新的操作系统上,setspn 被安装为一个系统实用工具。 有关详细信息,请参阅 SetSPN。
下表描述了 Analysis Services SPN 的每个部分。
| 元素 | DESCRIPTION |
|---|---|
| Service 类 | MSOLAPSvc.3 将服务标识为 Analysis Services 实例。 .3 是对 Analysis Services 传输中使用的 XMLA-over-TCP/IP 协议版本的引用。 它与产品发布无关。 因此,MSOLAPSvc.3 是 SQL Server 2005、2008、2008 R2、2012 以及任何未来版本的 SQL Server 和 Analysis Services 的正确服务类,直到协议本身被修改为止。 |
| 主机名 | 标识运行服务的计算机。 这可以是完全限定的域名或 NetBIOS 名称。 应为这两者注册 SPN。 为服务器的 NetBIOS 名称注册 SPN 时,请务必用于 SetupSPN -S 检查是否存在重复注册。 无法保证 NetBIOS 名称在林中是唯一的,并且具有重复的 SPN 注册将导致连接失败。对于 Analysis Services 负载均衡群集,主机名应为分配给群集的虚拟名称。 切勿使用 IP 地址创建 SPN。 Kerberos 使用域的 DNS 解析功能。 指定 IP 地址会绕过该功能。 |
| 端口号 | 虽然端口号是 SPN 语法的一部分,但在注册 Analysis Services SPN 时,你永远不会指定端口号。 在标准 SPN 语法中,冒号(:)字符通常用于提供端口号,而在 Analysis Services 中,该字符用于指定实例名称。 对于 Analysis Services 实例,该端口假定为默认端口(TCP 2383)或由 SQL Server 浏览器服务(TCP 2382)分配的端口。 |
| 实例名称 | Analysis Services 是可复制的服务,可在同一计算机上安装多次。 每个实例都通过其实例名称进行标识。 实例名称以冒号 (: ) 字符为前缀。 例如,给定名为 SRV01 的主机和 SSAS-Tabular 的命名实例,SPN 应为 SRV01:SSAS-Tabular。 请注意,指定命名 Analysis Services 实例的语法不同于其他 SQL Server 实例使用的语法。 其他服务使用反斜杠 (\ ) 在 SPN 中追加实例名称。 |
| 服务账号 | 这是 MSSQLServerOLAPService Windows 服务的启动帐户。 它可以是 Windows 域用户帐户、虚拟帐户、托管服务帐户(MSA)或内置帐户,例如按服务 SID、NetworkService 或 LocalSystem。 Windows 域用户帐户可以格式化为域\用户或user@domain。 |
SPN 注册虚拟帐户
虚拟帐户是 SQL Server 服务的默认帐户类型。 虚拟帐户对于默认实例是 NT Service\MSOLAPService,对于命名实例是 NT Service\MSOLAP$<实例名称>。
顾名思义,Active Directory 中不存在这些帐户。 虚拟帐户仅存在于本地计算机上。 连接到外部服务、应用程序或设备时,将使用本地计算机帐户建立连接。 因此,在虚拟帐户下运行的 Analysis Services 的 SPN 注册实际上是计算机帐户的 SPN 注册。
NT Service\MSOLAPService 上运行默认实例的示例语法
此示例显示了在默认虚拟帐户下运行的 Analysis Services 默认实例的 setspn 语法。 在此示例中,计算机主机名为 AW-SRV01。 如上所述,SPN 注册必须指定 计算机帐户 而不是虚拟帐户 NT Service\MSOLAPService。
Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01
注释
请记住创建两个 SPN 注册,一个用于 NetBIOS 主机名,另一个用于主机的完全限定域名。 连接到 Analysis Services 时,不同的客户端应用程序使用不同的主机名约定。 拥有两个 SPN 注册可确保这两个版本的主机名都考虑在内。
作为 NT Service\MSOLAP$<instance-name 运行的命名实例的示例语法>
此示例显示默认虚拟帐户下运行的命名实例的 setspn 语法。 在此示例中,计算机主机名为 AW-SRV02,实例名称为 AW-FINANCE。 同样,它是为 SPN 指定的计算机帐户,而不是虚拟帐户 NT Service\MSOLAP$<instance-name>。
Setspn -s MSOLAPSvc.3/AW-SRV02.AdventureWorks.com:AW-FINANCE AW-SRV02
域帐户的 SPN 注册
使用域帐户运行 Analysis Services 实例是一种常见做法。
对于在网络或硬件负载均衡群集中运行的 Analysis Services 实例,需要使用域帐户,群集中的每个实例都在同一域帐户下运行。
作为域用户运行的默认实例的示例语法
此示例显示 AdventureWorks 域中域用户帐户 SSAS-Service 下运行的 Analysis Services 默认实例的 setspn 语法。
Setspn -s msolapsvc.3\AW-SRV01.Adventureworks.com AdventureWorks\SSAS-Service
小窍门
根据 SPN 的注册方式,通过运行 Setspn -L <domain account> 或 Setspn -L <machinename> 来验证是否已为 Analysis Services 服务器创建 SPN。 应该会在列表中看到 MSOLAPSVC.3/<主机名> 。
内置帐户的 SPN 注册
尽管不建议这样做,但旧版 Analysis Services 安装有时配置为在网络服务、本地服务或本地系统等内置帐户下运行。
内置帐户下运行的默认实例的示例语法
在内置帐户或每服务 SID 下运行的服务的 SPN 注册等效于用于虚拟帐户的 SPN 语法。 使用计算机帐户而不是帐户名称:
Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01
命名实例的 SPN 注册
Analysis Services 的命名实例使用 SQL Server Browser 服务检测到的动态端口分配。 使用命名实例时,为 SQL Server 浏览器服务和 Analysis Services 命名实例注册 SPN。 有关详细信息,请参阅 当您与 SQL Server Analysis Services 或 SQL Server 的命名实例建立连接时,SQL Server Browser 服务需要一个 SPN。
作为本地服务运行的 SQL 浏览器服务的 SPN 语法示例
服务类为 MSOLAPDisco.3。 默认情况下,此服务作为 NT AUTHORITY\LocalService 运行,这意味着为计算机帐户设置了 SPN 注册。 在此示例中,计算机帐户是 AW-SRV01,对应于计算机名称。
Setspn -S MSOLAPDisco.3/AW-SRV01.AdventureWorks.com AW-SRV01
SSAS 群集的 SPN 注册
对于 Analysis Services 故障转移群集,主机名应为分配给群集的虚拟名称。 这是在现有 WSFC 上安装 Analysis Services 时在 SQL Server 安装程序期间指定的 SQL Server 网络名称。 可以在 Active Directory 中找到此名称。 你还可以在 “故障转移群集管理器” | 角色资源 | 选项卡中找到它。应使用“资源”选项卡上的服务器名称作为 SPN 命令中的“虚拟名称”。
Analysis Services 群集的 SPN 语法
Setspn -s msolapsvc.3/<virtualname.FQDN > <domain user account>
回想一下,Analysis Services 群集中的节点需要使用默认端口(TCP 2383),并在同一域用户帐户下运行,以便每个节点具有相同的 SID。 有关详细信息,请参阅 如何群集 SQL Server Analysis Services 。
为 HTTP 访问配置的 SSAS 实例的 SPN 注册
根据解决方案要求,你可能已为 Analysis Services 配置了 HTTP 访问。 如果解决方案包含 IIS 作为中间层组件,并且 Kerberos 身份验证是解决方案要求,则可能需要手动为 IIS 注册 SPN。 有关详细信息,请参阅“在运行 IIS 的计算机上配置设置” ,了解如何配置 SQL Server 2008 Analysis Services 和 SQL Server 2005 Analysis Services 以使用 Kerberos 身份验证。
对于 Analysis Services 实例的 SPN 注册,为 TCP 或 HTTP 配置的实例之间没有区别。 从 IIS 使用 MSMDPUMP ISAPI 扩展连接到 Analysis Services 的方式始终是通过 TCP。
这意味着您可以使用前面部分的说明来注册 SPN,无论是默认实例还是命名实例。 指定主机名时,请确保在为 HTTP 访问配置服务时使用在 msmdpump.ini 文件中指定的主机名。
有关 HTTP 访问的详细信息,请参阅 配置对 Internet Information Services (IIS) 8.0 上的 Analysis Services 的 HTTP 访问。
侦听固定端口的 SSAS 实例的 SPN 注册
不能在 Analysis Services SPN 注册上指定端口号。 如果将 Analysis Services 安装为默认实例,并将其配置为侦听固定端口,则现在必须将其配置为侦听默认端口(TCP 2383)。 对于命名实例,需要使用 SQL Server Browser 服务和动态端口分配。
Analysis Services 实例只能侦听单个端口。 不支持使用多个端口。 有关端口配置的详细信息,请参阅 配置 Windows 防火墙以允许 Analysis Services 访问。
另请参阅
Microsoft BI 身份验证和标识委派
使用 Kerberos 进行相互身份验证
如何配置 SQL Server 2008 Analysis Services 和 SQL Server 2005 Analysis Services 以使用 Kerberos 身份验证
服务主体名称 (SPN) 的 SetSPN 语法 (Setspn.exe)
我使用什么 SPN 以及如何到达那里?
SetSPN
服务帐户分步指南
配置 Windows 服务帐户和权限
配置 Internet Information Services 上托管的 Web 应用程序时,如何使用 SPN
服务帐户中的新增功能
为 SharePoint 2010 产品配置 Kerberos 身份验证(白皮书)