跳转到: 导航, 搜索

VolumeTransfer


原理

需要支持在不同客户之间传输 Cinder 卷。例如,一家专业咨询公司可能会制作定制的可启动卷或包含大型数据集的卷。卷创建完成后,可以使用此过程将其传输给最终客户。 同样,对于批量导入数据到云端,数据接入系统可以创建一个新的 cinder 卷,将数据从物理设备复制过来,然后将设备的拥有权转移给最终用户。

此蓝图描述了一种在云客户之间安全传输 cinder 卷的机制。

用例

以下示例定义了 Cinder 卷传输机制如何促进特定类型的客户。 这不是用例的详尽列表,仅作为一些常见案例的参考。

定制卷

  • 一家公司代表其客户制作定制数据集。 这可能涉及大量处理过的营销信息,或客户数据的分析。 它也可能涉及一个定制的可启动卷,其中包含特定于客户的配置数据。
  • 卷创建完成后,会准备一个传输允许记录和授权码。
  • 公司将卷 ID 和授权码安全地交付给最终客户。
  • 最终客户使用卷 ID 和授权码来声明他们的卷。
  • 卷现在属于最终客户,他们可以根据需要附加、分离和删除卷。

卷修复服务

  • 云客户以某种方式损坏了他们的虚拟磁盘——也许是意外删除了文件,或者破坏了文件系统的一些元素。
  • 他们与第三方公司签订合同来修复卷或恢复文件。
  • 客户创建一个传输记录,并将卷 ID 和授权码传递给修复机构。
  • 修复机构声明该卷,并开始修复过程。
  • 完成修复后,他们创建一个传输记录,并将新的授权码发送回客户。
  • 原始云客户重新获取他们修复后的卷。

批量数据导入服务

  • 云客户有一个大型数据集,他们希望将其迁移到云端。
  • 他们将物理驱动器运送到云设施提供的接入点。
  • 运营商接收驱动器并创建匹配的虚拟磁盘。
  • 数据从物理驱动器复制到虚拟驱动器,并将驱动器返回给客户。
  • 运营商创建一个传输记录,并安全地将授权码和卷 ID 转发给云客户,客户声明他们的驱动器。

设计

该过程要求双方同意该操作,并且能够安全地在双方之间交换授权密钥。

卷捐赠者通过为特定卷请求卷传输授权码来启动该过程。 卷必须处于“可用”状态,否则请求将被拒绝。 只要传输请求在数据库中有效(也就是说,它没有被删除或过期),卷将被置于“等待传输”状态。

Cinder 数据库中的传输表用于维护所有传输请求。 请求包括 volume_id 以标识特定的卷,一个 128 位“salt”代码,以及一个 160 位 SHA-1 哈希值。

创建传输记录的新 API 命令首先验证卷是否由捐赠者拥有。 它生成 128 位密钥 salt,并计算具有适当熵的 512 位随机密钥。 salt 和密钥组合在一起,通过 SHA-1 过程,并将结果保存在数据库中。 密钥也作为字符字符串返回给用户。 密钥不会保存在数据库或日志文件中。 如果丢失,则无法恢复。

卷捐赠者有责任保护密钥的隐私,并确保只有卷接收者才能访问它。 接收者可以声明驱动器,前提是他们拥有卷 ID 和授权密钥。 他们通过 API 运行类似的命令来指定 ID 和密钥。 如果传输表中存在指定卷的未删除条目,并且条目的到期日期尚未过去,则 salt 再次与指定的密钥组合,并通过相同的单向 SHA-1 过程。 如果结果与数据库中存储的结果匹配,则卷的 user_id 和 project_id 将更新为 API 调用者的 user_id 和 project_id。

考虑了其他机制,例如在传输表中保留接收者 user_id 和 project_id,或者一种机制,即接收者首先请求卷。 但是,卷和传输的安全性只能通过使用共享密钥来保证。 需要在 Cinder 数据库中创建一个新表,名为 volume_transfers,结构如下

id Varchar(36)
volume_id Varchar(36)
salt Varchar(255)
crypt_hash Varchar(255)
expiry DateTime

卷捐赠者将允许指定传输记录的到期时间。 默认值可能是 14 天,例如。

捐赠者也可以随时删除指定卷的传输记录,而无需指定授权码。 这样,如果密钥丢失或受到损害,捐赠者可以删除传输请求。

配额系统不受此蓝图的直接影响。 在接受传输的过程中,配额的检查方式与创建新卷时类似。 如果接收者没有足够的配额,传输将被拒绝。 总体而言,接收卷传输的机制与卷创建非常相似,除了卷已经存在。 诸如配额检查之类的元素以类似的方式执行。

一旦卷被转移到新所有者,该卷与传统创建的卷没有区别。 它可以被删除、附加、用于生成快照或转移,就像任何其他卷一样。

迁移

由于这是一个新功能,并且有一个新的数据库表,因此没有迁移问题或对现有表的更改。

未解决的问题

该系统同样适用于快照,数据库模式以及 API 接口也相当相似。 但是,本文将快照的问题推迟到后续蓝图,以减少初始复杂性。

© 版权所有 2013 Hewlett-Packard Development Company, L.P.