规划 Extranet 或 Internet 部署

尽管 SQL Server Reporting Services 不是专为 Extranet 或 Internet 报表部署方案设计的,但是您可以成功地将 Reporting Services 置于面向 Internet 的 Web 服务器上,以将一般信息分发给广大公众,或者将公司私有数据分发给经过授权和身份验证的用户。

注意注意

在面向 Internet 的 Web 服务器上部署 Reporting Services 需要仔细评估。网络和安全软件、网络拓扑和域配置可以引入变量,这些变量会导致很难为报表服务器部署规定明确的步骤。为 Internet 访问评估报表服务器时,请确保测试方案包括所有希望使用的功能,并且始终使用安全连接进行测试。

Extranet 或 Internet 体系结构关系图

下图提供了 Extranet 或 Internet 部署的最佳实践部署配置的示例。

Internet 或 Extranet 报表服务器部署

关于该关系图,需要注意的事项包括以下几点:

  • 通过三层防火墙在整个部署中提供深层防御。本主题介绍了这些防火墙的配置建议。

  • 入口点是一个包含 ReportViewer 控件的自定义 Internet 应用程序。该控件承载在第二层防火墙后面的报表服务器上运行的报表。

  • 报表使用专为报告创建的只读数据源的数据。该数据源包含从其他源中复制的数据,但不包含绝不应在报表中使用的敏感数据值。

  • 公司数据服务器包含通过严格的权限和限制性的防火墙设置保护的敏感数据。此外,您还应考虑将报表服务器数据库置于此安全区域,以便所有要求读写访问权限的数据库服务器都能使用第三层防火墙提供的保护。

通用指导原则

以下列表提供了在本主题所描述的拓扑中部署 Reporting Services 的多种指导原则。此列表是作为规划您自己的部署计划的起点提供的。对于特定的网络拓扑配置,可能会要求您执行此列表中未介绍的其他步骤。

务必在测试环境中部署配置以确认您了解所有要求、设置、步骤以及这些步骤的最佳顺序:

  1. 安装防火墙并确定服务器、帐户和权限。

  2. 创建或获取用于 SSL 连接的服务器证书。在承载服务器组件的所有计算机上安装证书。如果使用通配符设置安装了证书,则可对多个 URL 使用相同证书。

  3. 设计和实现用于将公司数据复制到单独的报表数据源的方法。您可以使用复制、SQL Server Integration Services 等技术,也可以使用第三方产品。

  4. 在“仅文件”安装模式下安装 Reporting Services,以便使用对外部访问有效的设置进行配置。在 SQL Server 安装向导中,其表现为**“安装但不配置”**选项。

  5. 安装程序完成后,运行 Reporting Services 配置工具以配置报表服务器:

    1. 验证服务是否在最少特权帐户下运行。应避免使用 Local System。如果您选择了 Local System,请更改该帐户以使用 NetworkService 或域用户帐户。

    2. 定义报表服务器 URL 以及(可选)报表管理器 URL:

      您应创建多个 URL 以支持通过外部用户使用完全限定域名 (FQDN) 进行访问,以及创建一个使用网络名称的其他 URL。使用两个不同的 URL 将允许您在 Internet 连接被禁用或脱机时连接到报表服务器。

      您应该为所定义的 FQDN URL 选择 SSL 证书。

    3. 创建报表服务器数据库。如果 SQL Server 实例位于其他域中并且未启用 Kerberos 5.0,请使用 SQL Server 身份验证连接报表服务器数据库, 并使用 SSL 或 IPSec 保护报表服务器计算机和 SQL Server 数据库引擎实例之间连接的安全。

  6. 创建和部署自定义身份验证扩展插件。如果您使用的是作为 ISAPI 筛选器实现的单一登录技术,则必须使用 ISA Server 才能支持 ISAPI 筛选器。Reporting Services 中的 HTTP 侦听器不支持 ISAPI 筛选器。

  7. 配置使用自定义身份验证扩展插件的安全原则的角色分配,并将它们映射到向报表服务器操作提供权限的角色。

  8. 创建和部署使用 ReportViewer Web 服务器控件的 Internet 前端应用程序。

  9. 将报表和其他内容类型发布到报表服务器。

  10. 配置防火墙设置。验证防火墙设置是否允许对下游计算机和应用程序的最低访问权限。

防火墙配置

报表服务器应用程序的默认 URL 假定端口 80 已启用并可供报表服务器使用。如果使用的是 Windows 防火墙,则必须打开端口 80 或适用于报表服务器 HTTP 请求的其他端口。如果使用其他端口,请确保在报表服务器 URL 中指定它。有关详细信息,请参阅如何将防火墙配置为允许报表服务器访问。有关默认 Windows 防火墙设置的详细信息以及有关影响数据库引擎、Analysis Services、Reporting Services 和 Integration Services 的 TCP 端口的说明,请参阅配置 Windows 防火墙以允许 SQL Server 访问

