.NET框架中基于角色的安全性框架中基于角色的安全性
概述概述
在过去的相当长一段时间内,计算机及信息犯罪的比例正在逐渐升高。美国联邦调查局的计算机安全组织在2001年的研究调
查中发现85%企业的企业安全受到侵害。在对这些企业进行调查之后提出的财物损失报告中指出,合计损失为3亿7千7百万美
元,比起2000年的2亿6千5百万美金增加了42%。由此可清楚的看出,计算机及信息犯罪的发生次数越来越频繁,其所造成的
损失也越来越大,另外,犯罪的手段也越来越丰富,令企业安全人员防不胜防。因此企业必须有所行动来保护有价值的信息资
产。自然而然的,安全性在现在的程序开发中越来越成为一个不可忽视的问题。
传统的安全模型将安全性建立在用户以及用户组的机制上来提供隔离和访问控制。这就意味着用户要么可以运行全部代码,要
么都不能运行。而这正是现在大多数操作系统采取的安全模型,即使现在看来这种机制也是很有效的,但是深入思考之后我们
可以发现这种机制存在的假设是所有的代码都具有相同的信任程度。当所有的代码都是来自你或者你的系统管理员,那么这种
假设是行之有效的。但是现在大多数计算机都连上了Internet之后,这种"都行"或者"都不行"的方式就不那么好了。.NET框架
提供了全面的安全系统,足以应付现在已有的大多数安全性问题。在.NET框架中提供了与传统模型相似的,但却是由开发人
员自定义的安全模型,称为基于角色的安全性(Role-Based Security)。基于角色的安全性最重要的概念就是授权
(Principals)和标识(Identity)。
基于角色的安全性基于角色的安全性
简单的说,程序安全性的目的就是防止不怀好意的人或者程序不能做管理员和开发人员不允许做的事情。在前面提到的传统的
安全机制着眼于控制用户的权限,通过验证用户的身份标识来限制用户的操作,从而可以控制特定的用户对资源的访问,在过
去很长的一段时间里,Windows和UNIX这两个最成功的操作系统都采取了这种安全机制。在讨论.NET的安全编程之前,我们
将先来看看.NET平台提供的安全模型,只有深入理解安全模型,我们才能更加有效的利用平台给我们提供的更好的安全性保
证(以下讨论的操作系统以Windows 2000及Windows XP为主)。
.NET的安全模型在系统的安全模型的上层,并且与一些服务器程序的安全特性结合的很好(当然,目前这些产品还仅限于微
软自己的产品,比如SQL Server和Internet Information Services (IIS))。正因为.NET与操作系统的层次不同,所以.NET程
序的安全性就取决于这样几个因素:.NET安全性是如何配置的,程序组件是怎样编写的,以及一些由Windows,网络设置或
者其他程序设定的安全特性。
下面这幅图说明了.NET安全模型是如何在Windows的安全子系统上工作的。管理员使用管理控制台snap-ins设置用户帐号并
制定安全策略。同时,管理员也负责管理.NET安全配置。当用户登陆操作系统并运行.NET托管程序,CLR将验证用户并允许
程序进行某些动作,接着将这些操作传递给操作系统的安全监视程序。
不过有一个需要特别注意的问题,就是无论你怎样使用.NET的安全,资源仍然是处于操作系统级的保护之下。对于受特殊保
护的资源,.NET平台的安全权限是无能为力的(其实这一点也正好符合.NET与操作系统的层次关系)。