SharePoint 集成模式下的 Reporting Services 安全性概述

当您将报表服务器配置为在 SharePoint 集成模式下运行时,报表服务器将使用在 SharePoint Web 应用程序中定义的身份验证提供程序和权限来控制对报表服务器项和操作的访问。

通过 SharePoint 安全策略来授予项和操作的访问权限,这些策略可映射拥有与项相关的某个权限级别的用户帐户或组帐户。从概念上说,它与如何在本机模式的报表服务器部署中使用角色分配相同;在本机模式的报表服务器部署中,角色分配将用户帐户或组帐户映射到与项相关的一组允许的任务。与大多数基于角色的身份验证模型相同,SharePoint 安全性通过提供权限继承来降低维护大量策略所带来的复杂性和管理负担。

如果您准备将报表服务器内容类型部署到 SharePoint 站点,则需了解以下内容:

在设置权限之前,必须配置各服务器以便进行集成。有关详细信息,请参阅将 Reporting Services 配置为 SharePoint 2010 集成模式

SharePoint Technologies 中的身份验证提供程序

SharePoint Web 应用程序可以使用 Windows 身份验证或窗体身份验证。报表服务器将处理来自二者的请求。可以将身份验证配置为以下组合:

  • 使用 Kerberos 的 Windows 身份验证

  • 使用 NT LAN Manager (NTLM) 的 Windows 身份验证

  • 窗体身份验证

注意注意

Reporting Services 和 SharePoint 产品及技术均支持窗体身份验证。但是各产品组的实现方式不同,而且它们不兼容。在 SharePoint 集成模式下运行的报表服务器不支持 Reporting Services 自定义身份验证扩展插件。

下表总结了每种身份验证提供程序的优点和缺点:

优点

缺点

使用 Kerberos 的 Windows 身份验证

在单服务器和多服务器部署方案下均适用。

支持使用 Windows 集成凭据访问外部数据源。

在多服务器部署的情况下不能使用 NTLM 身份验证。

要求复杂的域和配置服务器配置。

使用 NTLM 或窗体身份验证的 Windows 身份验证

适用于 Kerberos 和所有非 Kerberos 身份验证方案。

不支持使用 Windows 集成凭据访问外部数据源。

SharePoint 声明身份验证

SharePoint 2010 产品支持基于声明的身份验证。SharePoint 集成模式下的 SQL Server 2008 R2 Reporting Services 将通过受信任帐户身份验证和 SharePoint 用户标记,使用启用 SharePoint 声明的 Web 应用程序。有关 Reporting Services 如何支持声明身份验证的详细信息,请参阅声明身份验证和 Reporting Services。有关基于声明的身份验证的详细信息,请参阅 Claims-Based Identity Overview(基于声明的标识概述)。

将请求发送到报表服务器

针对报表服务器项或操作的所有请求必须是经过身份验证的有效请求。您使用的身份验证提供程序决定了请求的处理方式。

使用 Kerberos 的 Windows 集成安全性

如果 SharePoint Web 应用程序配置为使用 Kerberos 的 Windows 身份验证,则 SharePoint Web 应用程序与报表服务器之间的连接可使用当前 Windows 用户的模拟凭据或委托凭据。通过使用具有 Kerberos 和标识委托的 Windows 集成安全性,可以消除典型的“双跃点”问题,即 Windows 凭证在单次连接后便过期。它还可以扩充为报表和模型配置数据源连接时可用的一组选项。下图显示的是当报表服务器配置为与 SharePoint 集成,且 SharePoint Web 应用程序使用具有 Kerberos 和标识委托的 Windows 身份验证时的连接情况。

SharePoint 集成模式中的连接

  • 连接 1
    用户使用登录网络时创建的用户令牌访问 SharePoint 站点。它包含用户标识和组成员身份。SharePoint Web 应用程序验证用户身份。用户请求报表服务器项或操作。

  • 连接 2
    SharePoint Web 应用程序将令牌和请求发送到报表服务器。发送连接请求时使用用户的委托的 Windows 标识。报表服务器验证用户的身份,以便查看是否允许该用户访问报表服务器。

  • 连接 3
    如果身份验证成功,则报表服务器将使用 Reporting Services 实例的用户帐户来建立与 SharePoint 内容数据库的连接,以便确认已授权该用户访问该项或操作。如果授权成功,则报表服务器将对请求提供服务。

  • 连接 4
    如果用户正在查看某个报表,则报表服务器可以在报表处理期间委托用户的 Windows 标识,以便从外部数据源检索数据。也就是说,在为报表设置数据源属性时,可以为数据源连接选择**“Windows 集成安全性”**选项。有关详细信息,请参阅 SQL Server 联机丛书中的为报表的数据源指定凭据和连接信息如何创建和管理共享数据源(SharePoint 集成模式下的 Reporting Services)

