段落1:目录旨在帮助人们找到自己的方式。我们都进入过一个陌生的建筑物并使用建筑物的目录。没有目录,我们将不得不在建筑物中徘徊以寻找我们的目的地。我们依赖那个目录而不想太多,除非信息把我们引到错误的地方。目录通过组织信息来帮助人们。
段落2:随着计算机的出现,需要组织的信息无穷无尽,以便人们可以轻松找到它们。计算机一直依赖于目录。甚至像 DOS 这样的早期操作系统也有一个文件目录,这样用户就可以跟踪数据文件。如今,目录似乎在网上无处不在,目录列出了高中毕业班的联系信息,目录列出了所有放映的电影,等等。所有目录都有一个相同的目标,即帮助我们消除漫无目的的信息搜索。
段落3:目录允许管理数据 但是,目录不应该只是一种查找信息的有效方式;它还应该提供一种有效的方式来管理这些信息。如果我们寻找的信息有很多来源,我们可能会得到相互矛盾或过时的信息,而筛选与漫无目的的浏览一样令人沮丧。该目录应该是一个集中管理的存储库。对于特定类型的信息,拥有一个单一的权威来源非常重要。这样,我们就不必在几个地方搜索我们想要的信息,然后煞费苦心地决定哪些信息是正确的。
段落4:许多应用程序和服务可以利用集中在目录中的数据 目录有很多用途,超出了人们在手动查找信息时的直接交互。应用软件可以利用目录中的信息来提供更明智和更好的体验。在我们不知情的情况下工作的后台服务也可以利用集中信息。这些服务为我们在数字世界中互动、向他人识别我们、建立我们的权威、允许我们相互交流甚至保护我们提供了基础。这些基础服务(有时称为基础设施)中的每一项都必须拥有自己的身份信息源或依赖于一组通用信息。显然,只管理一组信息以及明确定义的访问此数据的方法是有好处的。同一份数据有多种用途,如下例所示。表格似乎没有停止…而且许多信息被要求填写在多个表格上。自然,这位主管想知道为什么所有这些人都不能分享她的信息。理想的情况是,她将信息输入目录,然后其他需要这些信息的人可以查询目录,而不浪费她的宝贵时间。执行这些商业任务的人可以手动查询目录中的适当信息,或者更好的是可以使用软件直接与目录互动,在主管输入个人资料后自动完成整个过程。
LDAP标准已被广泛接受为理想的解决方案。
有多少种信息需要组织,就有多少种目录的用途。存储在计算机上的信息量正以指数级的速度增长,因此找到一个好的目录解决方案变得比以往任何时候都更重要。对计算机行业来说,幸运的是,在LDAP中已经出现了一个通用的目录标准。本章介绍了LDAP,强调了它的功能,并解释了为什么它作为最佳目录解决方案获得了广泛的支持。
到此为止,我已经通过日常经验中常见的例子讨论了目录。现在是时候看看什么是目录了,以及目录结构有什么独特之处,使它变得有用。这次检查的重点是两个属性:
我的公司不会购买目录 也许它应该购买。从长远来看,潜在的节省比你想象的要多得多。例如,想想所有的业务流程都是以正确和最新的联系信息为关键的。当我的联系信息最近发生变化时,我通知了所有与我有业务往来的公司。但我还是遇到了困难,因为许多企业没有使用一个单一的、统一的信息库来跟踪这些信息。在某些情况下,我不再与他们做生意,因为我不喜欢花时间去解决他们糟糕的业务流程。在另一条轨道上,你的公司可能会很容易地最终使用目录,因为它是实施其他一些基本产品的必要组成部分。目录正在成为一个常见的先决条件。例如,几乎所有的网络操作系统都需要一个目录,以获得最大的产品功能。很多服务器软件都需要一个目录来存储其配置信息。因此,即使你的公司不会购买一个目录来积极解决业务需求,你也可能最终会有一个目录。
结构–目录是如何存储信息的?
内容和实用性–什么可以放在目录中,以及为什么有人会选择目录而不是其他东西?
这种对目录的一般研究为下面介绍LDAP奠定了基础。
结构
条目是目录的单位 一个目录是由条目组成的。条目是目录的基本单位。这些条目通常包含一种类似的信息。例如,我的目录可以有关于人的条目(通常称为人的条目),包括一个人的名字和电话号码,也许还有其他相关的个人信息。每个人都会有一个条目,每个条目都包括目录中关于该人的所有个人信息。术语 "条目 "与术语 "记录 "或 "目录对象 "是同义的;这些术语在有关文献中可以互换使用。
该条目由一组属性组成
与一个条目相关的信息被称为该条目的属性或特性。同样,文献并不统一;"属性 "和 "财产 "可以互换使用。一个条目本质上是一个属性的集合。对于一个人的条目,这个人的名字是其中一个属性,电话号码也是。根据目录的定义方式,条目可以有一组强制性的属性和一组可选的属性。例如,我的目录可能会有一些条目,这些条目具有强制性的俗名(全名)和姓氏(姓)属性,以及可选的电话号码、传真号码和电子邮件地址属性。如果没有每一个强制性属性的存在,这个条目是不完整的,因此也是不允许的。图1-1显示了一个关于我自己的示例条目
图1-1. 一个有两个属性的个人条目
该属性由一个类型和值对组成
每个属性都是由一对元素组成的。属性类型是被存储的信息种类的标签。属性值是被存储的实际数据。例如,cn=Brian Arkills是一个属性对,其中ecn(或通用名称)是属性类型,Brian Arkills是属性值。顺便说一下,有些属性可以有多个值,这是最大限度地提高数据结构灵活性的一个重要特征。拥有多个值的能力是LDAP相对于普通数据库解决方案所拥有的一个关键优势。图1-2显示了一个具有多值cn属性的条目
图1-2. 一个具有多值属性的个人条目
Objectclass属性定义了条目所遵循的规则
有一个特殊的属性,对所有条目都是强制性的,叫做object class attribute。这个属性决定了条目遵循什么规则。这些规则通过指定一组强制性的属性和另一组可选的属性来管理条目的内容。object class attribute是多值的,所以一个条目的强制和可选属性集是object class attribute的所有值的结合。这些规则还可能包括对该对象类的条目可以在哪里创建的限制。在最基本的层面上,对象类定义了哪些属性可以在条目中使用。目录的模式决定了目录中哪些对象类是可用的。模式本质上定义了目录数据必须遵循的一组规则
许多类型的条目都是可能的
一个目录可以有许多不同类型的条目。一个目录可以有具有姓名属性、电话属性和其他属性的个人条目。但它也可以有代表产品的条目,有名称、UPN序列号和制造商属性。你可以通过使用不同的对象类来划分这些不同类型的条目,或者你可以根据类的灵活性,将这些条目设置为共享同一个对象类。图1-3中的例子使用了不同的对象类。尽管在图1-3中显示,只要结构规则不禁止这种并列,不同类型的条目可以并列存在。
图1-3. 个人和产品条目在不同的目录容器中
对象类和Objectclass之间有什么区别?这两个术语是紧密相连的,而且非常相似。Objectclass是一个条目的属性;你只有在提到一个特定的条目时才使用这个术语。目录中的每个条目都有objectclass属性,它有一个或多个值,表示该条目所属的对象类。一个对象类是一个规则的定义,该对象类的条目将遵循这些规则。术语 "对象类 "被用来抽象地讨论一组遵循相同规则的条目。所有这些条目都有相同的objectclassattribute值。被引用的并不是条目本身,而是定义该类条目的一组规则
容器条目提供了一个组织和管理的结构
有一种特殊类型的条目被称为容器。容器通过建立父/子关系来帮助组织其他条目。一个常用的容器对象类是ou,组织单位。在我的目录中,我们可能想把所有的人的条目放在一个名为人的容器中,而把所有的产品条目放在一个名为产品的容器中。一般来说,这种选择可能会使我们更容易找到或管理条目;然而,在我们的例子中,你可以通过搜索目录中objectclassattribute等于 "part "的条目来轻松地找到所有产品条目。但是,将所有的产品和人的条目分离到不同的容器中,可以很容易地将条目的管理委托给不同的人。例如,我可以把人的OU的管理权交给人力资源部门,把产品的OU的管理权交给产品经理。
容器有规则,但你决定如何使用它们来组织
容器可以有其他容器作为子项,但子项只能有一个容器作为父项。所以,金字塔(或倒挂树)的组织结构是可能的,但网络或枢纽结构是不可能的。容器的使用程度由实施的细节决定。你可以选择有一个广泛的容器结构来提供关键的组织,一个任意的容器结构,或者根本就没有容器。
内容和实用性
目录的主要替代物是数据库,比较两者有助于说明目录的性质和它的用途。在这种比较之后,本节提供了一些例子来强调典型的目录内容。注意,这个比较只考虑了关系型数据库。对象数据库与目录相似,但该技术没有被广泛采用。
目录与数据库
Directory=read; database=read and write
目录通常包含静态或不经常变化的条目,因为它被设计为对搜索和查找提供非常快的响应。一个数据库通常包含可能经常变化的条目。数据库的设计是为了提供容易操作的数据,并维持高强度的处理,包括对该数据的读写。因此,如果你想跟踪你公司的销售情况,你会选择一个数据库,而不是一个目录,因为(人们希望)你的公司会不断写出新的销售报价。相比之下,你公司的销售联系人最适合用目录,因为这些信息不会经常改变。一般来说,如果你想存储的条目每天变化不超过一次,目录可能是最好的解决方案。
关系型数据库和目录在结构上有关键的区别
关系型数据库和目录在内部结构上也有区别,看一下这种区别,就能对目录是什么以及它的作用有另一种衡量。数据库中的条目有某些属性,被称为键。键为数据库技术提供了关键功能,允许你对条目进行排序。此外,你可以使用键来交叉引用一个表中的条目信息和另一个表中的条目信息。数据库中的条目彼此之间没有固有的结构关系,除了键(特殊属性)必须在该表的所有记录中是唯一的之外,它们并没有真正的名字。相比之下,一个目录是非常结构化的。每个目录条目都有一个名称,这个名称也定义了该条目在一个层次结构中的位置。这种关系将在短期内详细讨论。另一个结构上的区别是,目录条目的属性经常有多个值,而只有非规范化的关系数据库的每个属性有多个值。
结构上的差异突出了数据库和目录的特殊用途
这些关键的结构性差异意味着每种技术都有优势和劣势,使其倾向于特定用途。数据库擅长于存储可以以不同方式进行排序的对象。数据库通常实施锁定机制,以防止两方写入相同的信息,而目录则没有。交叉引用多个条目的复杂查询,在数据库中通常比在目录中更快。数据库可以很好地管理大型数据对象,而目录则不是为此目的而设计的。数据库的结构适合于表,而目录则不太适合存储表。数据库让你存储程序,以便有效地处理复杂的请求。
目录适用于几个通常需要的目的
目录实际上是专门的数据存储系统。目录更适用于需要层次结构的对象。目录可以跨服务器复制,以允许从多个地点访问。它们比名称服务更重要,因为它们允许搜索和检索,而名称服务只是执行检索。基于文本的信息特别适合于目录,因为它可以很容易地被搜索到;然而,任何类型的数据都可以存储在目录中。目录很好地管理用户属性和策略,因为大多数服务只需要搜索和检索这些属性。目录也能很好地管理机器和应用程序的信息,特别是当这些信息是以配置为中心或者是管理信息时。目录通常支持非常精细的访问控制,允许根据需要对信息进行限制。
我需要在数据库和目录之间做出选择吗?
不,它们只是有不同的优点和缺点。每一种都有一个有效的位置,而且你很可能会同时拥有数据库和目录。事实上,目录通常有一个专门配置的数据库在后面运行。把目录看作是数据库上面的一层,可能对你有帮助,只是你不能通过正常手段直接访问数据库。在某些情况下,你的公司可能想要同步存储在目录和数据库中的一些数据元素。一个例子,见附录C。
典型的目录使用
你可以使用目录来获取有关人或现实世界物体的信息
你可以用目录来组织或管理几乎任何种类的信息,这样人们就可以很容易地找到这些信息。目录最常用于个人信息,但它们同样可以用于有关任何现实世界物体的信息。例如,你可以有一个关于你的商业场所产品的目录。人们可以根据零件号或产品类型搜索目录,找到他们需要的产品信息和它在商店中的实际位置。这个目录可以包括产品的图片,并有一个很好的应用界面(也许是基于网络的),与其他功能相结合,比如一个在线订购系统,这样就可以订购产品。
重要的个人信息比比皆是,而目录最擅长存储这些信息
该目录擅长于存储个人信息,因为关于人的信息是相当恒定的。同样,目录被优化以响应对那些随时间变化而保持不变的信息的查询。与人有关的信息对于目录的客户来说具有很高的价值,无论他们是人还是应用程序。与人有关的信息也非常需要集中管理,以便它是一致的、最新的和安全的。想一想个人联系信息。这个名单很长:邮政地址、家庭地址、办公地址、多个电话号码、电子邮件地址、一个主页的URL等等。显然,除了联系信息,还有更多的个人信息。然而,个人联系信息说明了目录有助于解决的一个固有问题,即我必须首先与你联系,才能得到你的联系信息。一个目录可以让你存储你的个人联系信息,以便于其他人检索–当然,要受到访问控制,以保护这些联系信息不被那些不值得信任的人利用来发送垃圾邮件或骚扰你。
应用程序代表我们使用该目录
然而,目录并不只是对其他人了解我们有帮助。通常有一些计算机应用程序需要检查与我们相关的信息。这些应用程序在幕后为我们做工作。例如,电子邮件服务用你的电子邮件地址查询一个目录,以找出你的邮箱所在的服务器,从而将你的电子邮件传递给你,这是相当普遍的。此外,一些电子邮件服务会自动创建一个地址簿(存储在一个中央目录中),因此用户可以简单地选择一个名字,而不是记住一个电子邮件地址。许多其他应用程序和服务能够在目录中查找信息,有些甚至提供一个界面,以便人们能够修改目录信息。
认证凭证可以放在一个目录中
再比如,几乎每次你登录的时候,你都在向某种形式的目录进行认证。该目录验证你提供的凭证(密码或用你的密码加密的票据),这样网络上的其他人就能确定你是你所说的人。这种验证是至关重要的,因为它可以防止别人冒充你。许多网络操作系统(NOSs)使用LDAP作为其内部目录功能的基础。这种紧密的整合可以是一个令人难以置信的好处,但也可能有一些缺点。我将会更多地看一下NOS如何使用LDAP。
有了目录的支持,人们的工作效率会更高
如果没有我所探讨的例子情况背后的目录,人们的工作效率就会大大降低。管理电子邮件地址和对每个网络资源进行认证(而不是只认证一次)是人们不愿意被打扰的任务,而目录帮助人们管理这些信息。目录有许多这样的幕后用途,最终使我们所有人都受益。事实上,目录的主要好处是幕后类型的服务,由于目录的存在,计算机应用或计算机的运行更加顺利了。
机器和计算机管理信息属于一个目录
目录的另一个完美用途是管理机器。联网的机器不可避免地有需要管理的配置。这些配置在很大程度上是静态的,但集中保存这些信息可以使变化容易实现。联网的计算机对目录有更专门的用途。作为NOS服务成员的计算机通常需要对自己进行认证。这一信息需要集中维护。计算机也有许多特性,如软件、环境配置和访问权限。网络管理员喜欢任何能帮助他们管理这些信息的工具,这些信息一般不经常变化。微软的活动目录(Windows 2000服务器的扩展)为这种类型的使用提供了一个很好的具体实施例子。例如,活动目录允许目录管理员定义组策略目录条目,这是一组配置信息,并将这些策略条目应用于计算机条目。这个过程促进了计算机管理,并展示了LDAP的一种使用方式。
计算机的目录管理有助于人们
用户也体验到了通过目录进行机器管理的好处。前面的例子可能看起来只对计算机和计算机支持人员有利,但它们也对公司的其他员工和客户有利。用户不希望为了寻找网络资源而记住晦涩的命名规则。目录可以帮助解决这个问题,帮助用户通过目录找到网络资源。想象一下,如果你愿意的话,一个苦恼的用户急需打印一份文件,以便在你的商业场所的一个远程地点进行重要的演讲。她如何找到一台打印机呢?手边又没有支持人员。目录来了,因为它知道所有的打印机在哪里,用户可以很容易地向目录询问那个地方的打印机。该目录可能与用户的笔记本电脑对接,以配置所需的打印机设置。该目录可以通过提供一个统一的、用户友好的命名规则来进一步解决多个晦涩难懂的命名规则的问题,从而隐藏正在使用的真正的命名规则。