创建精简或最小 Oracle Solaris 配置的建议

作者:Glenn Brunette

2011 年 8 月

目录:

注意:以下信息仅适用于 Oracle Solaris 10 及更早版本的使用 SVR4 包管理模型的 Oracle Solaris。

背景

在最近十多年中,许多 Oracle Solaris 管理员部署了精简或最小 Oracle Solaris 配置。尽管这主要是在金融服务和政府/军事领域,但这一做法近年来已变得越来越普遍,拥有了更多客户。“只要软件未安装,就无法(轻松)重新启用或得到利用”,基于这一论点,人们使用这些精简或最小配置来提高安全性。此外,一些客户指出他们之所以使用精简或最小 Oracle Solaris 配置是因为希望降低与实例供应、修补、迁移和审计合规性相关的管理负担和成本。

精简或最小 Oracle Solaris 配置正是为了满足这些需求而创建并部署于客户的整个环境。大多数情况下,客户使用支持的、公开和有完备文档的接口来部署此类配置,这些接口以前由 Sun 提供,现在由 Oracle 在 Oracle Solaris 中提供。

本文提供构建精简或最小配置的准则。本文还概要介绍使用这类配置时必须了解的一些风险和注意事项。

注意:本文旨在说明创建精简或最小 Oracle Solaris 配置时应注意的事项。遵循本文中的准则并不 保证结果配置一定就是合格的受支持配置。使用这些过程中的任何一种之前,请咨询您的 Oracle 支持代表。

创建精简和最小配置的准则

初始安装

Oracle Solaris 的安装必须使用 Oracle 提供(并支持)的一种安装机制(如图形安装程序、JumpStart 等)来进行。该操作系统的初始安装必须基于 Oracle 提供(并支持)的软件安装集(即元集)之一。

因此,对于 Oracle Solaris 10,安装必须使用以下元集之一:

  • 精简网络 (SUNWCrnet)
  • 核心 (SUNWCreq)
  • 最终用户 (SUNWCuser)
  • 开发人员 (SUNWCprog)
  • 完整版 (SUNWCall)
  • 完整版 + OEM (SUNWCXall)

根据声明,精简网络元集的目的是为了帮助希望部署精简或最小 Oracle Solaris 配置的客户。在介绍精简网络元集的 Sun 架构回顾案例 (PSARC/2002/254) 中记录了以下声明:

精简网络元集旨在为最小化系统的部署和安全配置提供一个受支持的 基础。

此元集是作为客户在最小化领域的反馈的直接结果而引入 Oracle Solaris 10 中的。只要满足 Oracle Solaris 软件包添加(安装)Oracle Solaris 软件包删除中所定义的条件,就可以在选定元集的基础上添加或删除其他 Oracle Solaris 软件包。

Oracle Solaris 升级

Oracle Solaris 的升级必须使用 Oracle 提供(并支持)的一种升级机制(如 JumpStart、Live Upgrade 等)来进行。支持使用任何一种 Oracle 支持的升级机制来升级精简和最小 Oracle Solaris 配置。

Oracle Solaris 升级功能将分析系统上安装的当前软件包集、从(相应元集的)要升级的 Oracle Solaris 版本的 clustertoc(4) 文件得到的软件包列表,以及软件包历史记录文件。使用此信息,升级功能将根据需要安装及/或删除软件包,以确保结果系统配置保持一致且受支持的状态。

注意:可能需要安装 Live Upgrade 软件,因为有些 Solaris 操作系统元集中可能没有该软件。

Oracle Solaris 软件包添加(安装)

对于在前面步骤中没有安装,但是客户希望添加到系统的任何其他 Oracle Solaris 软件包,必须使用 Oracle 提供(并支持)的一种安装机制(如图形安装程序、JumpStart、pkgadd(1M) 等)来进行安装。如果对于要安装的软件存在任何软件包依赖关系,则在安装该软件包之前,必须满足这些依赖关系。

示例:假设软件包 A 依赖于软件包 B,且这两个软件包均未在 Oracle Solaris 系统上安装。如果客户希望安装软件包 A,则该客户必须先安装软件包 B,因为软件包 A 依赖于软件包 B。对于软件包 A 依赖的任何其他软件包,必须完成同样的过程。强制添加软件包 A(而未事先安装软件包 B)将导致不受支持的配置。

Oracle Solaris 软件包删除

如果要从现有系统配置删除任何 Oracle Solaris 软件包,必须使用 Oracle 提供(并支持)的机制(如 JumpStart 或 pkgrm(1M))来删除。如果对于要删除的软件包存在任何依赖关系,则在删除该软件包之前,必须解决掉这些依赖关系。

示例:假设软件包 A 依赖于软件包 B,且这两个软件包均已安装在 Oracle Solaris 系统上。如果客户希望删除软件包 B,则该客户必须先删除软件包 A,因为软件包 A 依赖于软件包 B。对于依赖于已安装软件包 B 的任何软件软件包,必须完成同样的过程。如果客户无法删除依赖软件包 B 的软件包,则无法删除软件包 B。强制删除软件包 B 将导致不受支持的配置。