Windows 身份验证或窗体身份验证以及可信帐户

如果 SharePoint Web 应用程序配置为使用窗体身份验证或者使用 NTLM 的 Windows 身份验证,则使用有权模拟报表服务器上的 SharePoint 用户的预定义可信帐户来通过网络发送到报表服务器的连接。下图显示的是使用可信帐户和 SharePoint 用户标识时的连接。

可信连接的连接关系图

  • 连接 1
    用户登录到 SharePoint 站点。SharePoint Web 应用程序验证用户身份。SharePoint Web 应用程序将用户标识转换为 SharePoint 用户标识 (SPUser)。在 SPUser 的上下文中为该用户创建新的用户令牌。它包含用户标识和组成员身份。用户请求报表服务器项或操作。

  • 连接 2
    SharePoint Web 应用程序使用可信帐户连接到报表服务器,这是 SharePoint Web 应用程序的进程标识。然后,SharePoint Web 应用程序在针对某一项或某一操作的请求中模拟该 SharePoint 用户标识。

    报表服务器将连接请求与报表服务器启动时从 SharePoint 配置数据库中检索到的帐户信息进行比较,验证连接请求是否来自可信帐户。在报表服务器上,可信帐户是拥有模拟 SharePoint Web 应用程序权限的 Windows 用户。它还用于模拟 SPUser,但不允许访问报表服务器项和操作。

  • 连接 3
    如果身份验证成功,则报表服务器将使用 Reporting Services 实例的用户帐户来建立与 SharePoint 内容数据库的连接,以便确认已授权该 SPUser 访问该项或操作。如果授权成功,则报表服务器将对请求提供服务。

  • 连接 4
    如果用户正在查看某个报表,则报表服务器由于“双跃点”问题,无法使用 SPUser 从外部数据源检索数据。也就是说,在为报表设置数据源属性时,无法为数据源连接选择**“Windows 集成安全性”**选项。但是,您可以配置该报表以便使用其他连接选项,例如存储凭据或提示的凭据。有关详细信息,请参阅 SQL Server 联机丛书中的为报表的数据源指定凭据和连接信息如何创建和管理共享数据源(SharePoint 集成模式下的 Reporting Services)

帐户过期和订阅处理

创建报表订阅时,报表服务器将存储 SPUser 帐户信息,以验证用户在传递时是否拥有查看报表的权限。如果 SPUser 已过期,订阅将失败并返回 rsSharePointError 错误。名为 TokenTimeout 的场级属性决定着 SPUser 的有效期。

将管理帐户和服务帐户配置为使用唯一域用户帐户

SharePoint 产品或技术的部署使用多种帐户来运行服务以及访问前端和后端服务器。如果您为部署指定域帐户,一定要遵循建议的最佳方法并指定由 SharePoint Web 应用程序独占使用的帐户。请勿将服务帐户配置为以将要访问 SharePoint 站点的实际用户的域用户帐户运行。如果使用服务凭据访问 SharePoint 站点,则可能会遇到错误。

在扩展部署中配置身份验证提供程序的最佳做法

如果您具有 Reporting Services 和 SharePoint 产品的扩展部署,并且为自己的环境配置了不同的身份验证提供程序,则您在验证用户身份时可能会遇到问题。例如,如果您的报告环境使用窗体身份验证进行 Internet 连接,使用 Windows 身份验证用于 Intranet 连接,则该请求可能会被路由到 Web 前端计算机,所使用的身份验证提供程序与请求的身份验证类型不匹配。这可能会导致 Reporting Services 拒绝访问请求,或该请求可能会在应用程序池标识而不是发出请求的用户下运行。

作为最佳做法,用户应使用不同的 URL 从 Internet 和 Intranet 访问内容。或者,您可以通过将面向 Internet 的网站的 Internet 协议 (IP) 地址映射到 Internet URL,在 Web 前端计算机上配置主机文件以覆盖域名系统 (DNS) 查找,这样针对 Internet URL 发出的请求就不会被 DNS 路由到 Intranet URL。

报表服务器如何访问 SharePoint 内容数据库

SharePoint Web 应用程序和报表服务器均连接到各自的数据库以存储应用程序状态和其他数据,但报表服务器还必须连接到 SharePoint 数据库以存储和检索项、属性和配置设置。下图显示该服务器与各数据库的连接。

连接关系图

