Reporting Services 将组件安全策略信息存储在安装过程中复制到文件系统的三个配置文件中。 这些配置文件可以包含 Reporting Services 中代码程序集的内部使用和用户定义的安全策略的组合。 这三个配置文件对应于 Reporting Services 中的三个安全组件:报表服务器和 Windows 服务、报表管理器 Web 应用程序和报表设计器预览窗口。
注释
报表设计器有两种预览模式:在 DebugLocal 模式下启动报表项目时启动的预览选项卡和弹出窗口。 “预览”选项卡不是安全组件,并且不应用安全策略设置。 预览窗口旨在模拟报表服务器功能,因此具有一个策略配置文件,你或管理员必须修改该文件才能在报表设计器中使用自定义程序集和自定义扩展。
安全策略配置文件包含安全类信息、某些默认命名权限集以及 Reporting Services 中程序集的代码组。 Reporting Services 的策略配置文件类似于 Security.config 文件,该文件确定与 .NET Framework 中的计算机和企业级策略关联的代码组层次结构和权限集。 此文件的位置 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\security.config。
Reporting Services 中的策略文件
下表列出了 Reporting Services 中的策略配置文件、其位置(假设默认安装)及其各自的功能。
| 文件名 | 位置(默认安装) | DESCRIPTION |
|---|---|---|
| rssrvpolicy.config | C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer | 报表服务器策略配置文件。 这些安全策略主要影响报表表达式和自定义程序集,一旦报表部署到报表服务器。 此策略文件还影响部署到报表服务器的自定义数据、传递、呈现和安全扩展插件。 |
| rsmgrpolicy.config | C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager | 报表管理器策略配置文件。 这些安全策略会影响扩展报表管理器的所有程序集;例如,自定义传递的订阅用户界面扩展。 |
| rspreviewpolicy.config | C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies | 报表设计器独立预览策略配置文件。 这些安全策略会影响在预览和开发期间在报表中使用的自定义程序集和报表表达式。 这些策略还会影响部署到报表设计器的自定义扩展插件,例如数据处理扩展插件。 |
修改配置文件
将配置设置指定为 XML 元素或属性。 如果您了解 XML 和配置文件,则可以使用文本编辑器或代码编辑器来修改可以由用户定义的设置。 安全配置文件包含有关 Reporting Services 中与策略级别关联的代码组层次结构和权限集的信息。 建议先使用 .NET Framework 配置实用工具(Mscorcfg.msc)或代码访问安全策略实用工具(Caspol.exe)修改 Security.config 文件中的安全策略,以便策略更改对应于策略文件的有效 XML 配置元素。 完成此作后,可以将新代码组和权限集从 Security.config 剪切并粘贴到要向其添加代码权限的组件的策略文件。
重要
在进行任何更改之前,应备份策略配置文件。
使用此方法可实现两项任务。 首先,它使你能够使用可视化工具为 Reporting Services 生成代码组和权限集。 这比从头开始编写 XML 配置元素要容易得多。 其次,它确保不会损坏格式不正确的 XML 元素和属性的安全策略配置文件。 有关代码访问安全策略实用工具的详细信息,请参阅 MSDN 上使用 Reporting Services 安全策略文件。
在修改策略配置文件之前,应阅读本节和相关主题中提供的所有信息。 修改 Reporting Services 的策略配置可能会对 Reporting Services 组件如何执行外部代码模块产生重大安全影响。
扩展的 CodeGroup 元素的位置
在安全策略文件中放置 CodeGroup 元素非常重要。 对于开发的扩展和自定义程序集,建议将自定义代码组直接放置在 URL 成员身份“$CodeGen$/*”的现有条目下方,如下所示:
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust">
<IMembershipCondition
class="UrlMembershipCondition"
version="1"
Url="$CodeGen$/*"
/>
</CodeGroup>
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCustomCodeGroup"
Description="Code group for my custom extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin\MyAssembly.dll"
/>
</CodeGroup>
可以逐个添加其他代码组。