ASP.NET应用程序资源访问安全模型

原创 2004年07月03日 12:06:00

摘要:本文主要介绍了ASP.NET WEB应用程序的安全模型的种类、对比其优缺点,提出了选择的机制。


关键字:安全模型 受信任子模型 模拟/委托子模型 ASP.NET WEB应用

1.前言

    ASP.NET WEB应用程序通常属于多层体系结构,一般从逻辑结构上可以分为表示层、业务逻辑层和数据访问层;客户端要访问应用程序资源,其身份认证和授权必然要跨越多个层次。本文主要讨论SP.NET应用程序的资源访问安全模型

2. 资源访问标识

    WEB应用程序对外提供的给客户端的典型资源包括:
  • Web服务器资源,如Web页、Web服务和静态资源(HTML页和图像)。
  • 数据库资源,如针对每个用户的数据或是应用程序级数据。
  • 网络资源,如远程文件系统资源等。
  • 系统资源,如注册表、事件日志和配置文件等。
    客户端跨越应用程序的层来访问这些资源,要有一个标识流经各个层。这个用于资源访问的标识包括:
  • 原始调用者的标识 原始调用者的标识被获取并且随后流经系统的每个层。
  • 进程标识 本地资源访问和下游调用是使用当前进程标识进行的。这种方式的可行性依赖于要跨越的边界,因为进程标识必须能被目标系统识别。这需要以下面两种方式之一进行调用:
    • 在同一个Windows安全域中
    • 跨Windows安全域-使用信任和域账户,或者在不存在信任关系的情况下使用重复的用户名和密码。
  • 服务账户 这种方式使用一个(固定的)服务账户。例如
    • 对于数据库访问,该服务账户可能由连接到数据库的一个组件表示固定的SQL用户名和密码。
    • 当需要固定的Windows标识时,应使用Enterprise Services服务器应用程序。
  • 自定义标识 当没有Windows账户可用时,可以使用Iprincipal和Iidentity实现构造自己的标识,可以包含安全上下文有关的详细信息。

3. 资源访问模型

3.1 受信任子系统模型

    如图1所示,在这种模型中,原始调用者的安全上下文并不在操作系统级流经服务,而是在中间服务层使用了一个固定标识来访问下游的服务和资源。受信任子系统模型得名于这样一个事实:下游服务(可能是一个数据库)信任上游服务,让其调用者进行授权。图1中的示例,数据库信任中间层对调用者进行的授权,并只允许被授权的调用者使用受信任标识访问数据库。 Secu5.gif

3.1.1 资源访问模式

    在受信任子系统模型中,资源访问模式如下:
  • 对用户进行验证
  • 将用户映射为角色
  • 根据角色成员关系进行授权
  • 使用一个固定的受信任标识访问下游资源

3.1.2 固定标识

    用于访问下游系统合资源管理器的固定标识,可以使用进程标识,也可以使用一个预先设定的Windows账户-服务账户来提供。对于SQL Server资源管理器,这意味着对SQL Server的Windows身份验证。
    使用进程标识时通常使用ASP.NET进程标识(默认识ASPNET账户)。实际应用时,经常需要将ASPNET账户更改为一个更为安全的密码,并在SQL Server计算机上镜像创建一个与ASP.NET进程帐户相匹配的Windows账户。具体方法如下:
    编辑位于%windr%/Microsoft.NET/Framework/v1.1.4322/CONFIG目录下的Machine.config文件,将<processModel>元素上的密码属性重新配置,将其默认值<!-UserName="machine" password="AutoGenerate" -->改为<!-UserName="machine" password="NewPassword" -->;或是通过ASPNET_setreg.exe工具,将用户名和密码保存到注册表,配置改为:<!-enable="true" UserName="Registry:HKLM/SOFTWARE/YourAPP/processsModel/ASPNET_SETREG,userName" password=" Registry:HKLM/SOFTWARE/YourAPP/processsModel/ASPNET_SETREG,password " -->
    另外一些应用程序使用指定的SQL账户(在连接字符串中由用户名和密码指定)来访问SQL Server。在这种情况下,数据库必须配置为SQL身份验证。在配置文件中保存的连接字符串需要加密保护。

