如何理解 Mac OS X Open Directory

Mac 环境中目录服务的介绍。

目录服务是任何企业环境的关键组件。这些服务为用户和计算机提供中央帐户管理数据库,以及在工作站和服务器之间共享该信息的框架。Mac OS X 的本机目录服务称为 Open Directory。

每台 Mac OS X 电脑都包含一个本地 Open Directory 数据库(称为域),用于存储有关本地用户帐户的信息。此本地域允许每个用户拥有计算体验和主目录,并且本地域与文件系统配合使用来管理文件和文件夹的权限。Mac OS X Server 依靠共享的 Open Directory 域来提供网络用户帐户,这些帐户可用于登录绑定到共享域的电脑。共享域还可以允许用户访问绑定到该域的其他服务器上的资源。共享域还允许系统管理员定义自定义用户环境。

Open Directory 是一个多部分架构,除了提供访问非本地目录服务平台(例如 Microsoft Corp. 的 Active Directory 和 Unix 网络信息服务服务器)的机制外,它还执行任何目录服务的基本功能。它还具有管理 Mac OS X 对自发现网络协议(包括 Apple Computer Inc. 的 Bonjour、Microsoft Corp. 的服务器消息块/通用 Internet 文件系统和开放标准服务定位协议)的访问的组件。然而,在讨论 Open Directory 时,该短语通常指其作为 Mac OS X 的本地目录服务的功能。

NetInfo — 本地开放目录域

每台 Mac OS X 计算机(包括 Mac OS X Server)都有一个本地 Open Directory 域。此域存储有关本地用户的所有信息以及有关计算机本身的信息。Mac OS X 的本地域是 NetInfo 域。NetInfo 是一种专有目录服务,最初由 NeXT Computer Inc. 开发,最初用作 Mac OS X 的本机目录服务。随着 Mac OS X Server 的发展,Apple 用基于轻量级目录访问协议 (LDAP) 的服务取代了 NetInfo,该服务通常简称为 Open Directory。

在 Mac OS X 计算机上,本地 NetInfo 域几乎不需要进行任何管理。但是,重要的是要了解本地域始终是 Mac OS X 计算机查找用户信息的第一个来源。同样重要的是要知道本地域在 Mac OS X Server 的工作组管理器中可见;这是用于管理用户、组和计算机帐户的工具。存储在服务器本地域中的用户和组帐户可以访问服务器上的资源,包括共享点、打印队列和 Internet 服务。但是,本地帐户不是共享域的一部分,因此不能用于登录 Mac OS X 计算机。

共享域的搜索路径

Mac OS X 计算机可以绑定到多个目录域(Open Directory 和其他平台的域,如 Active Directory)。这要求建立一个搜索路径,定义搜索可用域以获取帐户信息的顺序。这与 Windows 环境不同,在 Windows 环境中,可用域列表是登录对话框的一部分。如上所述,本地 NetInfo 域将始终位于 Mac OS X 上搜索路径中的第一个。但是,您可以按照您选择的任何顺序放置任何其他域。

搜索路径在许多方面都很有用。它们允许您为不同的用户组和/或计算机设置单独的容器。它们还允许您构建对多个目录服务平台的支持,这些平台可以混合和匹配每个系统的优势。例如,您可以依赖存储在 Active Directory 中的用户帐户,但使用存储在 Open Directory 中的帐户管理计算机,这使您能够利用 Apple 的客户端管理架构。搜索路径是强大的工具,但重要的是要认识到,如果您在搜索路径中的两个域中拥有同名的用户,则实际上只会找到搜索路径的第一个域中的帐户。

目录绑定

Mac OS X 计算机可以通过两种方式绑定到 Open Directory 域。第一种也是最简单的方法是动态主机配置协议 (DHCP)。Mac OS X Server 可以将域信息与其他信息一起包含在计算机的 DHCP 请求中。默认情况下,Mac OS X 将接受并使用 DHCP 收到的 Open Directory 配置。这很有用,因为它节省了手动配置网络中每台计算机的时间和精力。