Internet 应用程序中的 ReportViewer Web 服务器控件

若要在 Internet 应用程序中部署报表,可以在所创建和部署的面向 Internet 的自定义应用程序中嵌入 ReportViewer Web 服务器控件。ReportViewer Web 服务器控件包括在 Visual Studio 2005 和更高版本中,而且可随应用程序免费分发。可以将该控件配置为显示在报表服务器上运行的报表。应用程序与报表服务器之间的连接由该控件通过 Web 服务编程接口进行处理。所有的身份验证和授权都是由您的应用程序处理的,该应用程序通过单一的用户可信连接来连接到报表服务器。

有关详细信息,请参阅 Reporting Services 与 Visual Studio 2010 中的 ReportViewer 控件

作为 Internet 或 Extranet Web 前端的报表管理器

报表管理器没有被设计成 Internet 应用程序,但是,如果您无法创建自定义 Internet 应用程序,则可以使用报表管理器来通过 Internet 连接查看报表。下列建议是作为部署的最佳实践建议提供的:

  • 考虑将报表管理器作为单独的实例安装在应用程序服务器上。报表管理器在报表服务器服务中运行。因此,若要安装报表管理器,必须首先安装 Reporting Services,然后在该服务中关闭 Web 服务以及计划和传递功能。为了获得最佳结果,请使用“仅文件”安装模式在面向 Internet 的 Web 服务器上安装 Reporting Services。在 SQL Server 安装向导中,其表现为**“安装但不配置”**选项。

  • 创建和部署自定义安全扩展插件,以支持窗体身份验证或单一登录技术。

  • 配置报表管理器的最低权限。“浏览器”角色和“系统用户”角色足够满足报表查看的需要。

  • 若要将报表管理器指向在单独计算机上运行的其他报表服务器实例,必须首先配置报表管理器 URL,然后在 RSReportServer.config 文件中修改 <ReportServerVirtualDirectory> 和 <ReportServerUrl> 设置,才能将报表管理器指向该报表服务器实例。

  • 在要连接到的报表服务器上,关闭您不会使用的功能。示例可能包括“我的报表”、订阅和传递、报表生成器和客户端打印。

在 Web.config 文件中配置代理设置

如果要将报表管理器用作 Internet 部署的前端应用程序,并且在同一台计算机上还安装了报表服务器,则必须指定 Web.config 设置,以便报表管理器在向同一台计算机上安装的本地报表服务器发送请求时跳过代理服务器。

该 Web.config 设置是 System.NET defaultProxy 网络设置。默认情况下,对于报表管理器 defaultProxy 在 Web.config 文件中是禁用的。如果报表管理器和报表服务器部署于同一台计算机中,则建议采用以上配置。

如果您是从早期版本的 Reporting Services 升级,则报表管理器 Web.config 文件不包括 defaultProxy 配置设置。对于报表管理器和报表服务器运行于同一台计算机的安装系统,您可以添加并设置 defaultProxy 设置,以跳过代理服务器。请将以下配置设置复制到报表管理器 Web.config 文件:

<configuration>
...
<system.net>
  <defaultProxy enabled="false" />
</system.net>
</configuration>

有关这些设置的详细信息,请参阅 Microsoft .NET Framework 开发人员指南中的“配置 Internet 应用程序”和“defaultProxy 元素(网络设置)”。

Extranet 和 Internet 部署的身份验证注意事项

若要在 Extranet 方案中部署报表服务器,而该方案支持通过预定义的 Microsoft Active Directory 帐户进行连接,则您可以使用默认的 Windows 身份验证安全扩展插件。请对将服务器配置为使用安全套接字层 (SSL) 连接和基本身份验证进行规划。可以使用 Reporting Services 配置工具将现有证书映射到报表服务器 URL。您可以修改配置文件以指定身份验证类型。

若要在 Extranet 方案中部署报表服务器,而该方案支持通过单一登录技术或基于窗体的身份验证模型(在数据库中存储用户标识信息)进行连接,则您必须创建一个自定义身份验证扩展插件,来替换默认的 Windows 身份验证安全扩展插件。当向公共开放报表服务器,但是只希望通过身份验证的用户查看内容时,通常使用基于窗体的身份验证。默认情况下,SQL Server Reporting Services 不会提供基于窗体的身份验证模块。有关如何创建该模块的详细信息,请参阅 SQL Server 联机丛书中的实现安全扩展插件

验证 Internet 部署

若要验证报表服务器连接是否可访问,键入 http: (or https:)//<your-web-server-fully-qualified-domain-name>/reportserver 后,通过 Internet 连接您应该可以查看报表服务器文件夹命名空间,其中 /reportserver 是报表服务器虚拟目录的默认名称。