本章所讨论的安全性包括ms windows安全性和代码访问安全性(code access security),ado.net的安全性。
1.应用程序安全性概述
.net framework实现一个包含两层防护的安全体系。第一层称为基于角色的安全性,该层控制用户对应应用程序资源和操作的访问;第二层CAS,该层不仅控制代码对资源的访问,还控制代码执行特权操作的权限。
1.1 身份验证
身份验证(Authentication)是获取用户证书(用户名,密码)以识别和确认某个机构的过程。
证书(credentials)通常包含一个标示符和身份证据,如用户名和密码、电子邮件地址和密码、用户名和数字证书等。
1.2授权
授权(Authorization)是确定用户是否能够获得某种资源访问权限的过程。资源可能是文件、数据库、注册表等。访问类型包括读取操作、写入操作。写入又包括添加、删除、修改等操作。
1.3身份模拟
身份模拟(Impersonation)允许以客户的身份执行代码。
1.4委派
在计算机之间进行身份模拟称为委派(delegation)。
1.5基于角色的安全性
1.5.1工作组环境
在工作组环境中,每台计算机都在自己的目录中定义了需要访问本计算机的用户。
1.5.2域环境
在域环境中,域控制器包含一个活动目录,该目录将列出能够访问本域的用户。工作站包含一个分配给资源的本地组的目录。
1.5.A 工作组与域
工作组和域是我们局域网中两个非常重要的概念,但是很多人却它们之间的关系却弄不清楚,今天我们就和大家一起来了解它们之间的差别。
一、工作组
一个网络建成后,默认所有电脑都处在网上邻居中。当电脑比较多时,则显的非常的乱。因此,可以对其进行分组进行管理。例如“销售部”、“服务部”等,属于这些部分的电脑分别加入相应的组中,这样我们打开网上邻居首先看到的是这些组,进入组后看到的才是一台台具体的计算机。
对此,我们某一台电脑要加入组中,只需要右击打开我的电脑属性窗口,在“计算机名”中单击“更改”按钮,然后将“隶属于”设为“工具组”,并输入自己所属的工作组名称,如果输入的是新名称,那么则默认创建该组并加入该组,设置完毕单击“确定”按钮重新启动后生效。
如果是宽松型的,对管理要求不是特别高的可以使用工作组;
从上面的介绍可以看出工作组内的每一台电脑之间是平等的,每一个人都可以自由控制自己加入哪一个组,显的比较松散。因此我们又引入了“域”的概念。
二、域
由一台电脑充当域服务器,由它控制其它电脑能否加入域。
要加入到域,那么则必须在域服务器的管理工具中打开“Active Directory用户和计算机”,然后在左侧选择“计算机”,并在右侧右击选择“新建”中的“计算机”,填入要加入域的客户机的名称,建议使用有一定规律的英文。
在域服务器上做好后,就可以在客户计算机上打开系统属性窗口,然后在“计算机名”中单击“更改”按钮,将“隶属于”设为“域”,然后按提示输入域名以及域用户账户即可。
如果对资源的访问有较严格的管理,那么则应建立域。
1.6代码访问安全性
代码访问安全性(CAS)能最大限度地防止用户无意识地执行不安全的代码。
1.6.1证据
1.6.2代码访问权限
代码访问权限用于定义访问特定资源的权利。.net框架实现了多种代码访问权限,以保护系统资源。
1.6.3处理CAS
1.6.4代码组
代码组用于定义一组授予程序集的权限。
1.6.5权限集
权限集是一组可以根据需要分配给代码组的权限。
1.6.6运行时安全策略级别
运行时安全策略级别是一组可应用于企业、本地计算机、用户、和应用程序域的安全级别。每个安全级别都拥有自己的代码组和权限集层次。
1.6.7修改应用程序域级安全策略
1.6.8创建一个测试安全性的项目