在域环境中,为了方便对用户权限进行管理,需要将具有相同权限的用户划为一组。
这样,只要对这个用户组赋予一定的权限,那么该组内的用户就获得了相同的权限。
组(Group) 是用户账号的集合,按照用途,可以分为通讯组和安全组。
通讯组就是一个通讯群组。例如,把某部门的所有员工拉进同一个通讯组,当给这
个通讯组发信息时,组内的所有用户都能收到。
安全组则是用户权限的集合。例如,管理员在日常的网络管理中,不必向每个用户
账号都设置单独的访问权限,只需创建一个组,对这个组赋予特权,再将需要该特权的
用户拉进这个组即可。
根据组的作用范围,安全组可以分为域本地组、通用组和全局组。注意,这里的“作
用范围”指的是组在域树或域林中应用的范围。
域本地组作用于本域,主要用于访问同一个域中的资源。除了本组内的用户,域本地组还可以包含域林内的任何一个域和通用组、全局组的用户,但无法包含其他域中的域本地组。域本地组只能够访问本域中的资源,无法访问其他不同域中的资源。也就是说,当管理员进行域组管理时,只能为域本地组授予对本域的资源访问权限,无法授予对其他不同域中的资源访问权限。
当域林中多个域的用户想要访问一个域的资源时,可以从其他域向这个域的域本地组添加用户、通用组和全局组。比如,一个域林中只有林根域有Enterprise Admins组(通用组),然后其他子域的域本地组Administrators会添加林根域的Enterprise Admins组,所以林根域的Enterprise Admins组用户才能在整个域林中具备管理员权限。
常见的系统内置的域本地组及其权限如下。
Administrators:管理员组,该组的成员可以不受限制地访问域中资源,是域林强大的服务管理组。
Print Operators:打印机操作员组,该组的成员可以管理网络中的打印机,还可以在本地登录和关闭域控制器。
Backup Operators:备份操作员组,该组的成员可以在域控制器中执行备份和还原操作,还可以在本地登录和关闭域控制器。
Remote Desktop Users:远程登录组,只有该组的成员才有远程登录服务的权限。
Account Operators: 账号操作员组,该组的成员可以创建和管理该域中的用户和组,还为其设置权限,也可以在本地登录域控制器。
Server Operators:服务器操作员组,该该组的成员可以管理域服务器。
通用组可以作用于域林的所有域,其成员可以包括域林中任何域的用户账户、全局组和其他通用组,但是无法包含任何一个域中的域本地组。通用组可以嵌套在同一域林中的其他通用组或域本地组中。通用组可以在域林的任何域中被指派访问权限,以便访问所有域中的资源。也就是说,域管理员进行域组管理时,可以为通用组授予对域林中所有域的资源访问权限,而不需考虑此通用组所在的位置。
下面介绍两个常见的系统内置通用组及其权限。
Enterprise Admins: 组织系统管理员组,该组是域林的根域中的一个组。该组中的成员在域林的每个域中都是Administrators组的成员,因此对所有的域控制器都有完全控制控制权。
Schema Admins: 架构管理员组,该组是域森林的根域中的一个组。该组中的成员可以修改活动目录,如在架构分区中新增类或属性。
全局组可以作用于域林的所有域,是介于域本地组和通用组的组。全局组只能包含本域的用户。全局组可以嵌套在同一个域的另一个全局组中,也可以嵌套在其他域的通用组或域本地组中。全局组可以在域林的任何域中被指派访问权限,即管理员进行域组管理时,可以为全局组授予对域林中所有域的资源访问权限,而不需考虑此全局组所在的位置。
全局组的成员只能包含本域中的用户账户,因此来自一个域的账户不能嵌套在另一个域的全局组中。这就是为什么来自同一个域的用户不具备另一个域的域管理员的成员资格。
常见的系统内置的全局组及其权限如下。
Domain Admins: 域管理员组,该组的成员在所有加入域的服务器上拥有完整的管理员权限。如果希望某用户成为域管理员,就可以将其添加到Domain Admins组中。该组会被添加到本域的Administrators 组中,因此可以获得Administrators组的所有权限。同时,该组默认被添加到域中每台计算机的本地Administrators组中,所以会获得域中所有计算机的控制权。
Domain Users:域用户组,该组的成员是所有的域用户。在默认情况下,任何新建的用户都是该组的成员。
Domain Computers:域成员主机组,该组的成员是域中所有的域成员主机,任何新建立的计算机账号都是该组的成员。
Domain Controllers:域控制器组,该组的成员包含域中所有的域控制器。
Domain Guests:域访客用户组,该组的成员默认为域访客用户。
Group Policy Creator Owners:新建组策略对象组,该组的成员可以修改域的组策略。
当需要对用户赋予某特殊权限时,可以设置一个域用户组,对这个组配置资源访问权限,再将该用户拉进这个组,这样用户就拥有了这个组的权限。同样,如果需要对指定部门的用户进行统一管理,便可以设置类似集合的概念,然后把该部门的用户拉入,这样就可以对该部门的用户进行集中管理了,如下发组策略等。这个集合就是组织单位。
组织单位(Organization Unit, 0U)是一个可以将域中的用户、组和计算机等对象放
入其中的容器对象,是可以指派组策略或委派管理权限的最小作用域或单元。组织单位可以统一管理组织单位中的域对象。组织单位包括但不限于如下类型的对象:用户、计算机、工作组、打印机、安全策略,以及其他组织单位等。在组织域环境中,经常可以看到按照部门划分的一个个组织单位。
访问控制是指Windows操作系统使用内置授权和访问控制技术,确定经过身份验证的用户是否具有访问资源的正确权限,以控制主体(Principal) 操作(读取、写入、删除、更改等)对象(Object)的行为是否具有合法权限。
在Windows操作系统中,访问主体通常是指安全主体。安全主体是任何可通过操作系统进行身份验证的实体,如用户账户、计算机账户、在用户或计算机账户的安全上下文中运行的线程或进程,以及这些账户的安全组等。被访问的对象通常是指安全对象,可能是文件、文件夹、打印机、注册表项、共享服务、活动目录域服务对象等。当经过身份验证的安全主体想访问安全对象时,Windows 会为安全主体创建一个访问令牌(Access Token),其中包含验证过程返回的SID和本地安全策略分配给用户的用户权限列表。当安全对象被创建时,Windows 会为其创建一个安全描述符( Security Descriptor)。
Windows的访问控制正是将安全主体的访问令牌中的信息与安全对象的安全描述中的访问控制项进行比较做出访问决策的。
Windows访问控制模型(AccessControlModel)是Windows系统安全性的基础构件。
Windows访问控制模型主要由访问令牌(Access Token) 和安全描述符( Security Descriptor)两部分组成,分别由访问者和被访问者持有。通过比较访问令牌和安全描述符的内容,Windows 可以对访问者是否拥有访问资源对象的能力进行判定。
当用户登录时,Windows 将对用户进行身份验证,如果验证通过,就会为用户创建一个访问令牌, 包括登录过程返回的SID、由本地安全 策略分配给用户和用户所属安全组的特权列表。此后,代表该用户执行的每个进程都有此访问令牌的副本,每当线程或进程与安全对象交互或尝试执行需要特权的系统任务,Windows 都会使用此访问令牌标识并确定关联的用户。
访问令牌主要包含以下信息:
标识用户账户的SID (Security ID, 安全标识)。
标识用户所属的组的SID。
标识当前登录会话的登录SID。
用户或用户所属的用户组持有的特权列表。
标识对象所有者的SID。
标识对象所有者组的SID。
标识用户主安全组的SID。
用户创建安全对象而不指定安全描述符时系统使用的默认DACL (Discretionary Access ControlList,自 主访问控制列表)。
访问令牌的来源。
访问令牌的类型,即令牌是主令牌还是模拟令牌。
限制SID的可选列表。
当前模拟等级。
其他信息。
安全描述符(Security Descriptor) 是一种与每个安全对象相关联的数据结构,其中包含与安全对象相关联的安全信息,如谁拥有对象、谁可以访问对象、以何种方式访问、审查哪些类型的访问信息等。当安全对象被创建时, 操作系统会为其创建一个安全描述符。安全描述符主要由SID和ACL (Access ControlList,访问控制列表)组成。
SID用来标识用户账户和该用户所属的组。ACL分为DACL和SACL两种。
访问控制列表(ACL) 是访问控制项(Access Control Entry, ACE)的列表。访问控
制列表中的每个访问控制项指定了一系列访问权限。
DACL (自主访问控制列表)是安全对象的访问控制策略,其中定义了该安全对象的
访问控制策略,用于指定允许或拒绝特定安全主体对该安全对象的访问。DACL是由一
条条的访问控制项(ACE) 条目构成的,每条ACE定义了哪些用户或组对该对象拥有怎
样的访问权限。
DACL中的每个ACE可以看作配置的一条访问策略,每个ACE指定了一组访问权限,并包含一个SID。该SID标识了允许或拒绝访问该安全对象的安全主体。为了描述简洁,可以把一条ACE归纳为如下4方面:①谁对这个安全对象拥有权限;②拥有什么权限;③这个权限是允许还是拒绝,④这个权限能不能被继承。
当安全主体访问该安全对象时,Windows 会检查安全主体的SID 和安全对象DACL中的ACE配置策略,根据找到的ACE配置策略对安全主体的访问行为允许或拒绝。如果该安全对象没有设置DACL,那么系统默认允许所有访问操作,如果安全对象配置了DACL但是没有配置ACE条目,那么系统将拒绝所有访问操作;如果系统配置了DACL 和ACE,那么系统将按顺序读取ACE,直到找到一个或多个允许或拒绝安全对象访问行为的ACE。
下面通过示例讲解ACL判断用户的访问权限的过程。例如:
安全主体PrincipalA: SID=110, GroupSID=120, GroupSID=130。
安全主体PrincipalB: SID=210, GroupSID=220, GroupSID=230。
安全主体PrincipalC: SID=310, GroupSID=320, GroupSID=330。
安全对象 ObjectD: ACE1,拒绝SID=210 的对象访问; ACE2,允许SID=110 和SID=220的对象访问。
这三个主体都想访问ObjectD,但并不是都可以访问。
①当PrincipalA访问安全对象D时:检查A的用户1用户组的SID与ObjectD的ACE配置策略,首先判断ACE1,此时没匹配上;然后判断ACE2,此时可以匹配上,则允许PrincipalA对ObjectD进行访问。
②当PrincipalB访问ObjectD时:检查PrincipalB的用户/用户组的SID与ObjectD的ACE配置策略,首先判断ACE1,此时可以匹配上,则直接拒绝PrincipalB 的访问。
③当PrincipalC 访问ObjectD时:检查PrincipalC 的用户/用户组的 SID与ObjectD的ACE配置策略,若两条ACE都没有匹配上,则直接拒绝PrincipalB 的访问。
SACL (System Access Control List,系统访问控制列表)是安全主体对安全对象的访问行为的审计策略。SACL也由一条一条的ACE条目构成,每条ACE定义了对哪些安全主体的哪些访问行为进行日志记录,如对指定用户的访问成功、失败行为进行审计记录日志。安全主体的访问行为满足这条ACE时就会被记录。
组策略(Group Policy)是Windows环境下管理账户的一种手段,可以控制用户账户和计算机账户的工作环境。组策略提供了操作系统、应用程序和活动目录中用户设置的集中化管理和配置,包含但不限于以下功能:
账户策略的配置:如设置用户账户的密码长度、复杂程度、密码使用期限、账户锁定策略等。
必脚本的配置:如登录与注销、启动与关机脚本的设置。
应用程序的安装与删除:用户登录或计算机启动时,自动为用户安装应用、自动修复应用的错误或自动删除应用。
文件夹重定向:如改变文件、“开始”菜单等文件夹的存储位置。
限制访问可移动存储设备。
用户工作环境的配置。
其他系统设置等。
组策略的一个版本名为本地组策略(Local Group Policy),这是组策略的基础版本,适用于管理独立且非域环境的计算机。而域环境中的组策略适用于管理域环境的所有对象,包括用户和计算机,可以对域环境的所有用户和计算机等对象进行多维管理,如安全配置、应用程序安装配置、开关机、登录/注销管理等。通过链接到指定站点、域和组织单位,配置的组策略在不同层级上应用不同的策略配置。
这里重点讲解域环境的组策略。
组策略对象(Group Policy Object,GPO) 即组策略设置的集合,其中包含应用于特定用户或计算机的策略信息和具体配置。在设置组策略时,只需将组策略对象链接到指定的站点、域和组织单位,其中的策略值便会应用到该站点、域和组织单位的所有用户和计算机。
组策略对象由组策略容器(Group Policy Container, GPC)和组策略模板(Group Policy Container,GPT)两个组件组成,在Windows中分别存储在域控制器的不同位置上。其中,组策略容器存储在活动目录的域分区,组策略模板被存放在域控制器的如下文件夹中: %SYSTEMROOT%\SYSV0L\sysvol\域 名\Policies。
可以使用组策略管理来查看和编辑每个GPO的设置。
组策略容器(GPC) 中记录着该组策略对象的策略名称、标识组策略的GUID、组策略链接到的作用域、组策略模板的路径、组策略的版本信息等各种元数据。