IBM Cloud Docs
加密 VHD 映像

加密 VHD 映像

要使用 E2E 加密功能,必须先使用 vhd-util 工具对虚拟硬盘驱动器 (VHD) 映像进行加密,然后再将其导入到映像模板中以供应加密实例。 支持两个级别的 AES 加密 :AES 256 位和 AES 512 位。

加密 VHD 映像需求

加密 VHD 映像必须满足以下需求:

加密 VHD 映像

执行这些步骤以创建加密 VHD 映像:

  1. 选择 V7 或更高版本的 CentOS 系统,为 IBM Cloud 加密虚拟磁盘映像(VHD 文件)。 如果您无法访问安装了 CentOS 的物理硬件,那么可以使用公共或专用主机在 IBM Cloud 中使用 CentOS 7 供应虚拟服务器实例。 用于加密 VHD 文件的 CentOS 系统本身不需要加密。

  2. 从 IBM Cloud 下载加密工具,然后使用最合适的选项来加密 VHD。

    选项 1:如果 CentOS 系统不在 IBM Cloud 中运行,请登录并连接到客户 VPN。 有关如何设置 VPN 的更多信息,请参阅设置 SSL VPN 连接。 连接到 VPN 后, 转至 IBM Cloud 下载站点 ,然后选择 vhd-util 工具 RPM 软件包文件: vhd-util-standalone-3.5.0-xs.2+1.0_71.2.2.x86_64.rpm

    选项 2 如果无法将 RPM 软件包文件直接下载到 CentOS 系统,请连接到客户 VPN 并将该文件下载到您正在处理的工作站。 然后,使用安全复制 (scp) 命令,将其上传到 CentOS 系统。 如果使用的是 IBM Cloud 中的虚拟服务器实例,请执行以下命令,利用系统的公共 IP 地址来上传。

    scp vhd-util-standalone-3.5.0-xs.2+1.0_71.2.2.x86_64.rpm root@<vsi_public_ip>:
    

    选项 3:如果在步骤 1 中选择在 IBM Cloud 内供应 CentOS 虚拟服务器实例,那么可以在不连接到客户 VPN 的情况下使用以下 curl 命令:

    curl -O http://downloads.service.softlayer.com/citrix/xen/vhd-util-standalone-3.5.0-xs.2+1.0_71.2.2.x86_64.rpm
    
  3. 使用以下命令安装 RPM:

    rpm -iv vhd-util-standalone-3.5.0-xs.2+1.0_71.2.2.x86_64.rpm
    
  4. 确定并选择加密和解密磁盘映像所需的 AES 数据加密密钥 (DEK),然后将其写入密钥文件。 此 DEK 是使用密钥管理服务提供的客户根密钥打包的 base64-encoded DEK ,该密钥与 准备环境中的客户根密钥相同。 写入密钥文件的密钥材料必须是解包的,并且不得进行编码。

    因为密钥文件不是 base64 编码的,所以无法使用标准 ASCII 字符从命令行打印或查看密钥文件内容。

    使用以下命令创建具有 AES 256 位AES 512 位 加密密钥的密钥文件:

    echo <data_key> | base64 -d - > <keyfile_name>
    

    示例命令:

    echo Nrfen98EpMxF2B+wdgLfagzrqvgUZfMK4vL2T0NsT20ihrsNC9pUUHtizF6218pze8RLCgQ6kwxuE58IWLzgDA== | base64 -d - > aes512.dek
    
  5. 使用以下命令,验证在先前步骤中创建的密钥文件:

    vhd-util key -C -k <keyfile_name>
    

    示例命令及输出:

    vhd-util key -C -k aes512.dek
    vhd_util_read_key: using keyfile aes512.dek, Size (bytes) 64
    21681bba94f04b33b112f5f90a0faa885a6d1dbf1bd68ed16c5b995143088eda
    

    上一个示例命令的输出的第一行指示名为 aes512.dek 的密钥文件包含 64 字节密钥。 第二行上列出的数字是相应加密密钥的 SHA256 散列或安全散列。 包含 AES 256 位加密密钥的文件的输出指示 32 字节密钥。

  6. 使用以下命令来创建 VHD 文件的加密副本。 target_vhd 表示包含 source_vhd加密版本的文件的名称。

    vhd-util copy -n <source_vhd> -N <target_vhd> -k <keyfile_name>
    

    示例命令:

    vhd-util copy -n debian8-ne.vhd -N debian8-aes512.vhd -k aes512.dek
    
  7. 使用以下命令验证 VHD 文件是否已加密。

    vhd-util key -p -n <vhd_filename>
    

    示例命令及输出:

    vhd-util key -p -n debian8-aes512.vhd
    0000000000000000000000000000000000000000000000000000000000000000
    21681bba94f04b33b112f5f90a0faa885a6d1dbf1bd68ed16c5b995143088eda
    

如果 VHD 文件已加密,那么会在输出中看到两个散列值,如先前示例中所示。 第一个散列全部为零。 第二个散列为 SHA256 散列,由 AES 加密密钥用于加密和解密 VHD。 确保 VHD 文件的 SHA256 散列与步骤 5 中显示的散列相同。

步骤 7 中的示例命令创建名为“debian8-aes512.vhd”的新的加密 VHD 文件。 此文件使用来自名为“aes512.dek”的密钥文件的 AES 512 位加密密钥进行加密。 用于加密的 SHA256 散列为 21681bba94f04b33b112f5f90a0faa885a6d1dbf1bd68ed16c5b995143088eda