安全哈希算法支持 (Multihash)

安全哈希算法功能添加了镜像属性,可用于基于其哈希值验证镜像完整性。

安全哈希包含两个新的镜像属性

os_hash_algo

包含用于生成镜像值的安全哈希算法的名称

os_hash_value

通过将 os_hash_algo 属性中命名的安全哈希算法应用于镜像数据而计算出的十六进制摘要

镜像验证

当使用安全哈希时,Glance 镜像属性将包含两个字段 os_hash_algoos_hash_value。这两个字段提供了用于计算安全哈希的哈希算法,以及为镜像计算出的哈希值。

这些值可用于在使用时验证镜像完整性。例如,可以使用以下方式查看镜像及其属性

 $ glance image-show fa33e3cd-5fe4-46df-a604-1e9b9438b420
+------------------+----------------------------------------------------------------------------------+
| Property         | Value                                                                            |
+------------------+----------------------------------------------------------------------------------+
| checksum         | ffa3dd42fae539dcd8fe72d429bc677b                                                 |
| container_format | bare                                                                             |
| created_at       | 2019-06-05T13:39:46Z                                                             |
| disk_format      | qcow2                                                                            |
| id               | fa33e3cd-5fe4-46df-a604-1e9b9438b420                                             |
| min_disk         | 10                                                                               |
| min_ram          | 1024                                                                             |
| name             | fedora-30                                                                        |
| os_hash_algo     | sha512                                                                           |
| os_hash_value    | d9f99d22a6b6ea1e8b93379dd2080f51a7ed6885aa7d4c2f2262ea1054935e02c47b45f9b56aa7f5 |
|                  | 5e61d149d06f4ff6de03efde24f9d6774baf35f08c5e9d92                                 |
| os_hidden        | False                                                                            |
| owner            | 0e82e8f863a4485fabfbed1b5b856cd7                                                 |
| protected        | False                                                                            |
| size             | 332267520                                                                        |
| status           | active                                                                           |
| tags             | []                                                                               |
| updated_at       | 2019-06-07T11:41:12Z                                                             |
| virtual_size     | Not available                                                                    |
| visibility       | public                                                                           |
+------------------+----------------------------------------------------------------------------------+

从该输出中,我们可以看到 os_hash_algo 属性显示 sha512 用于生成多哈希。然后 os_hash_value 显示生成的哈希值为

d9f99d22a6b6ea1e8b93379dd2080f51a7ed6885aa7d4c2f2262ea1054935e02c47b45f9b56aa7f55e61d149d06f4ff6de03efde24f9d6774baf35f08c5e9d92

下载镜像时,现在可以使用这些值来验证镜像的完整性。例如

$ glance image-download fa33e3cd-5fe4-46df-a604-1e9b9438b420 --file fedora-30
$ sha512sum fedora-30
d9f99d22a6b6ea1e8b93379dd2080f51a7ed6885aa7d4c2f2262ea1054935e02c47b45f9b56aa7f55e61d149d06f4ff6de03efde24f9d6774baf35f08c5e9d92

使用 sha512sum 命令,我们可以计算镜像上的本地哈希值并验证其是否与预期匹配。如果输出不匹配,则表明镜像在上传到 Glance 后已被修改或损坏,可能不应使用。