Office 解决方案的安全性最佳做法 (2003 System)

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

  • 应用程序级项目

Microsoft Office 版本

  • Microsoft Office 2003

有关更多信息,请参见按应用程序和项目类型提供的功能

在为文档级自定义项和应用程序级外接程序规划安全策略时,请考虑以下问题:

将条件添加到安全策略

Microsoft .NET Framework 为部署策略提供了两种主要的方法:

由于整个策略级别(通常是 Enterprise 或 Machine)都被复制到最终用户的计算机上,因此使用 Windows Installer 文件会带来更多可预测的策略评估行为;但是,如果公司内的不同部门想独立发布彼此的策略,或者如果个人需要更改其策略,则会产生冲突。

使用 Caspol.exe 修改策略可允许不同的人员独立更新彼此的策略,但是由于不同代码组之间的未知交互,因此不保证任何给定的策略更改都能达到预期的效果。例如,如果某个部门部署了一个策略更改,授予对特定 Intranet 站点的完全信任,则该部门希望信任来自该站点的所有代码。但是如果其他部门部署了一个带有 Exclusive 属性的策略,拒绝访问该站点,则不会运行任何代码。有关 Exclusive 属性的更多信息,请参见 使用代码组属性进行管理如何:使代码组成为独占的或最终级别的

管理员在决定如何更新策略时,需要兼顾 Windows Installer 文件的可预测性和 Caspol.exe 的灵活性。

注意,尽管也可以编写托管代码通过 Microsoft .NET Framework API 直接操作策略,但是使用这种方法很难正确创建策略,因此强烈建议不要使用这种做法。

检查当前策略

如果程序集未执行,则可以通过查看分配给该程序集的权限来调查可能的原因。Microsoft .NET Framework 提供了两种用于检查程序集当前策略的方法:

这些工具可显示应用于程序集的安全策略,并显示程序集的证据如何映射到公共语言运行时 (CLR) 中的那些规则。这样可发现策略的设置是否正确,以及程序集是否与正确的代码组匹配。使用此方法可以发现的主要问题包括:

  • 当网络规则(例如,指定对 https://server/ 的完全信任)应在 LocalIntranet 中时却被添加到 MyComputer 区域,或者应在 TrustedSites 中时却被添加到 LocalIntranet。

  • 文件名或 URL 中存在错误。

  • 目录路径缺少星号 (*),此符号指示应在策略中包含该文件夹下的所有文件和子文件夹。

有关更多信息,请参见 使用 Caspol.exe 解决安全策略问题

设置企业的默认策略

Visual Studio 使企业能定义自己的默认策略。通常情况下,当重置安全策略时,策略会恢复为安装 Framework 时存在的默认设置。通过使用特定于企业的默认策略,重置操作会还原由特定企业定义的基本策略。例如,企业会将受信任的发行者添加到 Enterprise 级别,但阻止所有来自于 Internet 区域的代码。

有关返回到默认策略的更多信息,请参见 如何:使用 Caspol.exe 恢复默认安全策略设置.NET Framework 配置工具 (Mscorcfg.msc)。有关默认安全策略的更多信息,请参见 默认安全策略

一般性建议

当确定 Office 解决方案的策略时,请考虑以下准则:

  • 始终使用命名代码组而不要依赖其编号(例如,使用 MyComputer_Zone 而不是 1.1)。尽管用户有可能对组进行重命名(例如,将 Internet 重命名为 MyComputer),但编号发生更改的可能性更大。

  • 尽可能严格限制应用规则的代码。永远不要向 Machine 级别的 All_Code 组添加规则;应始终将其添加到 Zone 或 Zone 下的其他子组。最好不要使用规则管理不需要的代码。

  • 将应用最广泛的规则列在第一位,例如,按照 zone、site、publisher 的顺序,而不是 publisher、site、zone。这样,特定区域规则可应用于特定代码,并且在弄清是否需要这些限制之前,这些规则不会应用于来自发行商的所有代码。

  • 如果父组(例如,LocalIntranet_Zone 组)不再存在,则应重新创建该组。注意,必须以 Nothing 权限集执行此操作。Nothing 权限集禁止应用已由管理员通过删除代码组而关闭的默认权限。例如,如果管理员删除了 LocalIntranet_Zone,则所有的本地 Intranet 代码都将停止运行。在重新创建代码组并使用 Nothing 权限集时,将不会添加以前不存在的权限。

  • 在批处理文件中关闭策略更改警告,并记住在以后使用它们时重新开启警告。这样,批处理文件就不会停下来等待用户输入。此设置会影响所有的用户,而不只是影响当前的用户。有关更多信息,请参见 如何:使用 Caspol.exe 取消显示策略更改警告

  • 如果使用 Caspol.exe,请显式指定要修改的策略级别(Enterprise、Machine 或 User);不要依赖默认设置。对于您正在修改的策略来说,默认值可能不正确。有关更多信息,请参见 安全策略级别

  • 如果不是绝对必要,请勿使用 Exclusive 或 Level-Final 属性,因为它们会在添加新代码组的情况下导致意外行为。有关更多信息,请参见 代码组属性

请参见

概念

运行 Office 解决方案的安全要求 (2003 System)

Office 解决方案的特定安全注意事项

其他资源

通用安全策略管理

Office 解决方案中的安全性 (2003 System)