3.2 模拟/委托模型

    如图2所示,使用模拟/委托模型时,一个服务或组件(通常位于逻辑业务服务层中)在访问下一个下游服务前,使用操作系统模拟功能来模拟客户端标识。如果该服务位于同一计算机上,则使用模拟就足够了,如果下游服务位于远程计算机则还需要使用委托,下游资源访问的安全上下文是客户端的上下文。
Secu6.gif

3.3 选择资源访问模型

    两种资源访问模型的比较如表一所示。
  受信任子系统模型 模拟/委托模型
审核功能 后端信任上层服务,若中间层受侵害,后端资源易受攻击。 后端服务可以对每个调用者进行验证、授权,安全性好。
可伸缩性 支持连接池,伸缩性好。 不支持连接池,伸缩性差。
后端ACL管理 ACL针对单个实体进行配置,管理工作少。 每个用户都要被授予相应的访问级别,后端资源和用户数增大时,管理工作繁琐。
技术问题 不用委托。 需要委托。大多数安全服务提供程序不支持委托。

    在大多数Internet应用程序以及大型intranet应用程序中都会使用受信任子系统模型,这主要是由于这种模型能很好的支持可伸缩性。模拟/委托模型则倾向于用于小型的系统。对于这些应用程序,可伸缩性不是主要的考虑因素,其主要考虑的因素是审核。

3. 相关文章

    《ASP.NET应用程序的安全方案(一)-身份验证》
    《ASP.NET应用程序的安全方案(二)-授权》
    《ASP.NET应用程序的安全方案(二)-安全通信》

Android 不同应用之间互相通信以及读取资源

'''一.应用之间通信'''   Android系统应用程序之间不能共享内存,他们之间的通信是需要特殊的机制。Android SDK提供了4中跨进程的通讯方式,对应Android系统中的4个组件:Ac...
  • hello0370
  • hello0370
  • 2014年07月24日 16:14
  • 3995

Android资源访问机制

Android经常使用getResources()方法获取app的一些资源,getResource()方法是Context接口的方法,具体是有ContextImpl类实现的,Activity、Serv...
  • linghu_java
  • linghu_java
  • 2015年01月13日 17:22
  • 2962

【IIS服务器】 一点点对WEBRESOURCE.AXD的配置及使用

一点点对WEBRESOURCE.AXD的配置及使用 - Jimmy Huang 的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/kingmax54212008/...
  • CrackLibby
  • CrackLibby
  • 2016年04月25日 16:27
  • 1302

ASP.NET应用程序的安全模型

  • 2007年11月27日 12:42
  • 258KB
  • 下载

部署一个安全的ASP.NET MVC 5应用程序成员、OAuth和SQL Azure网站数据库

推特 发现更多的资源为这些服务: 网站 sql数据库 发现更多的资源: net 部署一个安全的ASP.NET  MVC 5应用程序成员、OAuth和SQL Azure网站数...
  • Litt_J
  • Litt_J
  • 2015年01月06日 02:14
  • 2364

五种常见的ASP.NET应用程序安全缺陷

五种常见的ASP.NET应用程序安全缺陷 一、不能盲目相信用户输入  在Web应用开发中,开发者最大的失误往往是无条件地信任用户输入,假定用户(即使是恶意用户)总是受到浏览器的限制,总是通过浏览器和服...
  • eryongyan
  • eryongyan
  • 2013年12月23日 14:35
  • 1603

[06] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型 2014-05-07 18:27 by Bce, 1434 阅读, ...
  • Litt_J
  • Litt_J
  • 2014年12月29日 14:34
  • 1253

构建安全的 Microsoft® ASP.NET 应用程序

  • 2008年01月30日 14:37
  • 1.51MB
  • 下载

ASP.net安全应用程序开发

  • 2012年06月19日 18:05
  • 12.03MB
  • 下载

ASP.NET 安全应用程序开发.pdf

  • 2017年04月24日 19:02
  • 14.43MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET应用程序资源访问安全模型
举报原因:
原因补充:

(最多只允许输入30个字)