16.4. 创建镜像

OpenStack 文档提供了有关如何创建并将镜像上传到镜像服务的指导。另外,假设您有安装和强化客户机操作系统的过程。以下项目将提供有关如何将镜像传送到 OpenStack 的附加指导。获取镜像的各种选项。每种方法均有特定的步骤,可以帮助验证镜像的来源。

  • 选项 1: 包含来自可信源的引导介质.例如,您可以从官方的红帽源下载镜像,然后执行额外的 checksum 验证。
  • 选项 2: 使用 OpenStack 虚拟机镜像指南。在这种情况下,您将希望遵循您的机构操作系统强化指南。
  • 选项 3 :使用自动镜像构建器。以下示例使用 Oz 镜像构建器。OpenStack 社区最近创建了一个名为 disk-image-builder 的较新工具,但还没有出现安全评估。

在本例中,RHEL 6 CCE-26976-1 帮助在 Oz 中实施 NIST 800-53 节 AC-19 (d)。

<template>
<name>centos64</name>
<os>
  <name>RHEL-6</name>
  <version>4</version>
  <arch>x86_64</arch>
  <install type='iso'>
  <iso>http://trusted_local_iso_mirror/isos/x86_64/RHEL-6.4-x86_64-bin-DVD1.iso</iso>
  </install>
  <rootpw>CHANGE THIS TO YOUR ROOT PASSWORD</rootpw>
</os>
<description>RHEL 6.4 x86_64</description>
<repositories>
  <repository name='epel-6'>
  <url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
  <signed>no</signed>
  </repository>
</repositories>
<packages>
  <package name='epel-release'/>
  <package name='cloud-utils'/>
  <package name='cloud-init'/>
</packages>
<commands>
  <command name='update'>
  yum update
  yum clean all
  sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
  echo -n > /etc/udev/rules.d/70-persistent-net.rules
  echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
  chkconfig --level 0123456 autofs off
  service autofs stop
  </command>
</commands>
</template>

考虑避免手动镜像构建过程,因为它很复杂且容易出错。此外,使用 Oz 等自动系统进行镜像构建,或者配置管理实用程序(如 Dan 或 Puppet)进行强化,可让您生成一致的镜像,并跟踪基础镜像的合规性,以便随着时间的推移进行相应的强化指南。

如果订阅公有云服务,您应该与云供应商联系,以了解用于生成其默认镜像的流程概述。如果供应商允许您上传自己的镜像,则需要确保在使用它创建实例前验证您的镜像没有被修改。为此,请参阅 _Verification 镜像签名_ 的以下部分,或者无法使用以下段落。

Image Service (glance)用于将镜像上传到节点上的 Compute 服务。此传输应进一步通过 TLS 强化。镜像位于节点上后,它将通过基本的校验和进行检查,然后根据所启动实例的大小扩展其磁盘。如果稍后,同一镜像在这个节点上使用相同的实例大小启动,它将从相同的扩展镜像启动。由于这种扩展的镜像在启动前不会被重新验证,所以存在风险。用户不知道篡改,除非手动检查生成的镜像中文件。要帮助缓解这一点,请参阅以下有关验证镜像签名的主题。