数据隐私问题

数据驻留

在过去几年中,数据隐私和隔离一直被认为是采用云技术的首要障碍。对于谁拥有云中的数据以及云运营商是否可以作为此数据的最终托管人,一直存在着重要的担忧。

许多 OpenStack 服务维护属于租户的数据和元数据,或引用租户信息。

存储在 OpenStack 云中的租户数据可能包括以下项目

  • 对象存储对象

  • 计算实例临时文件系统存储

  • 计算实例内存

  • 块存储卷数据

  • 用于计算访问的公钥

  • 镜像服务中的虚拟机镜像

  • 机器快照

  • 传递到 OpenStack Compute 配置驱动扩展的数据

OpenStack 云存储的元数据包括以下非详尽项目

  • 组织名称

  • 用户的“真实姓名”

  • 正在运行的实例、存储桶、对象、卷和其他配额相关项目的数量或大小

  • 运行实例或存储数据的时长

  • 用户的 IP 地址

  • 用于计算镜像打包的内部生成的私钥

数据处置

OpenStack 运营商应努力提供一定程度的租户数据处置保证。最佳实践建议运营商在处置、释放组织控制或释放以供重复使用之前,对云系统介质(数字和非数字)进行清理。清理方法应根据特定的安全域和信息的敏感性实施适当的强度和完整性级别。

“清理过程从介质中删除信息,使其无法检索或重建。清理技术,包括清除、净化、加密擦除和销毁,可防止在重新使用或处置此类介质时向未经授权的个人泄露信息。” NIST 特殊出版物 800-53 第 4 版

根据 NIST 推荐的安全控制措施采用的一般数据处置和清理指南。云运营商应

  1. 跟踪、记录和验证介质清理和处置操作。

  2. 测试清理设备和程序,以验证其性能是否正确。

  3. 在将此类设备连接到云基础设施之前,清理便携式、可移动存储设备。

  4. 销毁无法清理的云系统介质。

在 OpenStack 部署中,您需要解决以下问题

  • 安全数据擦除

  • 实例内存擦除

  • 块存储卷数据

  • 计算实例临时存储

  • 裸机服务器清理

未安全擦除的数据

在 OpenStack 中,某些数据可能会被删除,但不会按照上述 NIST 标准安全擦除。这通常适用于上述定义的大多数或所有元数据和存储在数据库中的信息。可以通过数据库和/或系统配置进行自动清理和定期空闲空间擦除来修复此问题。

实例内存擦除

各种虚拟机对实例内存的处理方式各不相同。此行为未在 OpenStack Compute 中定义,尽管通常期望虚拟机在删除实例、创建实例或两者兼而有之时,都会尽最大努力擦除内存。

Xen 显式地为实例分配专用内存区域,并在销毁实例(或 Xen 术语中的域)时擦除数据。KVM 更多地依赖于 Linux 页面管理;与 KVM 页面相关的复杂规则在 KVM 文档 中定义。

重要的是要注意,使用 Xen 内存气球功能可能会导致信息泄露。我们强烈建议避免使用此功能。

对于这些和其他虚拟机,我们建议参考虚拟机特定的文档。

Cinder 卷数据

强烈建议使用 OpenStack 卷加密功能。这将在数据加密部分下的卷加密中讨论。当使用此功能时,通过安全删除加密密钥来完成数据的销毁。最终用户可以在创建卷时选择此功能,但请注意,管理员必须首先执行卷加密功能的一次性设置。有关此设置的说明,请参阅块存储部分中的 配置参考,在卷加密下。

如果未使用 OpenStack 卷加密功能,则其他方法通常会更难以启用。如果正在使用后端插件,则可能存在独立的加密方式或非标准覆盖解决方案。OpenStack 块存储的插件会将数据以各种方式存储。许多插件特定于供应商或技术,而其他插件则围绕 LVM 或 ZFS 等文件系统提供更 DIY 的解决方案。安全销毁数据的方法将因插件而异,因供应商的解决方案而异,因文件系统而异。

一些后端,例如 ZFS,将支持写时复制以防止数据泄露。在这种情况下,从未写入的块读取将始终返回零。其他后端,例如 LVM,可能原生不支持此功能,因此块存储插件有责任在将其提供给用户之前覆盖先前写入的块。重要的是要查看您选择的卷后端提供的保证,并查看针对未提供的保证有哪些缓解措施。

镜像服务延迟删除功能

OpenStack 镜像服务具有延迟删除功能,该功能将在定义的时期内挂起镜像的删除。如果存在安全问题,建议通过编辑 etc/glance/glance-api.conf 文件并将 delayed_delete 选项设置为 False 来禁用此功能。

计算软删除功能

OpenStack Compute 具有软删除功能,该功能使被删除的实例可以在定义的时期内处于软删除状态。在此期间可以恢复实例。要禁用软删除功能,请编辑 etc/nova/nova.conf 文件并保留 reclaim_instance_interval 选项为空。

计算实例临时存储

请注意,OpenStack 临时磁盘加密 功能提供了一种改善临时存储隐私和隔离的手段,无论是在主动使用期间还是在要销毁数据时。与加密块存储一样,只需删除加密密钥即可有效地销毁数据。

在创建和销毁临时存储时,替代措施以提供数据隐私在某种程度上取决于所选的虚拟机和 OpenStack Compute 插件。

计算的 libvirt 插件可能直接在文件系统或 LVM 上维护临时存储。文件系统存储通常不会在删除时覆盖数据,尽管保证不会向用户提供脏区。

在使用基于块的 LVM 备份的临时存储时,OpenStack Compute 软件必须安全擦除块以防止信息泄露。过去曾发生过与未正确擦除临时块存储设备相关的信息泄露漏洞。

文件系统存储是临时块存储设备的更安全解决方案,因为无法向用户提供脏区。但是,重要的是要注意用户数据不会被销毁,因此建议加密备份文件系统。

裸机服务器清理

Compute 的裸机服务器驱动程序正在开发中,此后已迁移到名为 ironic 的独立项目。在撰写本文时,ironic 似乎没有解决驻留在物理硬件上的租户数据清理问题。

此外,租户可以修改裸机系统的系统固件。TPM 技术,如 安全引导 中所述,提供了一种检测未经授权的固件更改的解决方案。