对于静态绑定,您可以使用 Directory Access 实用程序配置对目录域的访问,该实用程序位于 Mac OS X 的“应用程序”文件夹内的“实用程序”文件夹中。Directory Access 包括可以为 Open Directory 的每个功能配置的插件模块。例如,LDAP v3 插件管理 Open Directory 域配置和绑定。

搜索路径是使用目录访问中的“身份验证”选项卡设置的。您可以选择使用自动搜索,包括 DHCP 提供的域和本地域;仅限本地搜索,其中仅使用本地域;自定义搜索,允许您手动配置和设置可用域的搜索路径。您还可以使用“联系人”选项卡为 Mac OS X 的地址簿应用程序设置域的 LDAP 搜索路径。

管理共享域

Mac OS X Server 支持四种 Open Directory 角色:独立、Open Directory 主服务器、Open Directory 副本和连接到目录系统。独立服务器仅依赖于其本地 NetInfo 域,通常不用作文件或打印服务器。Open Directory 主服务器是托管共享域的服务器。

Open Directory 副本服务器是托管域的只读副本的服务器。副本服务器允许负载平衡,并支持远程位置,因为网络链接速度较慢,无法直接访问 Open Directory 主服务器。副本服务器还允许在主服务器发生故障时进行故障转移。

“连接到目录系统”是指绑定到共享域但不提供目录服务的服务器。用户可以使用存储在共享域中的帐户访问连接到目录系统的服务器。通常,文件、打印和电子邮件服务器将使用此角色。然而,在较小的环境中,服务器除了作为 Open Directory 主服务器或副本之外,还可能提供这些服务。

Open Directory 域依赖域名系统 (DNS) 来运行。因此,确保拥有功能齐全的 DNS 基础架构对于在网络中设置 Open Directory 至关重要。Open Directory 故障通常可以追溯到 DNS 问题。简单地使用 Mac OS X Server 的“服务器助手”工具(在基本安装后自动运行)的缺陷之一是,助手会为您提供设置新 Open Directory 域的选项。如果您设置的服务器将用作 Open Directory 主服务器和 DNS 服务器,则这可能会导致问题。

尽管 Open Directory 整体和各个域的结构都很复杂,但 Apple 已将设置过程变得非常简单,只要您事先正确设置 DNS 和其他网络服务即可。您只需从 Mac OS X Server 的“服务器管理”实用程序的弹出菜单中选择该角色,即可轻松将现有服务器更改为 Open Directory 主服务器。然后输入有关域的基本信息,包括对域具有管理权限的帐户、域的 LDAP 搜索库以及域将使用的 Kerberos 领域。

您也可以选择在此时(或稍后)设置其他功能,包括默认域密码策略、计算机是否必须通过安全连接与域通信以及访问域的计算机是否必须与域绑定。所有这些选项都可以大大提高安全性。

设置副本服务器并将其他服务器绑定到域同样简单。当然,对于某些管理任务,还有更高级的工具,其中许多是命令行工具,超出了本文的讨论范围。但是,对于大多数环境,Server Admin 中的图形工具就是您启动和运行 Open Directory 基础架构所需的全部工具。

Kerberos 和 Open Directory 密码服务器

Open Directory 提供了多种保护密码的机制。Mac OS X Server 使用的原始机制是将密码存储为用户帐户对象的属性。此功能称为“基本密码”,并且仍然支持向后兼容旧版本的 Mac OS X 和 Mac OS X Server,但必须将其作为每个用户帐户的特定选项进行选择。

基本密码以加密形式存储和传输。但是,由于基本密码存储在 Open Directory 域中,因此它们很容易受到使用 Workgroup Manager 或命令行 Open Directory 工具的离线安全攻击。

Open Directory 还提供默认的 Open Directory 密码类型。此技术将用户密码存储在域本身之外的两个地方。第一个是 Kerberos 域。第二个是 Open Directory 密码服务器数据库中。

