授权

授权

授权确定已通过验证的标识可以执行哪些操作以及可以访问哪些资源。错误授权或弱授权会导致信息泄漏和数据篡改。深入防御是应用程序授权策略的关键安全原则。

以下做法可以增强 Web 应用程序的授权:

使用多重看守

限制用户对系统级资源的访问

考虑授权粒度

使用多重看守

在服务器端,可以使用 IP 安全协议 (IPSec) 策略提供主机限制,以此来限制服务器间的通信。例如,IPSec 策略可以限制远离指定 Web 服务器的任何主机连接到数据库服务器。IIS 提供了 Web 权限、Internet 协议/域名系统 (IP/DNS) 限制。无论用户是什么身份,IIS 的 Web 权限适用于所有通过 HTTP 请求的资源。如果攻击者设法登录到服务器,IIS 的 Web 权限将不提供保护功能。因此,NTFS 权限允许您为每个用户指定访问控制列表。最后,ASP.NET 提供 URL 授权和文件授权以及主要权限需求。将这些看守方法结合使用,可以制定出有效的授权策略。

限制用户对系统级资源的访问

系统级资源包括文件、文件夹、注册表项、Active Directory 对象、数据库对象、事件日志,等等。使用 Windows 访问控制列表 (ACL) 限制哪些用户可以访问哪些资源,以及可以执行哪些类型的操作。要特别注意匿名 Interne 用户帐户;使用 ACL 锁定这些匿名帐户,以防止他们访问明确拒绝匿名用户访问的资源。

有关使用 Windows ACL 锁定匿名 Internet 用户帐户的详细信息,请参阅模块 16:保护 Web 服务器。

考虑授权粒度

有三个常用的授权模型,每个模型都具有不同的粒度和可伸缩性。

最多粒度法建立在模拟的基础上。资源访问是使用调用方的安全上下文实现的。安全资源(通常指文件或表格,或二者都包括)上的 Windows ACL 确定是否允许调用方访问该资源。如果应用程序主要提供对用户特定资源的访问,那么这种方法可能是有效的。它还具有另一个优点,即能够跨应用层执行操作系统级审核,因为原始调用方的安全上下文在操作系统级传送,并用于资源访问的依据。然而,如果应用程序的可伸缩性较差,这种方法的效果会受影响,因为不存在高效的数据库访问连接池。因此,此方法通常应用于规模有限的基于 Intranet 的应用程序中。图 4.5 显示了模拟模型。

模拟模型提供了每位最终用户的授权粒度

图 4.5
模拟模型提供了每位最终用户的授权粒度

最少粒度最大伸缩性方法使用应用程序的过程标识来访问资源。此方法支持数据库连接池,但这说明授予数据库中应用程序标识的权限是公用的,而不考虑原始调用方的标识。初级授权是在应用程序的逻辑中间层通过角色实现的,角色将在应用程序中共享相同权限的用户分为一组。基于调用方的角色成员身份来限制其对类和方法的访问权限。为了支持对用户个人数据的检索,常用方法是在数据库表中添加一个标识列,并使用查询参数限制检索到的数据。例如,可以在应用程序级(而不是操作系统级)使用存储的过程参数将原始调用方的标识传递到数据库中,然后编写类似如下所示的查询语句:

SELECT field1,field2,field3 FROM Table1 WHERE {some search criteria} AND UserName = @originalCallerUserName

此模型被认为是受信任的子系统,有时还被称作受信任的服务器模型。图 4.6 列出了该模型。

支持数据库连接池的受信任子系统模型

图 4.6
支持数据库连接池的受信任子系统模型

第三种方法基于调用方的角色成员身份,使用有限的标识集进行资源访问。实际上它是前面所述的两种模型的综合。调用方被映射到应用程序逻辑中间层中的角色,并基于角色成员身份限制对类和方法的访问权限。使用由当前调用方的角色成员身份所确定的有限标识集来执行下游资源访问。该方法的优势在于可以在每次登录数据库时单独分配权限,而多重连接池仍然有效。多线程访问令牌使用 Windows 验证为下游资源访问建立不同的安全上下文。此方法的劣势在于创建这种令牌是一种特权操作,需要使用特权进程帐户。这是与最少特权原则相违背的。混合模型使用多重受信任服务标识管理对下游资源的访问权限,图 4.7 中显示了这种模型。

混合模型

图 4.7
混合模型

你可能感兴趣的:(授权)