如何:使用 Caspol.exe 添加代码组

更新:2007 年 11 月

组添加命令示例

当使用代码访问安全策略工具 (Caspol.exe) 将代码组添加到代码组层次结构时,必须为新代码组定义成员条件和权限集。您还必须定义正将新代码组添加到的父代码组的标签或名称。您还可对该代码组设置其他标志。有关这些标志的更多信息,请参见代码访问安全策略工具 (Caspol.exe)

将代码组添加到代码组层次结构

  • 在命令提示处键入以下命令:

    caspol [-enterprise|-machine|-user] -addgroup {parentLabel|parentName} mship pset_name [-exclusive {on|off}][-levelfinal {on|off}] [-namename] [-descriptiondescription text]

    –addgroup 选项前面指定策略级别选项。如果省略了该策略级别选项,则 Caspol.exe 将代码组添加到默认的策略级别。对于计算机管理员,默认级别是计算机策略级别;对于其他人员,默认级别是用户策略级别。在此命令中:

    • parentLabel 参数是新代码组的父代码组的标签。您还可以使用该父代码组的代码组名称 (parentName) 而非 parentLabel。为了获取该信息,请按照如何:使用 Caspol.exe 查看代码组中的描述列出代码组。

    • pset_name 参数是将与新代码组关联的权限集的名称。在命名的权限集可与一个代码组关联前,它必须在正添加新代码组的策略级别是已知的。例如,如果您想要将 MyPset 权限集与用户策略中的一个新代码组关联,则您必须已将该 MyPset 权限集添加到用户策略。只有在您使用 .NET Framework 所提供的标准权限集之一时,才不需要事先添加权限集。若要了解如何将权限集添加到策略级别,请参见如何:使用 Caspol.exe 添加权限集

    • mship 参数是新代码组的成员条件。有关 mship 参数值的列表,请参见代码访问安全策略工具 (Caspol.exe)

w0fa60b5.alert_note(zh-cn,VS.90).gif说明:

不能使用 –addgroup 选项一次将一个代码组添加到多个级别。每一此类添加都必须单独进行,因为不同的代码组标签和某些权限集的可用性可能导致冲突。

组添加命令示例

以下过程描述如何执行一些最常见的公共代码组添加任务。

添加以来自 Intranet 的代码为目标的代码组

  • 使用 -zone 选项并将 Intranet 指定为成员值。

    以下命令将 Everything 权限集与来自 Intranet 的代码关联。还为该代码组给定了名称 Intranet_CG。您可以使用该名称而不是使用其数字标签来引用新创建的代码组。

    caspol –addgroup 1.1. –zone Intranet Everything –name "Intranet_CG"
    

添加以来自 Internet Explorer 可信站点的代码为目标的代码组

  • 使用 -zone 选项并将 Trusted 指定为成员资格值。

    以下命令将 LocalIntranet 权限集与来自受信任区域的代码关联,并插入新的代码组,将其作为代码组层次结构的根的子代码组。

    caspol -addgroup All_Code -zone Trusted LocalIntranet
    

添加以特定软件发行者为目标的代码组

  • 使用 –pub 选项,并指定证书文件、签名文件或 X.509 证书的十六进制表示形式。

    必须对来自软件发行者的文件进行适当签名才可以使该成员条件起作用。成员条件可以在实际证书文件或已签名的 .exe 文件的基础上构造。

    假定 FourthCoffee (FourthCoffee.cer) 的证书文件是可用的。以下命令在计算机策略中为 FourthCoffee 发布的代码添加一个代码组,并将 Nothing 权限集与新代码组关联。该代码组被添加为根的子代码组。

    caspol –machine –addgroup 1 –pub –cert FourthCoffee.cer Nothing
    

添加以来自特定网站的代码为目标的代码组

  • 使用 –site 选项并指定网站的 URL。

    w0fa60b5.alert_note(zh-cn,VS.90).gif说明:

    由于可能会存在 DNS 名称欺骗,因此,使用网站作为成员条件不是确定代码标识的有效方法。如果可能,请使用强名称成员条件、发行者成员条件或哈希成员条件。

    以下命令将 Intranet 权限集与来自 www.microsoft.com 的代码关联。

    caspol –addgroup 1 –site www.microsoft.com Intranet
    

添加面向来自特定 URL 的代码的代码组

  • 使用 –url 选项并指定网站的 URL。

    URL 中必须包含一个协议,如 http://、http:// 或 ftp://。此外,可以使用通配符 (*) 指定来自特定 URL 的多个程序集。

    w0fa60b5.alert_note(zh-cn,VS.90).gif说明:

    由于可以使用多个名称标识 URL,因此,使用 URL 作为成员条件不是确定代码标识的安全方法。应尽可能使用强名称成员条件、发行者成员条件或哈希成员条件。

    caspol –user –addgroup 1 –url https://www.contoso.com/bin/* FullTrust
    caspol –user –addgroup 1 –url https://www.contoso.com/bin/MyAssembly.dll FullTrust
    

添加在策略级别重写其他权限的代码组

  • 为新代码组设置 –exclusive 标志。

    以下命令将一个代码组添加到 Intranet_cg 代码组之下。如果该区域是受信任的区域,则新代码组授予 Everything 权限集,这将重写其他代码组可以授予的任何其他权限。

    caspol –addgroup "Intranet_cg" –zone Trusted Everything –exclusive on
    

添加具有自定义成员条件的代码组

  • 使用 –custom 选项,并指定包含自定义成员条件的 XML 序列化的 XML 文件。

    Caspol.exe 支持在策略中使用自定义成员条件,这令策略系统高度可扩展。

    以下命令将新代码组添加到用户策略的根。此新的代码组包含在 NewMembershipCondition.xml 文件中提供的自定义成员条件并向匹配该成员条件的程序集授予完全信任。

    caspol –user –addgroup All_Code –custom NewMembershipCondition.xml FullTrust
    

添加具有名称和说明的代码组

  1. 使用 –name 选项并为代码组指定名称。如果名称中包含空格,则需要用双引号 (“”) 将名称括起来。

  2. 使用 –description 选项并为代码组指定说明。

您以后可以使用该名称引用一个代码组。对于脚本撰写策略更改,名称可以比数字标签提供更好的支持。

默认策略附带有默认名称。如果管理员没有进行显式更改,则该默认名称使管理员可以很容易地使用 Caspol.exe 访问策略和计算机上的特定代码组。

以下命令将一个代码组添加到计算机策略中的 All_Code 组下。新代码组将检查 FourthCoffee 强名称(在 Signed.exe 上提供)并将 FullTrust 授予给这样签名的所有代码。将该代码组命名为 FouthCoffeeStrongName 并提供适当的说明。

caspol –machine –addgroup All_Code –strong –file signed.exe FullTrust –name FouthCoffeeStrongName –description "Code group granting trust to code signed by FourthCoffee"
w0fa60b5.alert_note(zh-cn,VS.90).gif说明:

如果同一个名称在多个代码组中出现,Caspol.exe 会解析为它使用给定名称可以找到的第一个代码组。它将先搜索一个代码组的所有子代码组,然后再搜索该代码组的同级代码组。

请参见

概念

安全策略模型

参考

代码访问安全策略工具 (Caspol.exe)

其他资源

使用代码访问安全策略工具 (Caspol.exe) 配置安全策略

使用 Caspol.exe 配置代码组