集成安全性和提升权限

如果报表查询包含恶意的 Transact-SQL 语句(例如,用于创建未经授权的登录名、修改或删除数据、或引入错误数据的语句),并且运行该报表的用户具有针对承载数据源的服务器的提升权限,则使用具有提升权限的帐户运行该报表将使 SQL Server 面临安全隐患。例如,如果攻击者发布了包含恶意查询的报表,则出现以下这些情况之一时将以管理员凭据处理该查询:

  • 报表数据源配置为使用集成安全性,并且运行该报表的用户作为管理员登录。

  • 报表数据源配置为提示输入凭据,并且用户将键入其管理员凭据以运行该报表。

防范提升权限攻击的最佳做法

若要防范此安全隐患,请遵循以下这些建议的一种或多种安全性措施:

  • 使用最低特权帐户来访问为报表提供数据的外部数据源。可以将报表数据源配置为始终使用最低特权帐户的已存储凭据。

  • 使用共享数据源来指定数据源连接信息。对于连接字符串以及用于定义运行时凭据获取方式的设置,可以使用共享数据源上的角色分配来控制对其的访问权限。

  • 使用角色分配和工作流进程可以确保仅将可信的报表发布到报表服务器。通过角色分配,可以将报表发布限定到特定文件夹,然后要求管理员检查新发布报表的 RDL 文件(及查询)后,才能将其移至最终位置。请注意,通过 Reporting Services 不可以强制实施为单位所定义的标准操作过程。因为没有适当的功能可用于在发布之前强制执行检查要求。

  • 禁用集成安全性为报表数据源凭据选项。若要关闭使用集成安全性的数据源连接,请将 EnableIntegratedSecurity 设置为 false。有关在 Management Studio 的服务器属性页中设置此属性的详细信息,请参阅如何设置报表服务器属性 (Management Studio)

对于那些可能不知道其安全令牌将传递到外部数据源的用户,使用集成安全性访问外部数据源会为其带来一个特殊问题(在运行报表之前不会事先通知用户报表配置为使用集成安全性)。此外,在打开报表时,用户可能不会有与其在打开来源未知的电子邮件附件时相同的担心。但是,这两种情况下的安全隐患是相同的。通过超链接公开的或隐藏在电子邮件附件中的恶意脚本可能会损坏或危及工作站,而恶意查询可以用同样的方式损坏或危及服务器。

请注意,如果禁用集成安全性,则当前配置为使用集成安全性(或在禁用此功能之后配置为使用集成安全性)的所有报表数据源将不再运行。如果报表服务器不支持集成安全性,将返回以下错误:“此数据源配置为使用 Windows 集成安全性,但此服务器已禁用 Windows 集成安全性。”