Active Directory概述
Active Directory域内的Directory Database(目录数据库)被用来存储用户账户、计算机账户、打印机于共享文件夹等对象,而提供目录服务的组件就是Active Directory域服务(Active Directory Domain Services,AD DS),它负责目录数据库的存储、添加、删除、修改与查询等工作。
Active Directory域服务的适用范围
AD DS的适用范围非常广泛,它可以用在一台计算机、一个小型局域网(LAN)或多个广域网(WAN)结合的环境中。它包含此范围中的所有对象,例如文件、打印机、应用程序、服务器、域控制器与用户账户等。
名称空间(Namespace)
名称空间是一个界定好的区域(bounded area),在此区域内,我们可以利用某个名称来找到与此名称有关的信息。
Active Directory域服务(AD DS)也是一个名称空间。利用AD DS,我们可以通过对象名称来找到于此对象有关的所有信息。
AD DS与DNS紧密地集成在一起,它的域名空间也是采用DNS架构,因此域名是采用DNS格式来命名的,例如可以将AD DS的域名命名为sayms.local
对象(Object)与属性(Attribute)
AD DS内的资源是以对象的形式存在的。例如用户、计算机等都是对象,而对象是通过属性来描述其特征的,也就是对象本身是一些属性的集合。
容器(Container)与组织单位(Organization Unit,OU)
- 容器与对象相似,它也有自己的名称,也是一些属性的集合,不过容器内可以包含其他对象(例如用户、计算机等),也可以包含其他容器。
- 组织单位是一个比较特殊的容器,除了可以包含其他对象与组织单位之外,还有委派控制功能和组策略(group policy)的功能
域树(Dormain Tree)
我们可以搭建包含多个域的网络,而且是以域树(domain tree)的形式存在。
在域树内的所有域共享一个AD DS,也就是在此域树之下只有一个AD DS,不过其中的数据是分散存储在各个域中的,每一个域内只存储隶属于该域的数据,例如该域内的用户账户(存储在域控制器内)。
信任(Trust)
两个域之间必须拥有信任关系,才可以访问对方域内的资源。而任何一个新的AD DS域被加入到域树后,这个域会自动信任其上层的父域,同时父域也会自动信任此子域,而且这些信任关系具备双向传递性(2-way transitive)。由于此信任工作是通过Kerheros Security Protocol来完成的,因此也被称为Kerberos trust。
林(Forest)
- 林是由一个或多个域树所组成的,每一个域树都有自己唯一的名称空间。
- 第一个域树的根域,就是整个林的根域(forest root domain),同时其域名就是林的林名称
- 在建立林时,每一个域树的根域与林根域之间双向的、可传递的信任关系都会自动建立起来,因此每一个域树中的每一个域内的用户,只要拥有权限,就可以访问其他任何一个域树内的资源,也可到其他任何一个玉树内的成员计算机登录
架构(Schema)
- AD DS对象类型与属性数据时定义在架构内的,例如它定义了用户对象类型内包含哪一些属性(姓、名、电话等),每一个属性的数据类型等信息。
- 隶属于Schema Admins组的用户可以修改架构内的数据,应用程序也可以自行在架构内添加其所需的对象类型或属性。在一个林内所有域树共享相同的架构
域控制器(Domain Controller)
- Active Directory域服务的目录数据时存储在域控制器内的。
- 一个域可以由多台域控制器,每一台域控制器的地位几乎是平等的,它们各自存储着一份相同的AD DS数据库
只读域控制器(RODC)
只读域控制器(RODC)的AD DS数据库只能被读取,不能被修改,也就是说用户或应用程序无法直接修改RODC的AD DS数据库。
RODC的AD DS数据库内容只能够从其他可读写域控制器复制过来
- RODC的AD DS数据库内容
除了用户账户的密码之外,RODC的AD DS数据库内会存储AD DS域内的所有对象与属性
- 远程分公司内的应用程序要读取AD DS数据库内的对象时,剋通过RODC来快速获取
- 远程分公司在验证用户名与密码时,仍然需要将他们发送到总公司的可读写域控制器进行验证,是因为RODC并不存储用户的密码。
- 单向复制
总公司可读写域控制器的AD DS数据库发生变化时,这些变化数据会复制到RODC,然而因为用户或应用程序无法直接更改RODC的AD DS数据库,因此总公司的可读写域控制器不会从RODC同步数据
- 认证缓存
RODC在验证用户的密码时,仍然需要将他们提交到总公司的可读写域控制器来验证,如果希望提高验证效率的话,可以选择将用户的密码存储到RODC的认证缓存区。这需要通过密码复制策略(Password Replication Policy)来选择可以被RODC缓存的账户。(建议不要缓存太多的账户,因为分公司的安全措施可能比较差,如果RODC被入侵的话,则存储在缓存区内的认证信息可能会外泄)
- 系统管理员角色隔离
可以通过系统管理员角色隔离来将任何一位域用户委派为RODC的本地系统管理员,他可以在RODC这台域控制器登录、执行管理工作,例如更新驱动程序等,但他却无法登录其他域控制器,也无法执行其他管理工作。此功能允许将RODC的一般管理工作委派给特定的用户,但却不会危害到域安全。
- 只读域名系统
可以在RODC上搭建DNS服务器,RODC会复制DNS服务器的所有应用程序目录分区,客户端可向这一台扮演RODC角色的DNS服务器提出DNS查询请求。不过RODC的DNS服务器不支持客户端直接进行动态更新,因此客户端的更新记录请求,会被此DNS服务器提交到其他DNS服务器,让客户端转向该DNS服务器进行更新,而RODC的DNS服务器也会自动从这台DNS服务器复制这条更新记录
可重启的AD DS(Restartable AD DS)
如果要进行AD DS数据库维护工作的话(例如数据库脱机整理),就需要重启计算机,进入目录服务还原模式来执行维护工作。Windows Server 2016等域控制器还提供了可重新启动的AD DS功能,也就是说如果要执行AD DS数据库维护工作的话,只需要将AD DS服务停止即可,不需要重启计算机来进入目录服务还原模式,如此不但可以让AD DS数据库的维护工作更容易、更快完成,而且其他服务也不会被中断。完成维护工作后再重新启动AD DS服务即可。
Active Directory回收站
Windows Server 2016具备Active Directory回收站功能,它让系统管理员不需要进入目录服务还原模式,就可以恢复被删除的对象。
AD DS的复制模式
域控制器之间的复制AD DS数据库时,分为两种复制模式:
- 多主机复制模式:AD DS数据库内的大部分数据是利用此模式进行复制的,在此模式下,可以直接更新任何一台域控制器内的AD DS对象,之后这个更新过的对象会被自动复制到其他域控制器。
- 单主机复制模式:AD DS数据库内少部分数据是采用单主机复制模式来复制的。在此模式下,当提出更改对象数据的请求时,会由其中一台域控制器(被成为操作主机)负责接收域处理此请求,也就是说该对象是先被更新在操作主机,再由操作主机将它复制到其他域控制器
DNS服务器
域控制器需要将自己注册到DNS服务器内,以便让其他计算机通过DNS服务器来找到这台域控制器。因此域环境需要由可支持AD DS的DNS服务器。此服务器最好支持动态更新功能,以便当域控制器的角色发生变化或域成员计算机的IP地址等数据发生变化时,可以自动更新DNS服务器内的记录
轻型目录访问协议(LDAP)
LDAP(Lightweight Directory Access Protocol)是一种用来查询与更新AD DS的目录服务协议。AD DS利用LDAP名称路径(LDAP naming path)来表示对象在AD DS内的位置,以便用它来访问AD DS对象。
LDAP名称路径包含:
- Distinguished Name(DN):它是对象在AD DS内的完整路径
CN=林子祥,OU=业务一组,OU=业务部,DC=h2o,DC=com
- Relative Distinguished Name(RDN):RDN是用来代表DN完整路径中的部分路径
CN=林子祥 与 OU=业务一组都是RDN
- Global Unique Identifier(GUID):系统会自动为每一个对象分配一个唯一的,128位数值的GUID,虽然可以更改对象名称,但其GUID永远不会改变
- User Principal Name(UPN):每一个用户还可以有一个比DN更短,更容易记忆的UPN
其中Linzx就是UPN
- Service Principal Name(SPN):SPN是一个包含多重设置值的名称,它是根据DNS主机名建立的。SPN用来代表某台计算机所支持的服务,它让其他计算机可以通过SPN来与这台计算机服务通信
全局编录(Global Catelog)
- 虽然在域树内的所有域共享一个AD DS数据库,但其数据却是分散在各个域内的,而每一个域只存储该域本身的数据。
- 为了让用户、应用程序能够快速找到位于其他域内的资源,因此在AD DS内设计了全局编录。一个林内的所有域树共享相同的全局编录
- 全局编录的数据是存储在域控制器内的,这台域控制器可被称为全局编录服务器,它存储着林内所有域的AD DS数据库内的每一个对象,不过只存储对象的部分属性,这些属性都是常用的、用于查找对象的属性
- 全局编录让用户即使不知道对象是位于哪一个域内,仍然可以快速地查找到对象
- 用户登陆时,全局编录服务器还负责提供该用户所隶属的通用组信息:用户利用UPN登录时,它也负责提供该用户是隶属于哪一个域的信息
站点(Site)
- 站点是由一个或多个IP子网所组成,这些子网之间通过高速且可靠的链路连接在一起,也就是这些子网之间的连接速度要够快且稳定,否则就应该将她们分别规划为不同的站点。
- 一般来说,一个LAN(局域网)内的各个子网之间的链路都是符合速度快并且高可靠的要求,因此可以将一个LAN规划为一个站点;而WAN(广域网)内的各个LAN之间的连接速度一般都不快,因此WAN之中的各个LAN应分别规划为不同的站点
- 域是逻辑的(Logical)分组,而站点则是物理的分组。在AD DS内一个站点可能包含多个域;而一个域内的各个计算机也可能分属域不同的站点
目录分区(Directory Partition)
AD DS数据库被逻辑的分为多个目录分区:
- 架构目录分区(Schema Directory Partition):它存储着整个林中所有对象与属性的定义数据,也存储着如何建立新对象与属性的规则。(整个林内所有域共享一份相同的架构目录分区)
- 配置目录分区(Configuration Directory Partition):其中存储着整个AD DS的结构例如:有哪些域,有哪些站点,有哪些域控制器等信息。(整个林共享一份相同的配置目录分区)
- 域目录分区(Domain Directory Partition):每一个域各有一个域目录分区,其中存储着与该域有关的对象,例如:用户、组与计算机等对象。(每一个域各自拥有一份域目录分区)
- 应用程序目录分区(Application Directory Partition):一般来说,应用程序目录分区是由应用程序所建立的,其中存储着与该应用程序有关的数据。例如:由Windows Server 2016扮演的DNS服务器,如果所建立的DNS区域为Active Directory集成区域的话,则它会在AD DS数据库内建立应用程序目录分区,以便存储该区域的数据。(应用程序目录分区会被复制到林中的特定域控制器,而不是所有的域控制器)