这两种密码类型都提供了增强的安全性,因为密码仅被设置和验证,而实际上从未被 Open Directory 读取。使用这些密码类型时,只有用于标识用户密码在 Kerberos 域或 Open Directory 密码服务器中的位置的散列信息才会物理存储在用户记录中。

默认情况下,当服务器设置为 Open Directory 主服务器时,它也会设置为 Kerberos 密钥分发中心 (KDC)。这使得 Mac OS X Server 成为最容易设置为 KDC 的平台之一,因为该过程几乎完全自动化。还可以使用备用 KDC — 包括 Active Directory 域控制器,这在多平台环境中很有用。

除了确保密码存储安全之外,Kerberos 还为用户连接提供了重要的密码安全性,因为它依靠票据来授权访问网络内的任何“Kerberized”服务。因此,用户的密码仅在首次登录时传输。

Kerberos 还提供了无缝、单点登录环境,用户在连接到服务器并浏览 Kerberized 服务时无需反复验证身份。在 Mac OS X Server 下,这些 Kerberized 服务包括 Mac OS X 登录窗口、电子邮件、用于 Mac 和 Windows 文件/打印机共享的 Apple Filing Protocol 和 Server Message Block 协议、虚拟专用网络、文件传输协议服务、Apache 和安全 Shell 访问。

由于 Mac OS X Server 使用标准 Kerberos 安装,因此您可以使用其他平台(包括 Unix)的服务器和客户端在网络中提供其他 Kerberized 服务。Telnet 和 Rlogon 是现在可以与 Kerberos 一起使用的两个 Unix 服务示例。

当 Kerberos 不可行时,Open Directory 密码服务器是个不错的选择。这对于不支持 Kerberos 的应用程序和服务以及 Kerberos 出现故障的情况非常有用。Open Directory 密码服务器支持多种标准加密类型,可与各种平台和服务进行交互。尽管它不提供 Kerberos 的安全和单点登录优势,但 Open Directory 密码服务器提供的可靠安全性远胜于基本密码。

默认情况下,当用户的密码类型设置为 Open Directory 时,Open Directory 将首先尝试使用 Kerberos 对用户进行身份验证,并且仅在 Kerberos 不可用的情况下使用密码服务器。

托管客户端环境

Open Directory 提供丰富的托管客户端环境,可用于保护和定义所有用户和计算机的用户环境。几乎 Mac OS X 用户体验的每个方面都可以为新用户预设,也可以永久定义,使其无法修改。

当使用 Mac OS X Server 10.4 (Tiger) 和运行相同 Mac OS X 版本的计算机时,还可以创建首选项清单。这些是 XML 文件,可用于定义几乎任何 Mac OS X 应用程序的首选项设置。Mac OS X 下的托管首选项可针对单个用户、组或计算机列表进行设置。

与其他目录服务平台集成

Active Directory 集成通常是最简单的,并且有几种适用于 Mac OS X 计算机和 Mac OS X Server 的简单集成方法。除了 Active Directory 之外,Open Directory 还可以与几乎任何基于 LDAP 或支持 LDAP 查询的平台集成。事实上,Open Directory 和 Active Directory 之间的真正集成通常是使用 LDAP 实现的。

集成目录服务平台通常从修改相关平台的架构开始,以便能够支持构成 Open Directory 架构的其他对象和属性。通常,Open Directory 架构也会被修改以适应其他平台的需求。通过支持其他信息类型,不仅可以在平台之间执行查询,还可以存储特定功能(例如管理偏好)的数据。虽然这是一项艰巨的任务,但在需要针对不同类型系统提供广泛解决方案的大型环境中,回报是值得的。

托管 Windows 域

对于那些需要支持 Windows 工作站身份验证的环境,Open Directory 可以托管 Windows NT 样式的域。在这些情况下,Open Directory 主服务器充当主域控制器,副本充当备份域控制器。此设置并不总是完美的,并且托管域不是 Active Directory 域。但是,它确实提供了身份验证,并允许托管主目录和 Windows 配置文件。并且它在许多环境中运行良好。