安全部署 (2003 System)

更新:2007 年 11 月

适用对象

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

项目类型

  • 文档级项目

  • 应用程序级项目

Microsoft Office 版本

  • Microsoft Office 2003

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

在创建 Visual Studio Tools for Office 解决方案时,将自动更新本地安全策略以允许运行项目中的代码。但在部署解决方案时,您必须显式更新使用您的解决方案的每台计算机上的安全策略,以授予程序集代码执行和访问 Office 对象模型的权限。

对于文档级自定义项,如果将文档部署到网络位置,则还必须更新该文档的安全策略。有关如何在最终用户计算机上设置安全策略的更多信息,请参见部署安全策略。有关文档级自定义项的更多信息,请参见 文档级自定义项的体系结构

强名称和证书

建议使用的安全部署解决方案的方法有采用程序集的强名称和使用 Authenticode (x.509) 证书对程序集进行签名,或者同时使用两种方法以获得更高的安全性和易管理性。强名称和 Authenticode 签名提供高度的安全性,因为如果没有有效的强名称或签名,其他人很难修改您的代码。Authenticode 签名还提供一些额外的优点:

  • Authenticode 签名可以使用时间戳。

  • 证书可以撤消。

  • 证书提供发行者的标识。

有关具有强名称的程序集的更多信息,请参见 具有强名称的程序集创建和使用具有强名称的程序集

有关 Authenticode 签名的更多信息,请参见 部署和 Authenticode 签名

选择安全级别

您必须权衡较严格规则的安全优势和较宽松规则的管理优势,然后选择一个适当的信任级别。例如,如果您的解决方案总是在一台名为 \\appserver\ 的服务器上部署,而且总是使用公司证书进行签名,则可以选择只在 \\appserver\ 上信任公司证书的规则。这样可帮助您抵御可能窃取证书并在 Internet 上发布代码的恶意用户(除非代码来自 \\appserver\,否则将不会得到信任)。它还意味着,如果将来要在其他服务器上存储程序集,您将必须再次更新安全策略。

如果不确定将解决方案部署在何处,一个折衷的方法是信任来自本地计算机和本地 Intranet 的证书或强名称。如果计划在 Web 上发布代码,也可以在 Internet Explorer 的安全选项中使用“受信任站点”区域。不应信任来自“Internet”区域、“受限站点”区域的证书或最高级别(所有代码)的证书,除非您的业务案例非常需要这样做。如果要信任这样的证书,请采取适当的预防措施,以确保代码即使被恶意用户得到也是安全的。有关更多信息,请参见 代码访问安全性

有关可能的威胁的信息,请参见 Office 解决方案的特定安全注意事项

授予对程序集的访问

文档级自定义项的一个部署选项是在本地将文档部署到每个用户并将程序集部署到网络位置。同样,对于应用程序级外接程序,可将外接程序程序集部署到网络位置。只有受信任的程序集才能在 Office 解决方案中运行。对程序集进行数字签名,并仅授予系统管理员(以及必须修改程序集的任何人)对此位置的写访问权限。有关在部署之前保护程序集安全的更多信息,请参见 程序集安全注意事项

可以使用 Microsoft .NET Framework 2.0 配置工具或代码访问安全策略工具 (Caspol.exe) 设置信任程序集的企业级策略。

有关 .NET Framework 配置工具的更多信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)。有关 Caspol.exe 的更多信息,请参见 代码访问安全策略工具 (Caspol.exe)使用代码访问安全策略工具 (Caspol.exe) 配置安全策略

在将程序集部署到其最终位置(或更新已部署的程序集)之前,请检查安全策略并确定使用何种证据来尽可能降低风险。有关更多信息,请参见 运行 Office 解决方案的安全要求 (2003 System)

确保网络上的文档的安全

对于文档级自定义项,如果文档位于服务器或网络共享上,则必须对文档的 URL 授予完全信任。这样做对于只能由受信方修改的模板或个别文档最为有效。应当确保不受信任的用户不具有修改或替换共享中的文档的权限。

如果管理员希望用户能够访问位于公共共享(如 SharePoint 门户)上的文档,该管理员必须对策略进行修改,以包含文档的新代码组。该代码组中包含用作证据查找 Office 文档并使管理员据之作出信任决策(正如管理员必需添加代码组以显式信任程序集)的成员条件。有关更多信息,请参见 如何:将权限授予共享位置中的文档和工作簿 (2003 System)

电子邮件发布

默认情况下,对于文档级自定义项,如果直接从电子邮件中打开文档,则程序集将不会运行。但可以将文档保存到本地硬盘,然后以通常方式打开它。如果该文挡在其应用程序清单中包含指向完全受信任的程序集的完整路径,则解决方案将会运行。

Outlook 的临时文件夹中的文档也可以用于存放代码(不过不建议这样做)。这样做会导致产生一个低级到中级的安全风险。原因是,如果已被授予完全信任的程序集中存在漏洞,恶意用户便可以将指向该程序集的文档附加到电子邮件中并鼓励收件人打开该文档,从而利用该漏洞。如果成功,攻击者可以(举例说明)使用目标用户的凭据访问安全 Intranet 站点。注意,仍然必须显式授予程序集完全信任;攻击者无法随意创建文档或程序集并欺骗用户运行。

更改安全策略

如果管理员调整了文档或程序集的权限,则用户必须退出并重新启动所有 Office 应用程序,这些更改才能生效。

有时候,Office 应用程序进程在用户退出应用程序之后会继续运行,这将会阻止安全策略更改生效。检查“任务管理器”,并确保活动进程的列表中没有 Office 应用程序。

其他承载 Office 应用程序的应用程序也会阻止实施新的权限。安全策略发生更改时,用户应当退出所有使用 Office 的应用程序(无论是寄宿的还是独立的),包括 Internet Explorer。

禁止文档级自定义项运行代码

管理员可以使用注册表禁止所有文档级自定义项在计算机上运行。当打开带有托管代码扩展的 Word 文档或 Excel 工作簿时,Visual Studio Tools for Office 运行时将在计算机上检查以下任一注册表项下是否存在名为 Disabled 的项:

  • HKEY_CURRENT_USER\Software\Microsoft\VSTO

  • HKEY_LOCAL_MACHINE\Software\Microsoft\VSTO

若要禁止文档级自定义项运行代码,请在其中一个或全部注册表项下创建 Disabled 项,并为 Disabled 指定以下数据类型和值之一:

  • 设置为“0”(零)之外的任何字符串的 REG_SZ 或 REG_EXPAND_SZ。

  • 设置为 0(零)之外的任何值的 REG_DWORD。

禁用文档级自定义项时,用户仍可打开文档并进行更改,但程序集中的代码将不会运行。若要使文档级自定义项能够运行代码,请将两个 Disabled 项均设置为 0,或者删除这两个注册表项。

请参见

任务

如何:部署 Office 解决方案 (2003 System)

如何:移除文档中的托管代码扩展 (2003 System)

如何:部署文档以供脱机使用 (2003 System)

概念

部署模型 (2003 System)

部署文档级自定义项 (2003 System)

部署 Office 解决方案 (2003 System)

部署应用程序级外接程序 (2003 System)

其他资源

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

Office 解决方案的疑难解答