什么是DAC?
动态访问控制(DAC,Dynamic Access Control)是Windows Server 2012的一个针对文件系统资源的新的访问控制机制。它允许管理员去定义可以应用在组织中所有文件服务器的中心文件访问策略。DAC为所有的文件服务器和现有的共享以及NTFS文件系统权限提供了安全保障。无论共享和NTFS文件系统的权限怎么改变,它都能够确保中心策略被强制覆盖应用。
DAC根据多个标准的组合来确定访问权限。它结合NTFS文件系统访问控制列表,那么用户需要满足共享权限,NTFS文件系统访问控制列表,和中心访问策略才能获得文件的访问权。但是DAC也可以不与NTFS文件系统权限结合,单独的被使用。
DAC提供了一个灵活的方法去应用,管理和审计访问那些域中的文件服务器。验证令牌中的申明,资源的资源属性,权限和审计许可的条件表达式,DAC通过结合这些功能来授予和审计那些标记了ADDS属性的文件和文件夹。
DAC主要用于控制文件访问,它比NTFS文件系统和共享权限更加的灵活。它也可以被用来审计文件的访问,以及可选的去与AD RMS集成在一起。
DAC的设计是为了满足以下四个场景:
1.使用中心访问策略去管理文件的访问。这样可以让组织建立一个与商业需求和管理符合性相对应的安全保障策略
2.用于分析和合规性审计。为合规报告以及电子取证分析做跨文件服务器的定向审计。
3.保护敏感信息。DAC在Windows Server2012环境中能够识别和保护敏感信息,如果集成了AD RMS,则可以使文件在离开Windows Server 2012环境后依然受到保护。
4.访问拒绝修正。改善了访问拒绝的体验从而减少了IT人员的工作负担并且为故障诊断提供故障时间。此技术让负责管理这些文件的用户更加方便的去控制文件。访问拒绝修正能够发送信息给每个文件夹的不同的所有者,信息中会描述为什么被拒绝访问,从而让所有者能够根据信息的提示去确定如何修复这个问题。
什么是申明?
用户申明:
一个用户申明是由Windows server 2012的域控制器提供的关于用户的信息。Windows server2012域控制器可以使用大部分的ADDS用户属性作为申明的信息。这给管理员提供了一个广泛的配置可能性并通过申明来进行访问控制。在定义一个用户申明之前,你需要在想要用来作为访问控制的的用户属性中填入适当的值。
设备申明:
一个设备声明通常被称为计算机申明,是Windows server 2012域控制器提供的关于设备的信息,这些设备在ADDS中以计算机账号表现。与用户申明一样,设备申明能够使用ADDS中计算机对象的大部分属性。DAC不像NTFS文件系统权限,在用户试图访问某个资源的时候,DAC会结合用户当前使用的设备来确定授权。设备申明被用作代表那些你想要用来实现访问控制的设备属性。
跨林申明:
在Windows server 2012中ADDS为每一个森林维护一个申明字典。所有在林内定义和使用的申明类型都是在ADDS林级别被定义的。但是有些场景中,某个用户或者设备的安全性原则可能需要穿过信任边界去访问受信任林的资源。Windows server 2012的跨林申明允许用户在林间传递入站和出站的申明,以便申明能够信任的和受信任的林中被识别和接受。默认情况下,一个受信任的林允许所有的出站申明通过,一个信任的林阻止所有接收到的入站申明。
什么是资源属性?
当你使用申明或者安全性群组去控制文件和文件夹的访问时,你同时能够提供这些资源的其他信息。这些信息能够被DAC规则用于访问管理。
和配置用户以及设备申明类似,你必须定义你想要使用的资源的属性。这些属性通过资源属性对象来配置。这些对象定义了一些能被指派给文件和文件夹的额外的属性。通常这些属性会在文件分类的时候被指派,Windows server 2012 能够使用这些属性作为验证目的。例如,这些属性可以一类文件或者文件夹的分类值,就像Confidential或者Internal之类的值。其他的属性可以代表文件的值,比如这些信息归哪个部门所有,或者这个文件与哪个项目有关,类似于研发,项目X等值。
资源属性需要在资源属性容器中管理,资源属性容器位于活动目录管理中心的DAC节点。
你可以创建你自己的资源属性,或者使用一个预置的属性,比如部门,文件夹用途等。所有预定义的资源属性对象默认情况下是被禁用的,所以如果你需要使用它们,你必须先启用这些对象。如果你想创建你自己的资源属性对象,你可以指定属性类型和对象的允许或建议值。
当你创建资源属性对象的时候,你可以选择属性包含在文件和文件夹中。当你评估文件授权和审计时,Windows操作系统会把这些属性中的值与用户和设备申明值结合起来评估。
如何通过DAC来访问资源?
DAC作为一种新的授权和审计机制需要对ADDS进行扩展。这些扩展动作会创建一个Windows申明字典,Windows操作系统将它用来为活动目录森林存放申明。申明的验证过程也需要依赖Kerberos5协议的KDC(密钥发布中心)。
当你使用NTFS文件系统来管理访问控制时,用户的访问令牌中含有用户的SID和用户所隶属的所有群组的SID。当用户试图去访问资源的时候,资源中的访问控制列表(ACL)会被评估,如果用户的令牌中至少有一个SID能够与ACL中的SID相匹配,用户则会被赋予对应的权限。
但是DAC不仅仅是使用SID去管理资源访问,它会使用申明去给用户或者设备定义一些额外的属性。这代表用户的访问令牌不再仅仅包含SID的信息,而且会包含关于用户的申明信息和来自用户正在使用的设备的申明信息,这些信息都将用于访问资源时的评估。
Windows server 2012 KDC增强了Kerberos协议,它要求申明在Kerberos票据中传输并且被用于合成身份标识。Windows server 2012 KDC还有一个增强功能,它能够支持Kerberos铠甲。Kerberos铠甲是一种灵活验证安全隧道的实施,它能够在Kerberos客户端和KDC之间提供一条受保护的通道。申明被保存在Kerberos特权账号证书中,但这些功能不会增加令牌的大小。
在配置了用户和设备申明以及资源属性之后,就必须通过条件表达式来实现文件和文件夹的保护。条件表达式根据一些恒定的值或者资源属性的值来评估用户和设备的申明。你可以通过以下三种方式来执行:
1.如果你只想涵盖特定的文件夹,你可以直接在安全性描述器中使用高级安全性设置编辑器去创建条件表达式。
2.如果你想涵盖一些或者所有的文件服务器,你可以创建中心访问规则,然后将这些规则连接到中心访问策略对象上。然后你可以使用组策略去将中心访问策略对象应用到文件服务器上,接着为使用中心访问策略对象配置共享。中心访问策略是保障文件和文件夹最有效和最适合的方法。
3.当你使用DAC管理访问,你可以使用文件分类去涵盖那些在不同的文件或者文件夹中拥有一组共同属性的特定文件。
Windows server 2012和Windows8都支持在权限许可中设置一个或多个条件表达式。条件表达式只是简单的添加到权限许可的另一个可用层,所有条件表达式的结果必须被windows操作系统评估为TRUE,才能授权权限许可去执行验证。例如,假设你定义了一个名称为Department的申明给一个带有Department源属性的用户,然后你定义了一个名称为Department的资源属性对象。现在你可以定义一个条件表达式,根据应用的资源属性对象,只有在用户的属性Department的值等于文件夹中Department属性的值时,用户才可以访问文件夹。注意:如果Department的资源属性对象没有被应用到文件或者文件夹,或者Department为空值,那么用户将拥有访问数据的权限。
在部署DAC之前服务器需要满足一些特定的前置要求。基于申明的验证要求拥有以下的基础架构:
1.安装了FSRM角色服务的Win2012或者更高版本的服务器,这个角色必须安装在托管资源的的文件服务器上,才可以使用DAC进行保护。托管共享的文件服务器必须是Win2012文件服务器,才可以从Kerberos5的票据中读取申明和设备授权数据;将票据中的SID传递给一个验证令牌;将令牌中的授权数据与安全性描述器中的条件表达式进行比较。
2.至少有一台Win2012的DC用来保存资源属性和策略的中心定义。用户申明不需要安全性群组。如果你使用用户申明,那么你至少要有一台win2012的DC能够在用户的域中可以被文件服务器访问,以便文件服务器能够检索到代表用户的申明。如果你使用设备申明,那么ADDS域中的所有客户端计算机必须使用win8的操作系统。仅安装了Win8或者更高版本系统的设备能能够使用设备申明。
使用申明的前提要求:
1.如果使用跨林申明,你必须在每个域中都安装一台win2012的DC。
2.如果使用设备申明,你必须有Win8的客户端,之前的windows操作系统不支持设备申明。
在使用用户申明的时候要求至少有一台Win2012的DC,但是并不要求你的域和林功能级别是Win2012的,除非你想在林信任中使用申明。你可以在域中安装或者保留win2008或者win2008R2的DC,并使用2008或2008R2的域和林功能级别。但是如果你想通过组策略来给用户和设备提供申明的话,你需要将你的域和林功能级别提升到win2012.
在满足了启用DAC支持的软件要求后,你必须启用Windows server 2012 KDC的申明支持。Kerberos协议对DAC的支持提供了一种机制,该机制用来将用户申明和设备授权信息保存在一个windows验证令牌中。文件或者文件夹的存取检查会使用这个授权信息去验证身份。
实验环境:
LON-DC1 WIN2012R2 域控
LON-SVR1 WIN2012R2 成员服务器
LON-CL1 WIN8.1 域客户端
LON-CL2 WIN8.1 域客户端
一、为DAC做AD的配置准备
在AD中建立一个DAC-Protected的OU,将LON-SVR1,LON-CL1,LON-CL2加入到这个OU,然后打开组策略管理器,编辑Default Domain Controller Policy,导航到 计算机配置-策略-管理模板-系统-KDC-KDC支持声明、复合身份验证和Kerberos Armoring,将它启用并设置成始终提供声明。完成设置后在LON-DC1上刷新组策略。
在AD中建立一个Users&Groups的OU,在其中建立ManagerWKS群组并将LON-CL1加入到此群组,建立Manager和Research,Manager的部门属性设置为Managers,Research的部门属性设置为Research。
二、配置用户和设备声明
打开LON-DC1上的Active Directory管理中心,导航到"动态访问控制"节点中的Claim Types,并在右侧的面板空白处右键新建一个声明类型
在源属性区域中选择department,在显示名称栏位中修改成Company Department,并将下方的用户和计算机都勾选起来,并添加建议值Managers和Research
三、配置资源属性和资源属性列表
将视图导航到Resource Properties,把Department和Confidentiality资源属性启用
双击Department属性,在弹出的窗口中单击"建议值"右侧的添加,并在弹出的添加建议值窗口中填入Research
四、执行文件分类
登入LON-SVR1,并在LON-SVR1上安装文件服务器资源管理器,打开管理器中的分类属性节点,可以看到我们在上面启用的资源属性Department和Confidentiality出现在分类属性中了。
在分类规则中新建一条规则Set Confidentiality,作用域设置为C:\Docs,分类中选择内容分类器,属性选择Confidentiality-High,并在配置中选择字符串值为"secret",评估类型中选择"重新评估现有的属性值"和"覆盖现有值",完成设置后,点击右侧操作面板中的"立即使用所有规则进行分类"。运行完毕后分别查看file1,file2,file3的分类属性,可以看到file3的Confidentiality是High了。
五、设置Research文件夹的分类属性
在LON-SVR1的C盘建立一个Research文件夹,将该文件夹的分类属性设置为Research
六、配置中心访问规则
在LON-DC1上打开Active Directory 管理中心,导航到动态访问控制的Central Access Rules,在右侧空白处右键选择新建中心访问规则
在创建中心访问规则窗口中输入名称Department Match,然后点击目标资源右侧的"编辑"按钮
在弹出的中心访问规则窗口中点击"添加条件",然后可以看到有Department和Confidentiality这两个前面启用的资源属性可以选择作为条件
设定一个条件Department-等于-值-Research
完成条件设置后,回到创建中心访问规则窗口,在权限区域选择"将以下权限作为当前权限",然后单击右侧的"编辑"
在弹出的权限的高级安全设置窗口中移除Administrators,然后"添加"新的对象,我们选择Authenticated Uers作为主体,赋予它修改,读写,读取和执行权限,并在点击下方的"添加条件",添加一个条件,组设置为"Company Department",值设置为"资源",并将Department选为资源的值。
回到中心访问规则面板,再新建一条规则命名为Access Confidential File,在目标资源中添加条件表达式 资源-Confidentiality-等于-值-High,同样选择"将以下权限作为当前权限"。
编辑权限,将Administrator权限移除,然后授予Authenticated Users读取,写入,读取和执行,修改权限。在条件中添加两个条件分别验证用户隶属的部门和计算机隶属的组,用户-Company Department-隶属于每项-值-Managers,设备-组-隶属于每项-值-ManagerWKS.
七、配置中心访问策略
打开LON-DC1中的Active Directory管理中心,导航到Central Access Policy,新建一条Protect Confidential File的策略,将上面创建的Access Confidential File的规则添加到策略中。
再建一条中心访问策略Department Match,将前面建立的Department Match规则添加进策略。
八、将中心访问策略应用到文件服务器上
在LON-DC1上打开组策略管理器,建立一个DAC Policy的组策略对象链接到DAC-Protected的OU上,并编辑这个策略,在组策略管理编辑器中导航到 计算机配置-策略-Windows设置-安全设置-文件系统-中心访问策略,右键选择管理中心访问策略
将建好的两条中心访问策略添加进去
设置完成后,我们在LON-SVR1上用gpupdate /force去强制刷新组策略,然后打开Docs的属性-安全-高级-中央策略,应用Protect Confidential File策略,按照同样的方法将Department Match应用到Research文件夹。
九、验证中心访问策略的结果
首先将LON-CL1和LON-CL2重新启动
用Manager登陆LON-CL1去访问LON-SVR1上的Docs和Research文件夹,用Research登陆LON-CL1去访问LON-SVR1上的Research文件夹和Docs文件夹。
然后在LON-CL2上重复上述动作,验证的结果如下:
Manager登录LON-CL1访问Docs以及其中的文件成功
Manager登录LON-CL1访问Research文件夹失败
Research登录LON-CL1访问Docs中的file3失败,访问file1,file2成功
Research登录LON-CL1访问Research以及其中文件成功
Manager登录LON-CL2访问Docs中的file3失败,访问file1,file2成功
Manager登录LON-CL2访问Research文件夹失败
Research登录LON-CL2访问Docs中的file3失败,访问file1,file2成功
Research登录LON-CL2访问Research文件以及其中文件成功
十、配置访问拒绝修复
打开组策略管理器,编辑DAC Policy组策略对象,导航到 计算机配置-策略-管理模板-系统-访问被拒绝协助,启用"自定义访问被拒绝错误消息"和"在客户端上对所有文件类型启用访问被拒绝协助",并在"自定义访问被拒绝错误消息"窗口中输入想要显示给用户的消息内容,然后勾选"允许用户请求协助"
切换到LON-SVR1刷新组策略,通过gpresult /h dac.html查看组策略套用是否成功
使用Manager账号登陆LON-CL1,去打开Research文件夹,提示的消息为我们刚才在组策略里自定义的拒绝消息内容,并在提示的下面有一个"请求协助"的按钮
点击请求协助后,会出现一个对话框,并要求你输入需要访问的原因。如果有搭建邮件服务器的话,管理员和文件夹所有者会收到这封请求邮件,然后决定是否给此用户开通访问权限。