活动目录(中国大陆译名为“活动目录”,台湾则是维持英文不译)是微软Windows Server中,负责架构中大型网络环境的集中式目录管理服务(Directory Services),在Windows 2000 Server开始内置于Windows Server产品中,它处理了在组织中的网络对象,对象可以是用户,组群,计算机,网域控制站,邮件,设置档,组织单元,树系等等,只要是在活动目录结构定义档(schema)中定义的对象,就可以存储在活动目录数据档中,并利用活动目录 Service Interface 来访问,实际上,许多活动目录的管理工具都是利用这个接口来调用并使用活动目录的数据。
活动目录也被做为微软部分服务器软件与网域构连的数据结构,例如Microsoft Exchange Server 2003-2007,均使用 AD 来存储其个人信箱数据(通过创建新的活动目录 Schema),并将 AD 列为建置Exchange Server的必要条件。
活动目录最早在1996年出现,并在Windows 2000中首次问世,研发代码为Cascade,并历经Windows 2000, Windows Server 2003的演化,目前 AD 已成为成熟的目录服务组件,在 Windows Server 2008中,AD 更扩充其角色至五种服务(包含凭证、联邦、权限控管与轻量级服务等)。
目录 |
活动目录(AD)以树状的数据结构来组成网络服务的信息,在简单的网络环境中(例如小公司),通常网域都只有一个,在中型或大型的网络中,网域可能会有很多个,或是和其他公司或组织的 AD 相互链接(此链接称为信任关系,于后面帮助)。
活动目录的最小存储单元为对象(object),每个对象均有自己的 schema 属性,可以存储不同的数据,像是用户、组群、计算机、信箱或其他的基本对象等。
一个 AD 网域底下的基本对象,有:
若公司需要以不同的组织结构来管理公司的帐户,则可以在 AD 中创建一个或多个组织单元(Organization Unit,简称 OU),组织单元是一个具有收纳能力的活动目录对象(其在 ADSI 中是 IADsContainer 接口),可以在 OU 之中存放 AD 的对象,包括用户,组群,计算机等,让组织结构在 AD 中可以被真实的反映出来,而且也方便 AD 中的另一个功能——组群原则(Group Policy)的套用与集中管理。
若组织的网络环境相当庞大与复杂时,网域可能会有许多个,在 AD 之中,网域可以有一个或多个,而一个大型公司可能会利用分公司或是办公室的方式来组织网域对象,如此一来,在 AD 中会有数个网域,若需要在网域中共享数据或是做委派管理与组态设置时,便需要创建彼此间的组织关系,微软将 AD 中多网域相互的关系层次结构化,称为网域树(domain tree),网域树结构以 DNS 识别方式来区分,例如一间公司可能有业务部门,工程部门与管理部门,那么若要以部门来创建网域时,则可以如此创建(如右图):
如此便可在 AD 中反映出组织的结构,同样的,网域内还是可以再创建不同的网域,例如在工程部门中若需要分为软件部门与硬件部门时,还可以在工程部门的网域中创建:
而在工程部门网域中的组群原则设置,会自动的继承至软件部门和硬件部门的设置,而在软件部门的组态,则不会影响到硬件部门(可经过设置来套用)。
在多个网域的环境下,可能在不同的网域之间会需要交换与共享数据,像是组态设置、用户帐户与组群原则设置等,在这个时候需要有一个角色来做为不同网域间的信息交换角色,同时又必须要符合 AD 树状结构的规范,因此微软在多网域之间创建了一个中介用的角色,称为森林(Forest),一个组织中最多只能有一个 Forest,在 Forest 下则是各自的网域树系,而在 Forest 下的网域或网域树系间,可以共享信息。
活动目录背后,则是一个植基于 Windows Server 网络基础结构(infrastructure)的网络服务与通信方式所组成,这些网络服务和通信方式让活动目录具有高度的扩充性与向后兼容性等,网络管理人员必须要妥适的设置与监控这些网络服务与通信方式,以让活动目录能够正常且顺利的运作。
在以往的Windows NT网域环境中,网域的实体结构分为三种角色,即主要网域控制站(Primary Domain Controller, PDC)、备份网域控制站(Backup Domain Controller, BDC)以及成员服务器(Member Server)三种,网域的数据都存储在PDC和BDC中,并且在PDC和BDC间交换数据,但PDC和BDC的部署方式并不方便(一个网域只能有一个 PDC),在不同的地理环境中也不能设置PDC,而且所有网域的查询都会被导向 PDC,如此很容易造成网域登录和访问的塞车情况,这个问题在活动目录中已获得改善,即不再有 BDC(只有 DC 和 Member Server 两种角色),在网域中的任何一台网域控制站都可以负责处理来自用户端的网域查询,如此在分散部署上会具有相当的弹性。
在 AD 的实体结构中,最重要的角色非Global Catalog[1](全局目录,简称 GC)莫属,它存储了最完整的活动目录的结构数据,也是以目录为主(directory-enabled)的应用程序对 AD 的查询的主要目标,而通常在不同的地理位置(例如在中国大陆、台湾、美国和英国各有分公司,且各有网域)时,GC 扮演了重要的高速缓存结构角色,若台湾的员工出差到英国分公司,并试图登录网域时,Windows会先搜索最近的Global Catalog Server(由 DNS 设置提供),若找不到时,才会链接到其他地区的 GC,但若分公司的网络很慢时,这种跨地理位置的 AD 数据访问会直接影响到登录的时间,因此谨慎的 GC 的布署对 AD 的推行是很重要的。
营运主机(Operation Masters,又称为Flexible Single Master Operation,即FSMO)[2] 是被设置为担任提供特定角色信息的网域控制站,在每一个活动目录网域中,至少会存在三种营运主机的角色。
另外还有两种角色,是具有额外功能,但不强制部署在网域的:
活动目录站台(site),是指一个实体的网络位置,在一个站台中可能会有很多个网域控制站,AD 网域数据的复制,就是以站台为主,实际处理复制作业的工具称为 KCC(Knowledge Consistency Checker,知识一致性检查器),它会在特定时间对站台设置中的网域进行数据的同步化,复制活动则分为对内复制(intra-site replication)与对外复制(或站间复制,inter-site replication),对内复制是同一个网域间的控制站交换信息,对外复制则是在网络管理人员的设置下,通过指定的通信方法(IP 或 SMTP)以及拓朴进行复制。
默认情况下,站台的通信方式是使用 IP(即 RPC over IP)来通信,这个方式是最快的,且可以利用 TCP/IP 来运行远程调用以及处理,但若是非网域数据(架构、设置和通用类目录更新,亦即没有 AD 对象)的复制,则可以利用 SMTP 通信方法,但这个方法需要另外创建企业级的凭证服务才可以使用,目的是确保 SMTP 的数据可以被确认与保全。
在中大型的网络环境中,适当的分散网络流量以及设计网络拓朴是很重要的事,KCC 会利用设置好的网络通信成本(cost)来选择要用哪一条网络来进行复制,例如可能公司和办公室间有一条 T1 和 ISDN 64Kbps 的线路,而 T1 的成本设为 500(因为会有很大流量),而 ISDN 只有 100 时,KCC 会选择 ISDN 做复制,这样代表网络管理员可以自己决定要使用哪一条网络来进行复制,KCC 的复制算法会判断哪一个网络最适合复制 AD 的数据。除了成本以外,AD 也支持了桥接站台(site bridge)的结构,站台桥接能力让复制的成本得以分散,并可让同一台 GC 的复制流量分散,也适合在不同地理区域之间的 AD 信息复制与散发工作。
活动目录极度依赖DNS,因为 DNS 可以让 AD 表现出层次结构化的树状结构,同时也可以和开放的目录标准接轨,因此在建置网域时,DNS 服务(或另有架设 DNS Server)一定要存在于网络或该网域控制站中,AD 以 SRV 记录(SRV Record)来识别网域控制站,以提供网域处理的服务,而和Windows NT网域不同的是,Windows NT使用的是 NetBIOS 通信协议,但 AD 使用的则是TCP/IP,但 AD 仍然提供可以在 Windows NT 帐户格式(DOMAIN\User)和 AD 帐户格式(user@domain)的格式互转。
活动目录使用强化过的Microsoft Jet Database Engine(基于 Microsoft Jet Blue 计划),即Extensible Storage Engine(ESE98),可存储 16TB 的数据量,理论上可容纳十亿个网域对象,文件名称为 NTDS.dit,它存储在 %system_root%\NTDS 目录中(这个目录所在的磁盘也必须要是NTFS格式),内含了对象数据表以及链接数据表,在Windows Server 2003中加入了一个描述安全信息的新数据表。
而在 AD 更新数据时的记录,都被存储在 edb*.log,默认的名称为 edb.log,其他的文件使用 "edb" + 数字 + ".log" 来记录,另搭配了 edb.chk 作为检查点记录档,以及 Res1.log 和 Res2.log 作为系统的保留文件。
AD 实体存储的组件有[3]:
网域控制站会定时(默认为 12 小时)对 NTDS.dit 做重组(defragment),并清除数据档中的垃圾,在重组前会检查磁盘空间是否有大于数据库文件 1.5 倍的空间可用。若数据库所在的目录没有足够的可用空间,就要把数据库移往其他地方去。然而,由于Windows 2000与Windows Server 2003在磁盘区阴影复制服务(VSS)的机制有所不同,使这移动过程有可能失败。对于Windows 2000,log files与数据库可以分别存放在不同的磁盘上,但Windows Server 2003则必须放在同一个磁盘上。要移动数据库,必须重新激活服务器,并进入活动目录 Restore Mode里,利用ntdsutil工具进行移动。
在Windows Server 2008中,加入了一个新的网域控制站角色,称为只读型网域控制站(Read-Only Domain Controller,简称 RODC),RODC 可以作为组织的分部、分公司、办公室或是临时单位等,将网域控制站放在该处时会有安全性疑虑或风险时使用,顾名思义,RODC 不会写入任何数据到活动目录,与其他网域的复写也是有限度的,并且只会以系统管理员定义的 Password Replication Policy(密码复制原则)控制下的帐户才会高速缓存密码等功能。
若要在 AD 中加入只读网域控制站,则网域的功能层级必须要在 Windows Server 2003 以上。
活动目录的安全性可分为对象的安全性识别、层次结构的安全性以及森林之间的信任关系等。
AD 以Kerberos V5作为其安全验证的主要架构,并且每个 AD 对象都拥有一个独一无二的安全性识别码(Security Identifier,SID),其格式示例为 S-1-5-21-7623811015-3361044348-030300820-1013,每组代码均有其意义,这组识别码存储在 AD 的 objectSid 属性中。
在 AD 中,不同层次结构的 OU 可以定义不同的安全性信息,以及不同的用户权限,而不同的网域层次结构之间也可以定义不同的用户权限,管理员也可以利用安全性管理范本(Secutiy Template)来定义不同的安全性信息,或者使用组群原则(Group Policy)来定义,在大型网络之中,使用组群原则会比安全性范本要来的方便,将两者合并使用更可达到事半功倍之效(例如和 Microsoft Base Security Analyzer 的集成)。
在父层次结构定义的安全性,可以被继承至子层次结构。
在大型的网络环境中,可能组织间有伙伴关系,或者是项目间的合作,而需要在两个 Forest 间共享或授权访问时,可以利用信任关系(trust relationship)来创建 Forest 间的信任,以授权在彼此树系间的访问权,在Windows Server 2003以后版本的 AD 环境可支持四种信任关系:
信任关系的设置可以分为单向(one-way)和双向(two-way)两种,单向信任表示被信任的一方可以访问信任的一方的资源,而双向信任则是可以访问各自的资源。
信任关系的传递可分为可递移(transitive)与不可递移(non-transitive)两种,可递移表示在创建信任关系的网域在同一树系内的其他网域也可以使用在创建信任关系的网域中的信任信息,不可递移则表示只有创建信任关系的网域(不论是否有层次结构)才可以使用信任信息。
活动目录的命名默认是以LDAP(轻量级目录访问协议)版本的X.500协议为主(由 ADSI LDAP Directory Service Provider),对于 AD 这种如此规模的目录服务而言,LDAP 这种具有层次结构识别能力的协议,非常适合作为目录服务的访问协议,但 AD 亦可以支持 NT 时代的 UNC 格式(由 ADSI Windows NT Directory Service Provider 提供),在 UNC 与 LDAP 名称间的转换则由 ADSI 的IADsNameTranslate接口来提供。
每个 AD 对象均有一个以 LDAP 组成的名称,称为识别名(Distinguished name,简称DN),这个识别名是作为使用 LDAP 查询 AD 目录中识别对象的名称,其格式类似下列:
LDAP://cn=John Smith, ou=Software Engineering, dc=engineering, dc=acme, dc=com, dc=tw LDAP://cn=COMP1024, ou=Computers, dc=acme, dc=com, dc=tw
在 LDAP 字符串中经常使用的代字有:
当用户端在下达 LDAP 查询字符串时,若无法符合 AD 对象的 LDAP DN,则会找不到数据,LDAP 代字亦可使用于搜索(IADsDSObject与ADsDSObject(),参见活动目录 Service Interface条目)。
每个 AD 中的对象都会有一个一般的名称,又称为别名(Canonical Name),在 Schema 中的属性为 cn(Common Name),但组织单元(OU)基本上是例外,它自己有一个代字 ou 作为识别符。
为了要在容器与对象间作识别,在 Schema 中设置了一个 Relative Distinguished name(简称 RDN),存储在 rDnAttId 属性中,可在搜索 AD 时可以快速的对应容器内的对象。
每一个对象都有一个唯一的 GUID 对象识别码,存储在 objectGUID 属性中,其编码方式与GUID相同。
sAMAccountName属性中。user@domain的方式体现,这个值存储在userPrincipalName属性。活动目录于是一个开放式的目录服务,而且为了要能够容纳不同版本的 Windows 操作系统以及其网域,因此特别在 AD 中使用了一种版本控制的机制,称为功能层次(functional level),功能层次定义了目前在网域环境中可以使用的最大版本层次,同时这个修改是单向无法撤消的修改。若网域中有不同版本操作系统的网域控制站,则为了最大的兼容性,功能层次的设置应要以最低版本为主,例如一个网域中有 Windows Server 2003 和 Windows 2000 时,则网域的功能层次应该设为 Windows 2000 混合模式(Mixed Mode),若设为 Windows Server 2003 本地模式(Native Mode)时,Windows 2000 的网域控制站会失效。但由于新版本的 AD 设置通常都会比前版的要强(尤其是安全性的改进),因此若网域中没有前版本的操作系统,则应将功能层次设置到最新版本,以开放 AD 的所有功能。
另外,若要在网域中安装新版本的操作系统(例如在 Windows Server 2003 网域中要安装 Windows Server 2008)作为网域控制站时,必须要先将 活动目录 中的 Schema 信息做扩充以兼容于较新版本的操作系统,因此微软在安装光盘中都会提供一个 活动目录 准备工具 (adprep.exe),它可以让系统管理员以简单的方式升级 活动目录 中的数据结构,包含树系以及网域的数据结构(使用参数设置),以兼容于新版本操作系统。
adprep /forestprep:升级树系的数据结构。adprep /domainprep:升级网域的数据结构。adprep /rodcprep:准备网域以提供 RODC(只读网域控制站)的功能(Windows Server 2008 以后版本才支持)。对于 Windows NT 的 BDC,则不是通过功能层次的设置,而是用 Operation Master 的 PDC Emulator 来保持兼容性。
由于微软在设计活动目录是使用开放型的目录服务为方针,且目录服务的最基本特性之一就是要能“广纳百川”,除了基本的网络服务数据外,还需要能够和其他异质型服务连接与集成,因此微软在 AD 之中实现了一个对象的存储单位,称为“对象结构”(schema),对象结构可以视为 AD 对象的元数据(metadata)。每一个对象(不论是单元或是容器对象)都有各自的 schema,用以存储识别该对象的不同数据,schema 是由 class 和 attribute 所组成,attribute 是最小的存储单元,class 则是包含 attribute 的集合体。
存储在 attribute 中的数据有很多种格式,微软将这些格式定义成 27 种 Schema 数据型态,像是指示帐户过期日的Account-Expires属性,其值是 interval 数据型态(代表时间周期,为一个64位整数值),又如指示帐户 SAM 名称的sAMAccountName 属性,其值是 String(Unicode)值(支持 Unicode 的字符串值),又如存储用户的照片的Picture属性,其值是 Object(Repl-Link)(代表是字节数据,且可以复制到其他网域控制站)。
微软也开放了可延伸 schema 的方法[4],开发人员可以利用这一套方法来延伸活动目录 Schema中的数据,但一旦写入 AD 后,即不可删除(因为对象识别码不可更动),但是可以停用,延伸 AD Schema 最好的例子就是Microsoft Exchange Server。
活动目录本身除基本的网络目录服务外,微软也应用这个基础架构设计了不同的服务,并且在Windows Server 2003不同的版次中加入,以提升活动目录的应用范围。
由于 AD 本身具有可分布式的身份验证与授权能力,且在 2003 年时 Web 正吹起了单一签入(single-sign on)的架构研究风,微软也开始利用 AD 来设计一个可支持多个网站(或应用程序)的单一签入功能,其实现品即为活动目录 Federation Services(AD 联邦服务,简称 ADFS),它显露了几个主要成员[5]:
此服务在Windows Server 2003 R2版本中首次出现,并在Windows Server 2008中升级为活动目录 Federation Service角色。
轻量级服务(Lightweight Directory Service)[6] 在Windows Server 2003中被称为活动目录 Application Mode(ADAM),它是一个不需要与 AD 基础架构集成就可以独立运作的目录服务,适合用来表现企业的层次结构化概念与对象的管理,而且开发人员只要把使用 ADSI 的经验搬过来即可使用,不必另外学习 ADAM 的操作方法,它也可以做为 ADFS 的外部验证提供者。轻量级目录可以在同一台计算机中安装多个运行个体,因此也很适合用 ADAM 来实现 Directory-Enabled 的应用程序,尤其是与组织结构相关的(例如人事或人力资源系统),ADAM 本身也可以延伸schema,开发人员可以将 ADAM 视为另一种类型的数据库,也可以由 AD 中复制数据到 ADAM,不过 ADAM 不会对 AD 进行站台复制,开发人员需要自行撰写程序来复制数据。
轻量级服务在 Windows Server 2008 中改名为活动目录 Lightweight Directory Service(简称 AD LDS),并提升为 AD 的应用角色之一。
凭证服务(Certificate Service)[7] 是在Windows Server 2008中首次纳入活动目录体系的服务,它原本是在Windows 2000与Windows Server 2003的凭证服务器(Certificate Server),用来创建企业中的公开金钥基础建设,在Windows Server 2008中,凭证和 AD 对象有了更强更紧密的集成,所以有了活动目录 Certificate Service(AD CS)的角色,这个角色还可以和权限管理的Right Management Service(RMS)集成在一起,提供对文档或应用程序层次的权利管理。
权利管理服务(Right Management Service)[8] 也是在Windows Server 2008中首次纳入活动目录体系的服务,最早的时候,它是在Microsoft Office 2003 开始提出的信息权利管理(Information Right Management)功能,可利用它来控制 Office 文档散布时的权限,例如打印以及存储文件等,接着微软发表了Right Management Server以及RMS SDK,供Windows Server 2003平台使用,而在Windows Server 2008中即将它集成到活动目录中,变成 AD 服务的一部分。
活动目录互通的多样性层次得以通过符合标准的 LDAP 用户端在大多数的类Unix操作系统记录,但这些系统通常缺乏与 Windows 组件像是组群原则与单向信任关系的许多属性的自动直译,目前也有许多第三方软件厂商提供了将 Unix 平台(包含 UNIX、Linux、Mac OS X 与数个 Java 与 Unix-based 应用程序)集成活动目录方法,这些供应商的一部分,包含 Thursby Software System(ADmitMac), Quest Software(Vintela Authentication Services), Centrify(DirectControl),与 Likewise Software(Likewise Open and Likewise Enterprise)。Microsoft 也在这个市场中拥有为 UNIX 产品所设计的免费Microsoft Windows服务(即 Windows Service for Unix)。
这些额外的对象结构在 Windows Server 2003 R2 版本中被释出,包含完全对应到 RFC 2307 的一般用途的属性。这些 RFC 2307、nss_ldap 与 pam_ldap 的参考实现均提供自 PADL.com,包含直接使用这属性以及填充信息的支持。默认组群成员(group membership)的活动目录 Schema与被提议的 RFC 2307bis 延伸功能一起编译。RFC 2307bis 使用 LDAP 成员属性存储 Unix 的组群成员数据,与基础 RFC 2307,以存储组群成员为以逗号分隔的用户识别码菜单有所不同。Windows Server 2003 R2 包含了一个MMC snap-in 以创建与编辑这些属性。
一个替代选项是使用其他的目录服务,像是 Fedora Directory Server(之前的 Netscape Directory Server)或是Sun的 Java System Directory Server,它可以运行与活动目录双向同步化,进而在需要使用 FDS 验证的 Unix 与 Linux 平台与需要使用 Windows 验证的 Windows 用户端之间,提供一个与活动目录之间转向(deflected)的集成。另一个选项是使用OpenLDAP以及它的透通覆盖(translucent overlay)功能得以延伸项目于使用额外属性存储在本地数据库的任何远程 LDAP 服务器上。在本地数据库中指示的用户端将会看到包含在远程和地的属性,当远程数据库仍保持完整不变的情况下。
Samba 4,截至2008年8月8日止仍在测试,并计划包含一个活动目录兼容服务器。
|
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History