SharePoint Web 应用程序可以将本地或远程数据库用于内部存储。如果 SharePoint 数据库位于远程计算机,则必须将域帐户用于连接。

报表服务器可以将本地或远程数据库用于内部存储。对于任何一种类型而言,都可以通过使用域帐户、SQL Server 登录名或内置帐户(如 Network Service 或 Local System)来建立数据库连接。

从报表服务器到 SharePoint 数据库的连接

在 Reporting Services 中,Web 服务和 Windows 服务均需访问 SharePoint 数据库。两个服务的服务帐户在 SharePoint Web 应用程序中作为可信用户运行,且自动授予了访问 SharePoint 数据库的权限。

连接在内部进行管理;在使用 SharePoint 管理中心将 SharePoint Web 应用程序指向报表服务器并设置可信帐户时,会对连接进行配置。与从报表服务器到报表服务器数据库的连接不同(您可以使用 Reporting Services 配置工具进行设置或修改),您不能明确配置或管理从报表服务器到 SharePoint 数据库的连接。

以 SharePoint 集成模式运行报表服务器将给在 Reporting Services 中配置服务帐户的方式带来限制。配置服务帐户时应采用下列原则:

  • 如果报表服务器服务帐户必须连接到远程计算机上的 SharePoint 数据库,则应选择拥有网络登录权限的帐户。

  • 如果报表服务器和 SharePoint 数据库在同一台计算机上,而 SharePoint Web 应用程序在远程计算机上,则不要使用内置帐户(如 Local SystemNetwork Service)。当 SharePoint 数据库在远程计算机上运行时,SharePoint Web 应用程序将显式拒绝在远程计算机上定义的内置帐户对数据库的访问。这意味着,如果报表服务器正在基于某一内置帐户运行,则它无法连接到 SharePoint 数据库,因为它正在与 SharePoint 数据库相同的计算机上运行。

  • 对于所有其他将服务器和数据库放置在同一计算机或不同计算机上的拓扑结构而言,Reporting Services 服务帐户可配置为域帐户或内置帐户。

与 SharePoint 数据库的连接错误

如果报表服务器不能访问 SharePoint 数据库且存在配置错误(例如,如果服务帐户或密码无效或未安装 Windows SharePoint 对象模型的本地实例),将出现 rsServerConfigurationError 错误。对于所有其他连接错误而言,将返回 rsSharePointError 错误,以及从本地 SharePoint 实例返回其他错误信息。

SharePoint 和 SSRS 身份验证拓扑

下表列出了 SharePoint 和 SSRS 身份验证方法和用法的支持的组合。

SharePoint 和 SSRS 位于同一台计算机上

SharePoint 身份验证

SSRS 集成模式

SSRS 身份验证

访问 SSRS 的帐户

数据源凭据

Kerberos

集成的

协商

用户,可委托该用户的安全上下文

集成的、存储的、提示

Kerberos

集成的

NTLM

不支持

Kerberos

信任的

协商或 NTLM

站点服务帐户

存储的、提示、集成的 (+)

NTLM

集成的

协商

不支持

NTLM

集成的

NTLM

用户,无法委托该用户的安全上下文

存储的、提示、集成的、本地

NTLM

信任的

协商或 NTLM

站点服务帐户

存储的、提示、集成的 (+)

窗体

集成的

IUSR

不支持

窗体

信任的

协商或 NTLM

站点服务帐户

存储的、提示、集成的 (+)

Kerberos

集成的

协商

用户可委托

集成的、存储的、提示

Kerberos

集成的

NTLM

不支持

Kerberos

信任的(*)

协商

站点服务帐户

存储的、提示、集成的 (+)

Kerberos

信任的(*)

协商

站点服务帐户

存储的、提示、集成、只有对 SSRS 为本地

NTLM

集成的

匿名

不支持

NTLM

信任的(*)

协商

站点服务帐户

存储、提示、集成的 (+)

NTLM

信任的(*)

NTLM

站点服务帐户

存储的、提示、集成的、只有对 SSRS 为本地

窗体

集成的

匿名

不支持

窗体

信任的(*)

协商

站点服务帐户

存储的、提示、集成的 (+)

窗体

信任的

NTLM

站点服务帐户

存储的、提示、集成的、只有对 SSRS 为本地

(+) 如果 SharePoint 站点服务帐户为本地帐户,则数据源对于 Report Server 计算机而言必须是本地的。如果该站点服务帐户为域帐户,则数据源可位于其他计算机上。

(*) SharePoint 站点服务帐户必须是域帐户。

更改历史记录

更新的内容

添加了身份验证拓扑表。