文件和目录的访问控制(4) 审核规则
到目前为止,只是讨论了访问控制规则,它们构成了对象的DACL。DACL可以由对象的所有者任意更改,还可以由所有者已经给予其更改DACL权限的任何人更改。对象的安全描述符包含另一个规则列表,称为系统访问控制列表(System Access Control List,SACL),该列表将控制系统对对象执行哪个类型的审核。
审核是一种具有安全敏感性的操作。在Windows中,审核只能由本地安全机构(Local Security Authority,LSA)生成,因为LSA是唯一允许向安全事件日志(这里存储了审核)中写入项的组件。安全审核是一项非常严谨的业务,可以在计算机法庭中根据事实分析谁做了什么事情,以及谁试图在系统中做什么事情。很多组织都长年保留它们的审核日志。不用说,规定对哪些项目进行审核的设置通常都受到严格的管理控制。如果执行该节中的代码并且遇到UnauthorizedAccessException消息,可能是因为运行时所在的账户不包含“安全特权”(Security Privilege)。为了能够修改甚至分析SACL,必须由本地计算机策略向你的账户分配这一强大的特权。尽管有这些可怕的警告,但在具有必要的特权之后,读取和操作对象的审核设置在所有方面都类似于修改访问控制设置。代码清单7-13是一个操作审核规则的简单示例。
代码清单7-13 操作审核规则
using(FileStream file = new FileStream(
@"M:\temp\sample.txt",FileMode.Open, FileAccess.ReadWrite))
{
FileSecurity security = file.GetAccessControl();
FileSystemAuditRule rule = new FileSystemAuditRule(
new NTAccount( @"FABRIKAM\Full_Time_Employees"),
FileSystemRights.Write, AuditFlags.Failure);
security.AddAuditRule(rule);
file.SetAccessControl(security)
}
与之前的代码示例不同的是,本示例使用一个新的FileSystemAuditRule类。该类表示基础访问控制项(ACE)的抽象,该访问控制项指定用户账户、要提供的访问的类型(读、写等),以及是否要执行审核。此类还可以指定如何从对象继承审核规则以及将审核规则传播到对象。
若要在 Microsoft Windows NT 上允许文件或目录审核,必须在自己的计算机上启用Audit Access Security策略。默认情况下,该策略设置为No Auditing。
启用 Audit AccessSecurity 策略的步骤如下:
步骤 1 打开 Local Security Settings Microsoft 管理控制台 (MMC) 管理单元,定位于 Administrative Tools 文件夹中。
步骤 2 展开 Local Policies 文件夹,左击 Audit Policy 文件夹。
步骤 3 在该 MMC 管理单元的右窗格上双击 Audit object access 项,或右击并选择属性选项以显示 Audit object access Properties dialog。
步骤 4 选中Success 或 Failure 框以记录成功或失败。
注意 用户账户的审核规则需要同一用户账户的对应访问规则。
如代码清单7-13所示,需要使用FileSystemAuditRule类创建新的审核规则,然后使用FileSecurity或DirectorySecurity类可持久保存此规则。
审核设置被表示为审核规则。可以指定你想要审核的安全主体(用户或组)的名称、感兴趣的访问权限类型(例如读取、写入等)以及你是希望在授予、拒绝访问权限还是在执行这两种操作时生成审核。例如,在代码清单7-13中,每当全职雇员被拒绝对某个文件或给定父目录下的目录进行写入访问时,系统都将生成审核。继承标志、传播标志和保护设置对审核规则的作用方式与它们对访问控制规则的作用方式完全相同。
---------------注:本文部分内容改编自《.NET 安全揭秘》
本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2012/06/23/2559590.html,如需转载请自行联系原作者