扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Demien Watkins 2007年10月26日
关键字:
可管理的安全策略决定了宿主环境提供给程序集的证据和授予该程序集的权限集之间的映射。System.Security.SecurityManager 类实现了这种映射功能。因此,您可以将代码访问安全性策略系统看作一个带有两个输入变量(证据和可管理的安全策略)的函数,并可以将程序集特定的权限集看作输出值。本节重点讲述可管理的安全策略系统。
有一些可配置的策略级别可由安全管理器识别,它们是:
企业策略级别
计算机策略级别
用户策略级别
应用程序域策略级别
企业策略级别、计算机策略级别和用户策略级别可由安全策略管理员进行配置。应用程序域策略级别可以通过宿主以编程的方式来配置。
当安全管理器需要决定安全策略授予程序集的权限集时,它是从企业策略级别开始的。将程序集证据提供给这个策略级别将会从该策略级别授予权限集。通常,安全管理器会以相同的方式继续收集企业策略级别以下策略级别的权限集。然后这些权限集会相交,以生成该程序集的策略系统权限集。所有策略级别都必须首先允许一个特定的权限,然后才能使其进入为该程序集授予的权限集中。例如,如果在程序集的计算期间,企业策略级别没有授予一个特定的权限,那么不管其他级别指定了什么权限,也不会授予该权限。
注 有一些特殊的情况,某个策略级别中(如企业策略级别)可能包含了一条指令,指定不计算该级别之下的任何策略级别,如计算机策略级别和用户策略级别。在这种情况下,计算机策略级别和用户策略级别都不会生成一个权限集,并且在授予程序集权限集的计算中不会考虑这两个级别。
程序集的开发人员可以影响程序集运行库进行的权限计算。尽管程序集不能简单地取得运行所需的权限,但它可以声明一个最低限度需要的权限集或拒绝某些权限。安全管理器可以确保仅当需要的一个(或多个)权限是策略级别结构授予的权限集的一部分时,程序集才会运行。相反,安全管理器还可以确保程序集不会收到它拒绝获取的任何权限。程序集的开发人员可以使用安全自定义属性将最低限度需要的权限、拒绝的权限或可选的权限放入程序集中。有关详细信息,请参阅下面的声明性方式和命令性方式部分或 .NET Framework SDK。
决定授予程序集一个实际权限集的过程包括三个步骤:
各个策略级别计算程序集的证据,然后生成特定于策略级别的授予权限集。
为每个策略级别计算的权限集彼此相交。
得到的权限集与程序集声明需要运行的权限集或拒绝权限进行比较,然后相应地修改权限的授予。
图 1 显示了大概的计算过程。运行库的宿主提供有关程序集的证据,该证据作为程序集收到的权限集计算的一个输入。可管理的安全策略(企业策略、计算机策略和用户策略)是决定程序集的权限集计算的第二个输入,本文前面称之为安全性设置。然后安全策略代码(包含在 SecurityManager 类中)遍历各个策略级别设置提供的程序集证据,然后生成一个权限集,它代表了该程序集可访问受保护资源的权限集合。
每个策略级别是如何管理的呢?策略级别表示一个独立、可配置的安全策略单元 — 每个级别都将程序集证据映射到一个权限集。每个策略级别都具有类似的体系结构。每个策略级别都由三个部分组成,这三个部分组合在一起,用来共同表示策略级别的配置状态:
代码组树
命名权限列表
策略程序集列表
现在我们来详细阐述所有策略级别的这些组成部分。
查看本文来源" target=_blank>查看本文来源如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者