不允许删除 Oracle 提供的最小安装集中的任何软件包。对于 Oracle Solaris 第 9 版及更高版本,这意味着 SUNWCmreq 元集中提供的任何软件包。对于更早的 Oracle Solaris 版本,这意味着 SUNWCreq 元集中提供的任何软件包。删除 Oracle 提供的最小安装集中提供的软件包将导致不受支持的配置。

注意:从 Oracle Solaris 9 起提供的 SUNWCmreq 元集比较特殊。该元集既未作为一个可选元集列出,也不能在安装系统时选择。其唯一目的是包含每个 Oracle Solaris 系统上必须安装的软件包,无论该系统的目的或配置如何。

禁止使用 pkgrm 之外的任何其他方法删除 Oracle Solaris 软件包。不得 使用类似 rm(1) 的命令单独删除 Oracle Solaris 软件包提供的文件和目录。而且,在任何安装或删除操作完成之后,pkgchk(1M) 命令必须没有报告任何与 Oracle Solaris 软件包准确性和完整性有关的错误。

Oracle Solaris 修补

使用精简或最小 Oracle Solaris 配置可能会对修补产生有益的影响。对 Oracle Solaris 10 完成的一项研究结果表明,截至 2006 年 3 月 10 日,针对该操作系统的 SPARC 平台版本一共发布了 345 个补丁。这些补丁中只有 149 个适用于精简网络元集。节省超过 40%(最佳情况下),这是非常大的节省,尤其是对于采用大型 Oracle Solaris 部署的客户。甚至对 Oracle Solaris 操作系统配置采取精简方法的客户也将受益。使用 SUNWCuser 元集作为 Oracle Solaris 安装的基础仍将为每个系统节省接近 30% 的补丁。

我们可以获得这些好处,但同时也伴随着一定程度的风险。一个 Oracle Solaris 补丁可包含对多个 Oracle Solaris 软件包和元集中提供的文件的修复。对于精简或最小 Solaris 操作系统配置,这可能意味着补丁将会被部分应用,因为一个或多个要修补的软件包可能未安装在该系统上。

注意:在 2009 年最初撰写本文之时,Oracle Solaris 10 内核补丁(适用于 SPARC 的 118833)包含针对 5 个不同软件包中所提供代码的修复,这些软件包本身在 3 个不同元集中提供:SUNWCmreqSUNWcakrSUNWckrSUNWcsu)、SUNWCuserSUNWmdbrSUNWtoo)及 SUNWCprog (SUNWhea)。

对于精简或最小配置,并不容易看出哪些补丁可能只是部分安装。而且,如果在应用补丁之后添加某个软件包(最初未安装),该软件包将不会被修补,即使系统声明该补丁已成功安装。这种不一致并不只是一个小问题;它还可能导致由于使用了未修补的代码而意外暴露安全漏洞。

建议使用以下方法之一:

  • 不要在修补系统之后安装任何 其他 Oracle Solaris 操作系统软件包。
  • 在安装了新软件包之后,重新安装每个先前应用的补丁的最新版本。

如果这些方法均不可接受,那么客户可能希望使用完整版 + OEM 软件安装集来避免此问题。

其他修补建议

任何新安装的软件包应出自系统上当前安装的 Oracle Solaris 的同一修订版本。例如,如果目标系统安装了 Oracle Solaris 10 10/08,则安装的任何其他软件包应取自 Oracle Solaris 10 10/08 发行介质。之所以这样建议是因为,每个 Solaris Update 中的软件包已预先应用了所有可用补丁,并且 pkginfo 文件已使用相应的补丁元数据进行了更新。如果在系统中添加一个来自不同 Solaris Update 的软件包,则将纳入该软件包的这一版本的补丁级别,包括相关补丁元数据,从而导致目标系统上的整个补丁元数据成为不同版本的混杂体。因为 patchadd 只需在所有软件包的补丁元数据中发现一次该补丁即可判定为满足某一依赖关系,所以添加来自不同版本的软件包可能会导致 patchadd 在未来的修补操作中错误地解析补丁依赖关系,从而导致潜在的严重问题。

如果需要添加某个更新的 Oracle Solaris Update 中的软件包(这种情况即使有也很少有必要),您必须重新应用该软件包的 pkginfo 文件的 PATCHLIST 字段中列出的所有补丁,以确保目标系统上的所有其他软件包升级到一致的补丁级别。相反,如果添加某个更早的 Oracle Solaris Update 或同一 Oracle Solaris Update 中的软件包,则必须重新应用先前应用于目标系统的所有补丁的最新版本,以便将添加的软件包修补至与系统其余部分相同的补丁级别。

建议、注意事项和警告

请留意以下建议、注意事项和警告。

最小化的加成法

