使用代码组属性进行管理
更新:2007 年 11 月
假定您是负责管理若干工作站的安全策略的企业管理员。在典型的企业域中,网络管理员对每个服务器和每个客户端都有管理特权。但是,单个用户拥有一个工作站的管理特权的情况也很常见。因此,网络管理员拥有企业策略级别的管理特权,而工作站管理员拥有计算机策略级别的管理特权。在这种情况下,网络管理员似乎对策略有更大的控制权,因为首先会计算企业级策略,而且不允许计算机策略放宽由企业级别的管理员作出的安全决定。但是,计算机级别的管理员还是可以收紧安全性,这样有可能中断在不收紧安全性时允许其运行的受信任应用程序。因此,更高策略级别可以选择不计算较低级别的策略决定。
可以通过使用安全策略工具之一将 LevelFinal 或 Exclusive 属性应用到代码组来实现此操作。
Level Final 属性
当应用到代码组时,LevelFinal 属性会防止计算任何低于当前级别的策略级别。例如,如果将 LevelFinal 属性应用到企业级别的本地 Intranet 代码组,那么即使计算机级别的管理员作了一些更改,也不会对计算机级别的任何代码组进行计算。应用 LevelFinal 属性可以保证,与标有该属性的代码组关联的程序集绝对不会因为较低策略级别管理员作出的决定而收到较少的权限。有关在默认或自定义代码组上设置 LevelFinal 属性的信息,请参见 .NET Framework Configuration 工具 (Mscorcfg.msc) 或代码访问安全策略工具 (Caspol.exe)。
Exclusive 属性
当 Exclusive 属性应用到代码组时,在运行库计算独占代码组中的程序集的权限时,该属性会防止考虑同一策略级别中的其他代码组。但仍会计算当前级别之下和之下的策略级别。该属性允许一个特定代码组为当前策略级别针对向与该组匹配的程序集授予什么权限的问题作出唯一决定。这在需要向特定程序集授予特定权限集而不允许来自同一策略级别上的其他代码组匹配项的权限时很有用。
注意,如果一个程序集属于多个标记为独占的代码组,则不允许执行该程序集。因此,在管理自定义安全策略时,请谨慎使用 Exclusive 属性。有关在内置或自定义代码组上设置 Exclusive 属性的信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc) 或代码访问安全策略工具 (Caspol.exe)。