在 .NET 框架中,代码访问安全(CAS)策略所定义的策略级别有哪些?每个级别又是如何与权限集(PermissionSet)进行关联和配置的?
考察说明
考查对 .NET 代码访问安全策略层级结构及权限集定义机制的理解。
回答思路
- 【回答框架 1】代码访问安全(CAS)通过策略级别来管理不同范围的安全策略,主要有三个级别:企业级、机器级和用户级。企业级策略由管理员为整个组织定义,机器级策略针对本地计算机,用户级策略则针对个别用户账户。
- 【回答框架 2】每个策略级别都包含了多个命名的权限集,例如 FullTrust、LocalIntranet、Internet 等。策略级别定义了这些权限集及其关联的代码组,通过代码组的条件(如站点、强名称或区域)将代码匹配到相应的权限集。
- 【回答框架 3】在 .NET Framework 1.x 和 2.0 中,管理员可以使用 .NET Framework 配置工具(如 mscorcfg.msc)或代码访问安全策略工具(Caspol.exe)来管理这些策略级别。每个级别可以独立设置和覆盖,从而实现分层管理。
- 【回答框架 4】权限集实际上是 CodeAccessPermission 派生类实例的集合,它表示一组权限。策略级别的评估是从企业级到用户级逐层执行的,最终授予当前代码的权限是各层权限的交集,即代码所请求的权限必须被所有相关级别允许。
- 【关键点 1】CAS 策略分为企业、机器、用户三个级别。
- 【关键点 2】权限集是 CodeAccessPermission 对象的集合。
- 【关键点 3】代码组通过条件匹配将代码关联到特定权限集。
- 【关键点 4】策略评估从企业级到用户级逐层执行,最终权限为交集。
- 【易错点 1】不能混淆 CAS 策略级别与 CLR 的安全权限,它们处于不同抽象层次。
- 【易错点 2】现代 .NET 中 CAS 已过时,不应在 .NET Core 及更高版本中实现依赖 CAS 的安全方案。