建议客户采取加成法来构建精简或最小配置。即,不要一开始采用整个软件然后尝试删除不需要的软件包,而是应尽量使用与其需要最接近的最小元集来开始安装。在此基础之上,可以根据需要添加或删除 Oracle Solaris 软件包。

对已安装软件属性的修改

禁止更改 Oracle Solaris 软件包提供的文件的所有权、组或权限。如果客户认为某个属性设置有误或可以改进,客户应提交错误或改进请求 (RFE) 报告,以便 Oracle 可以进行评估并采取相应措施。pkgchk(1M) 命令不得报告任何与 Oracle Solaris 软件包准确性和完整性有关的错误。

未记录的软件依赖关系

与任何复杂系统一样,不可能评估每一种可能性。因此,可能存在 Oracle Solaris 中未记录的软件包依赖关系。如果客户遇到此类问题并且配置被认为是受支持的,Oracle 将与客户一起确定可能需要的软件包。要满足依赖关系,客户必须安装所有必需的 Oracle Solaris 软件包。此外,Oracle 还将记录错误报告,以便在 Oracle Solaris 的将来版本中纠正此问题。

动态软件依赖关系

有些软件包可能有动态或可选的依赖关系。当软件包只是根据用户定义或存储在配置文件中的运行时设置而需要另一软件包时,就可能出现这种情况。在这些情况下,软件包可能未列出这些动态依赖关系。如果客户遇到此问题,必须按照未记录的软件依赖关系一节的指示来确定需要哪些软件包。所有确定为必需的软件包都必须安装。

未捆绑的和第三方软件的影响

大多数软件供应商(包括 Oracle)在使用整套 Oracle Solaris 软件(如 SUNWCXall)安装的系统上执行自己的大部分测试。极少使用精简或最小配置来完成测试。因此,在使用精简或最小配置时,安装后添加的软件失败的风险更高。

此外,特定精简或最小配置所需的 Oracle Solaris 软件包的实际列表在很大程度上取决于目标平台上将使用的全套硬件设备及软件功能和服务。因此,如果以后向系统配置添加(或升级)其他未捆绑的或第三方软件包,则可能对 Oracle Solaris 配置产生影响。客户必须始终执行足够的测试以确保其精简或最小 Oracle Solaris 配置在其环境中正常工作。该测试必须在将此类系统投入生产之前完成。

区别受支持的配置与合格的配置

客户被告知,“受支持”不同于“合格”。Oracle Solaris 工程小组使用 SUNWCXall 元集来设计、实现和测试 Oracle Solaris。因此,Oracle Solaris 所包括的显式软件包依赖关系未经证明是正确的。软件中准确的相互依赖关系未经可靠方式正式获知、评估和记录。因此,构建精简或最小配置时,有可能发现未记录的依赖关系或意料之外的行为。

Oracle Solaris 是包含许多软件包、组件和设置的复杂软件产品。根本不可能针对每一种排列组合进行设计或测试。实际上,绝大多数 Oracle 和 ISV 产品仅在 Oracle Solaris 的完整发行版本上经过测试。因此,选择部署精简或最小 Oracle Solaris 配置的客户会被告知,他们将承担额外的风险,并且会强烈鼓励这些客户在将配置转移至生产应用时对其配置进行全面的演练和测试。如果客户对此风险感到不安,建议以强化配置安装完整的 Oracle Solaris 发行版本,以降低风险。

例外

默认情况下,Oracle 提供的任何能够运行 Oracle Solaris 的 Sun SPARC Enterprise(以前称为 Sun Enterprise)或 Sun Fire 平台系统控制器上均不支持 Oracle Solaris 最小化。

定义

  • 强化配置。一种经过调优以增强安全性的 Oracle Solaris 配置。通常这包括禁用被认为对于系统的既定目标不需要的系统和网络服务、启用非默认安全特性或功能,以及启用或增强访问控制策略、审核和日志记录。
  • 最小安装。一种特殊情况的精简安装,其中只安装(或保留)为系统的运行或管理需求提供直接服务的软件包。所有不必要的软件都将被删除(或者一开始就不安装)。最小安装在很大程度上取决于所使用的实际硬件和软件配置(包括所有 Oracle 和第三方软件和设备)。
  • 精简安装(或精简软件安装)。一种通过只安装 Oracle Solaris 提供的部分而非全部软件包创建的 Oracle Solaris 配置。这包括基于 SUNWCXall 之外的任何软件安装集的安装。

致谢

感谢以下人士对本文档的创建和/及审阅作出的贡献:Warren Belfer、Glenn Brunette、James Carlson、Joe Di Pol、Richard Elling、Harry Foxwell、Chris Gerhard、Jim Hall、Gerry Haskins、Vasya Igouchkine、Kathy Jenks、Robert Kriz、Jim Laurent、Peter Memishian、Dave Miner、Darren Moffat、Scott Rotondo、Isaac Rozenfeld、Jafar Shameem、Bart Smaalders、Mark Thacker、Anand Vaidun、Nicolas Williams 和 Gary Winiger。

修订版 1.3,2011 年 8 月 23 日