安全报表和资源

您可以设置各个报表和资源的安全性,以控制用户对这些项的访问权限。 默认情况下,只有是“管理员”内置组的成员的用户,才能运行报表、查看资源、修改属性以及删除项。 所有其他用户必须具有为其创建的角色分配才能访问报表或资源。

对报表和资源进行基于角色的访问

若要授予报表和资源的访问权限,则可以允许用户从父文件夹继承现有的角色分配,也可以针对项本身创建新的角色分配。

在大多数情况下,你可能想要使用从父文件夹继承的权限。 仅当您希望将报表或资源对那些不需要了解其存在的用户隐藏,或提高报表或资源的访问权限级别时,才有必要对单个报表和资源设置安全措施。 这些目标不是相互排斥的。 可以将对报表的访问权限限制为较小的一组用户,并向其中的所有或部分用户提供管理报表的附加权限。

可能需要创建多个角色分配来实现目标。 例如,假设您希望两个用户 Ann 和 Fernando 以及人力资源经理组可以访问某个报表。 Ann 和 Fernando 需要能够管理该报表,而人力资源经理组的成员则只需运行该报表。 为了满足所有这些用户的需要,您可以分别创建三个角色分配,一个角色分配使 Ann 成为报表的内容管理员,另一个使 Fernando 成为报表的内容管理员,第三个则支持人力资源经理组对报表执行只读访问任务。

在您设置了报表或资源的安全性后,即使这些项移至新位置,也会一直保留这些设置。 例如,如果移动只有少数人有权访问的报表,即使将报表移动到具有相对打开安全策略的文件夹,该报表仍仅可供这些用户使用。

缓解已发布报表或文档中的 HTML 注入攻击

在 Reporting Services中,报表和资源是在运行报表的用户的安全标识下处理的。 如果报表中包含表达式、脚本、自定义报表项或自定义程序集,则代码将在用户的凭据下运行。 如果资源是包含脚本的 HTML 文档,则当用户在报表服务器上打开文档时,脚本将运行。 尽管运行报表中的脚本或代码的能力是一项强大的功能,但具有一定程度的风险。 如果是恶意代码,则报表服务器和运行报表的用户就很容易受到攻击。

向作为 HTML 处理的报表和资源授予访问权限时,请务必记住,报表是在完全信任的环境下进行处理的,并且可能会将可能的恶意脚本发送到客户端。 根据浏览器设置,客户端将在浏览器中指定的信任级别执行 HTML。

可以通过采取以下预防措施来降低运行恶意脚本的风险:

  • 决定谁可以将内容发布到报表服务器时,应慎重选择。 由于存在发布恶意内容的可能性,因此应限制可以将内容发布到少数受信任用户的用户。

  • 所有的发布者都应避免发布来自未知源或不可信源的报表和资源。 如果必要,请在文本编辑器中打开文件并查找可疑脚本和 URL。

报告参数和脚本注入

报表参数为报表的总体设计和执行提供灵活性。 但是,在某些情况下,引诱攻击中的攻击者也可以利用这种灵活性。 若要降低无意中运行恶意脚本的风险,请仅从可信来源打开呈现的报表。 建议你考虑以下情况,这是潜在的 HTML 呈现器脚本注入攻击:

  1. 报告包含一个文本框, 该文本框的超链接被设置为可能包含恶意文本的参数值。

  2. 报表将发布到报表服务器,或可能通过这样一种方式提供:可从 Web 页的 URL 控制报表参数值。

  3. 攻击者创建指向网页或报表服务器的链接,该链接以“javascript:<恶意脚本在此处>”的形式指定参数的值,并将该链接发送到引诱攻击中的其他人。

报表可以在报表项或报表项一部分的 Action 属性的值中包含嵌入的超链接。 在处理报表时,可将超链接绑定到从外部数据源检索的数据。 如果恶意用户修改基础数据,则超链接可能受到脚本攻击危害。 如果用户单击已发布或导出报表中的链接,则恶意脚本可以运行。

若要降低报表中包含无意中运行恶意脚本的链接的风险,请仅将超链接绑定到来自可信来源的数据。 验证查询结果中的数据以及将数据绑定到超链接的表达式是否未创建可利用的链接。 例如,不要使用结合多个数据集字段数据的表达式作为超链接的基础。 如有必要,浏览到此报表,然后使用“查看源”以检查可疑脚本和 URL。

缓解参数化报表中的 SQL 注入攻击

在任何包含类型 String参数的报表中,请务必使用可用值列表(也称为有效值列表),并确保运行报表的任何用户仅具有查看报表中的数据所需的权限。 定义类型的 String参数时,用户会显示一个可以采用任何值的文本框。 可用值列表限制可以输入的值。 如果报表参数与查询参数相关联,并且不使用可用值列表,则报表用户可以将 SQL 语法键入到文本框中,从而可能打开报表和服务器以执行 SQL 注入攻击。 如果用户有足够的权限执行新的 SQL 语句,则可能会在服务器上生成不需要的结果。

如果报表参数未绑定到查询参数,并且参数值包含在报表中,则报表用户可以将表达式语法或 URL 键入参数值,并将报表呈现到 Excel 或 HTML。 如果其他用户随后查看报表并单击呈现的参数内容,则用户可能会无意中执行恶意脚本或链接。

若要降低无意中运行恶意脚本的风险,请仅从可信来源打开呈现的报表。

注释

在早期版本的文档中,包括以表达式形式创建动态查询的示例。 此类型的查询会产生 SQL 注入攻击漏洞,因而建议不要使用这类查询。

保护机密报告

对于包含机密信息的报表,应通过要求用户在访问敏感数据时提供凭据,在数据访问级别上保护这些报表。 有关详细信息,请参阅为报表数据源指定凭据和连接信息 您也可以对文件夹进行保护,以便只有授权用户才能访问文件夹。 有关详细信息,请参阅 保护文件

另请参阅

(create-and-manage-role-assignments.md)
配置报表生成器访问
授予对本机模式报表服务器的权限
保护共享数据源项
在 Reporting Services 数据源中存储凭据