使用代码组特性进行管理

重要说明重要事项

在 .NET Framework 4 版中,公共语言运行时 (CLR) 不再为计算机提供安全策略。Microsoft 建议使用 Windows 软件限制策略替代 CLR 安全策略。此主题中的信息适用于 .NET Framework 3.5 和更低版本,不适用于 4 和更高版本。有关此更改和其他更改的更多信息,请参见 .NET Framework 4 中的安全性更改

假定您是负责管理若干工作站的安全策略的企业管理员。 在典型的企业域中,网络管理员对每个服务器和每个客户端都有管理特权。 但是,单个用户拥有一个工作站的管理特权的情况也很常见。 因此,网络管理员拥有企业策略级别的管理特权,而工作站管理员拥有计算机策略级别的管理特权。 在这种情况下,网络管理员似乎对策略有更大的控制权,因为首先会计算企业级策略,而且不允许计算机策略放宽由企业级别的管理员作出的安全决定。 但是,计算机级别的管理员还是可以收紧安全性,这样有可能中断在不收紧安全性时允许其运行的受信任应用程序。 因此,更高策略级别可以选择不计算较低级别的策略决定。

可以通过使用安全策略工具之一将 LevelFinal 或 Exclusive 特性应用到代码组来实现此操作。

Level Final 特性

当应用于代码组时,LevelFinal 特性将阻止计算任何低于当前级别的策略级别。 例如,如果将 LevelFinal 特性应用于企业级别的本地 Intranet 代码组,则即使计算机级别的管理员做了一些更改,也不会对计算机级别的任何代码组进行计算。 应用 LevelFinal 特性可以保证:如果某程序集与以此特性标记的代码组相关联,则该程序集绝不会因为较低策略级别管理员所做的决定而获得较少的权限。 有关对默认或自定义代码组设置 LevelFinal 特性的信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)代码访问安全性策略工具 (Caspol.exe)

Exclusive 特性

如果将 Exclusive 特性应用于代码组,那么当运行时为独占代码组中所含程序集计算权限时,该特性将阻止考虑同一策略级别中的其他代码组。 但仍会计算当前级别之下和之下的策略级别。 此特性允许一个特定代码组为当前策略级别针对向与该组匹配的程序集授予什么权限的问题作出唯一决定。 这在需要向特定程序集授予特定权限集而不允许来自同一策略级别上的其他代码组匹配项的权限时很有用。

注意,如果一个程序集属于多个标记为独占的代码组,则不允许执行该程序集。 因此,在管理自定义安全策略时,请谨慎使用 Exclusive 特性。 有关对内置或自定义代码组设置 Exclusive 特性的信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)代码访问安全性策略工具 (Caspol.exe)

请参见

概念

代码组特性

代码组

其他资源

通用安全策略管理

安全策略最佳实施策略