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

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

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

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

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

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

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

  • 带有集成安全性的 Windows 身份验证(启用了 Kerberos)

  • 无模拟或委托的 Windows 身份验证

  • 窗体身份验证

注意注意

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

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

优点

缺点

Windows 身份验证(启用了 Kerberos 身份验证)

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

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

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

Windows 身份验证(未启用 Kerberos)或窗体身份验证

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

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

将请求发送到报表服务器

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

Windows 集成安全性

如果 SharePoint Web 应用程序配置为使用 Windows 身份验证并启用了 Kerberos,则 SharePoint Web 应用程序与报表服务器之间的连接将通过当前 Windows 用户的模拟凭据或委托凭据来完成。下图显示的是当报表服务器配置为与 SharePoint 集成,且 SharePoint Web 应用程序使用启用了 Kerberos 的 Windows 身份验证时的连接情况。

SharePoint 集成模式中的连接

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

  • 连接 2
    SharePoint Web 应用程序将令牌和请求发送到报表服务器。发送连接请求时使用用户的 Windows 标识。报表服务器验证用户是否拥有访问报表服务器的权限。

  • 连接 3
    如果验证成功,报表服务器将验证用户是否拥有访问项或操作的权限。

    报表服务器使用内部安全扩展插件来验证用户权限。报表服务器使用扩展插件来调用 Windows SharePoint Services 对象模型,以检查存储在 SharePoint 内容数据库中的权限。您无法配置或管理此安全扩展插件。它是用于在 SharePoint 集成模式下运行的报表服务器的内部组件。

    如果用户拥有访问报表或者其他项或操作的权限,将处理请求。

使用 Windows 集成安全性,可以消除典型的“双跃点”问题,即 Windows 凭证在单次连接后便过期。它还可以扩充为报表和模型配置数据源连接时可用的一组选项。如果使用 Windows 用户标识来连接到报表服务器,那么在报表处理过程中,报表服务器就可以使用该标识从外部数据源检索数据。也就是说,在为报表设置数据源属性时,可以为数据源连接选择**“Windows 集成安全性”**选项。有关详细信息,请参阅 SQL Server 联机丛书中的为报表数据源指定凭据和连接信息

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

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

可信连接的连接关系图

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

  • 连接 2
    SharePoint Web 应用程序在对报表服务器的请求中模拟 SharePoint 用户标识。发送使用可信帐户的连接请求。该帐户是 SharePoint Web 应用程序的进程标识。

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

  • 连接 3
    如果验证成功,报表服务器将验证 SPUser 是否拥有访问项或操作的权限。

    报表服务器使用内部安全扩展插件来验证用户权限,调用 Windows SharePoint Services 对象模型,并检查存储在 SharePoint 内容数据库中的权限。如果用户拥有访问报表或者其他项或操作的权限,将处理请求。

帐户过期和订阅处理

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

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

SharePoint 产品或技术的部署使用多种帐户来运行服务以及访问前端和后端服务器。如果您为部署指定域帐户,一定要遵循建议的最佳方法并指定由 SharePoint Web 应用程序独占使用的帐户。请勿将服务帐户配置为以将要访问 SharePoint 站点的实际用户的域用户帐户运行。如果使用服务凭据访问 SharePoint 站点,则可能会遇到错误。有关服务帐户要求和建议的详细信息,请参阅 Windows SharePoint Services 3.0 产品文档中的管理和服务帐户计划

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

如果您具有 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 数据库。

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

与 SharePoint 数据库的连接错误

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

更改历史记录

更新的内容

在“SharePoint 技术中的身份验证提供程序”一节中增加了一个表,列有身份验证提供程序的优点和缺点。

新增加了“在扩展部署中配置身份验证提供程序的最佳做法”一节。