虚拟机安全篇

配置和管理标准密钥提供程序

添加标准密钥提供程序

支持添加外部密钥服务器(KMS)来辅助支持系统的各种加密能力,以此增强系统整体安全能力水平。KMS 必须支持密钥管理互操作协议(KMIP)1.1及以上标准。

前提条件

确保平台已安装高级版许可证,并且许可证出于有效状态。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,点击添加密钥提供程序
  5. 添加密钥提供程序弹窗中,参考以下示例完成配置:
    • 名称:输入密钥提供程序名称
      Note: 每个密钥提供程序的名称将作为标识符,请确保名称全局唯一。
    • 简介:为密钥提供程序输入简要说明
    • 类型:选择标准密钥提供程序
    • IP地址/域名:输入 KMS 的 IP 地址或域名
    • 端口:输入 KMS 的连接端口,默认为 5696
    • 密码保护:一些 KMS 允许用户通过指定用户名和密码来隔离不同用户或组使用的加密密钥。开启后,输入对应的用户名和密码
  6. 确认配置信息无误后,点击确定
  7. 点击信任
    添加成功后,密钥提供程序状态显示为"已连接|未被 KMS 信任"。

后续操作

建立信任

KMS 信任 ZStack ZSphere

使用 KMS 证书和私钥方式使 KMS 信任

某些 KMS 厂商要求将 KMS 服务器证书和私钥上传到 ZStack ZSphere

操作步骤

  1. 导航至密钥提供程序页面。
  2. 找到要建立信任的标准密钥提供程序,点击操作 > 建立信任 > 使KMS信任
  3. 使KMS信任弹窗中,选择KMS证书和私钥作为信任方式。
  4. 点击下一步
  5. 将从 KMS 中收到的证书和私钥文件上传,或将证书和私钥内容粘贴至文本框中。
  6. 点击确定

后续操作

建立双向信任,请参阅 ZStack ZSphere 信任 KMS

使用新建证书签名请求 (CSR) 使 KMS 信任

某些 KMS 厂商要求 ZStack ZSphere 生成证书签名请求 (CSR) 并将该 CSR 提交到 KMS。KMS 将签署 CSR 并返回已签名证书。您需将签署后的证书重新上传至 ZStack ZSphere 以建立信任。

操作步骤

  1. 导航至密钥提供程序页面。
  2. 找到要建立信任的标准密钥提供程序,点击操作 > 建立信任 > 使KMS信任
  3. 使KMS信任弹窗中,选择新建证书签名请求 (CSR)作为信任方式。
  4. 点击下一步
  5. 点击复制下载,将文本框中的内容完整复制或作为文件下载。
    仅当您明确有生成新 CSR 的需求时,再使用生成新CSR
  6. 点击确定
  7. 登录 KMS 并按照 KMS 的要求提交 CSR。
  8. 在收到 KMS 签署后的证书时,再次点击操作 > 建立信任 > 上传签名CSR证书
  9. 将签名证书粘贴至文本框中,或点击上传文件上传。

后续操作

建立双向信任,请参阅 ZStack ZSphere 信任 KMS

ZStack ZSphere 信任 KMS

若您在添加标准密钥提供程序时跳过了信任 KMS 步骤,则您必须在完成 KMS 信任 ZStack ZSphere 后建立双向信任。

操作步骤

  1. 导航至密钥提供程序页面。
  2. 找到要建立信任的标准密钥提供程序,点击操作 > 建立信任
  3. 从建立信任菜单中选择以下选项之一。
    • 信任KMS:在信任KMS弹窗中,点击信任
    • 上传KMS证书:在上传KMS证书弹窗中,上传文件或将证书内容粘贴至文本框。然后点击确定

删除标准密钥提供程序

前提条件

  • 当存在多个密钥提供程序时,默认密钥提供程序不可删除。请先将其他密钥提供程序设为默认,然后再执行删除操作。
  • 如需保留加密资源,请在删除前对相关虚拟机执行更新密钥操作,使用默认密钥提供程序对其重新加密。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,选择要删除的标准密钥提供程序,然后点击操作 > 删除
    Note: 删除密钥提供程序后,基于此密钥提供程序加密的所有资源(如启用了 TPM 的虚拟机、加密虚拟机、加密硬盘)将进入锁定状态没无法使用。
  5. 阅读风险提示信息,请输入确认信息后,点击确定

使用 Thales 密钥提供程序

操作步骤

  1. ZStack ZSphere 中添加 Thales 密钥提供程序。
    详细完整步骤请参阅 添加标准密钥提供程序
  2. 在 Thales 中创建 localhost 用户并加入 admin 用户组。
    1. 登录 Thales 平台。
    2. 点击Access Management > Users > Add User
      图 1. 添加用户


    3. 创建 localhost 用户。
      图 2. 创建localhost用户


    4. 点击用户名称,进入其详情页。
    5. 展开GROUP MEMBERSHIP区域,然后点击Add Group
      图 3. 将用户添加至组


    6. Add member to group(s)弹窗中,勾选admin,然后点击Add Group
  3. (可选)使用新建签名请求 (CSR) 方式使 Thales 信任 ZStack ZSphere
    1. 登录 ZStack ZSphere
    2. 导航至密钥提供程序页面。
    3. 找到添加的 Thales 标准密钥提供程序,点击操作 > 建立信任 > 使KMS信任
    4. 使KMS信任弹窗中,选择新建证书签名请求 (CSR)作为信任方式。
    5. 点击下一步
    6. 复制 CSR 完整内容。
    7. 登录 Thales。
    8. 点击Products > KMIP
      图 4. 进入KMIP模块


    9. 点击Client Profile > Add Profile
      图 5. 添加Profile


    10. Add Profile弹窗中,设置 Profile 基础信息并粘贴 CSR 信息,然后点击Save
      图 6. 配置Profile


    11. 点击Registration Token > New Registration Token
      图 7. New Registration Token


    12. Create New Registration Token弹窗中,跟随操作引导完成配置。
      • 在第三步Select Profile中选择之前创建的 Profile。
      • 在第四步Create Token中复制创建出的 Token。
      图 8. 创建Token


    13. 点击Registered Clients > Add Client
      图 9. Add Client


    14. Add Client弹窗中,设置 Client 名称并粘贴 Registration Token,然后点击Save
      图 10. 配置Client


    15. 保存成功后,点击Save CSRSave Certificate,下载 CSR 和证书。
      图 11. 下载CSR和证书


    16. 登录 ZStack ZSphere
    17. 导航至密钥提供程序页面,然后点击操作 > 建立信任 > 上传签名CSR证书
    18. 将从 Thales 下载的证书上传。
  4. (可选)使用 KMS 证书和私钥方式使 Thales 信任 ZStack ZSphere
    1. 登录 Thales。
    2. 点击Products > KMIP
      图 12. 进入KMIP模块


    3. 点击Client Profile > Add Profile
      图 13. 添加Profile


    4. Add Profile弹窗中,设置 Profile 名称,然后点击Save
      图 14. 添加Profile


    5. 点击Registration Token > New Registration Token
      图 15. New Registration Token


    6. Create New Registration Token弹窗中,跟随操作引导完成配置。
      • 在第三步Select Profile中选择之前创建的 Profile。
      • 在第四步Create Token中复制创建出的 Token。
      图 16. 创建Token


    7. 点击Registered Clients > Add Client
      图 17. Add Client


    8. Add Client弹窗中,设置 Client 名称并粘贴 Registration Token,然后点击Save
      图 18. 配置Client


    9. 保存成功后,点击Save CertificateSave Private Key,下载证书和私钥。
      图 19. 下载证书和私钥


    10. 登录 ZStack ZSphere
    11. 导航至密钥提供程序页面。
    12. 找到添加的 Thales 标准密钥提供程序,点击操作 > 建立信任 > 使KMS信任
    13. 使KMS信任弹窗中,选择KMS证书和私钥作为信任方式。
    14. 点击下一步
    15. 上传从 Thales 下载的 KMS 证书和私钥。
    16. 点击确定

使用 HashiCorp 密钥提供程序

操作步骤

  1. ZStack ZSphere 中添加 HashiCorp 密钥提供程序。
    详细完整步骤请参阅 添加标准密钥提供程序
  2. (可选)使用 KMS 证书和私钥方式使 HashiCorp 信任 ZStack ZSphere
    1. 登录 HashiCorp。
    2. 点击Vault > Secrets Engines
    3. Secrets Engines页面,点击kmip进入 KMIP 模块。
      图 1. 进入KMIP模块


    4. kmip页面,点击Create scope创建项目或进入已有项目。
      图 2. 创建或进入已有项目


    5. 在项目详情页中,点击Create role创建角色。
    6. Create a Role页面,设置角色名称并参考图例完成 TLS 配置。
      图 3. 创建角色


    7. 创建完成后,点击角色进入详情页,然后点击Generate credentials
    8. Genetate Credentials页面,选择pem作为证书格式,然后点击Save
      图 4. 生成证书


    9. 复制证书和私钥。
      图 5. 复制证书和私钥


    10. 登录 ZStack ZSphere
    11. 导航至密钥提供程序页面。
    12. 找到添加的 HashiCorp 标准密钥提供程序,点击操作 > 建立信任 > 使KMS信任
    13. 使KMS信任弹窗中,选择KMS证书和私钥作为信任方式。
    14. 点击下一步
    15. 粘贴从 HashiCorp 复制的 KMS 证书和私钥。
    16. 点击确定
  3. (可选)使用新建签名请求 (CSR) 方式使 HashiCorp 信任 ZStack ZSphere
    1. 登录 HashiCorp 后台。
    2. 执行vault login,输入 token。
    3. 生成 CSR:
      vault write -format=json kmip/scope/test/role/admin/credential/sign csr="$(cat csr.pem)" | jq -r '.data.certificate' > client.crt
    4. 登录 ZStack ZSphere
    5. 导航至密钥提供程序页面,然后点击操作 > 建立信任 > 上传签名CSR证书
    6. 将获取的client.crt证书上传。

配置和管理内置密钥提供程序

添加内置密钥提供程序

ZStack ZSphere 提供内置密钥提供程序,允许您无需第三方 KSM,也可启用加密相关的功能。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,点击添加密钥提供程序
  5. 添加密钥提供程序弹窗中,参考以下示例完成配置:
    • 名称:输入密钥提供程序名称
      Note: 每个密钥提供程序的名称将作为标识符,请确保名称全局唯一。
    • 简介:为密钥提供程序输入简要说明
    • 类型:选择内置密钥提供程序
  6. 点击确定
    添加成功后,密钥提供程序状态显示为"未备份"。

后续操作

添加内置密钥提供程序后,需先完成备份后再使用。有关更多信息,请参阅 备份内置密钥提供程序

备份内置密钥提供程序

内置密钥提供程序仅存储在 ZStack ZSphere 中,一旦 ZStack ZSphere 发生故障或需要重建,密钥将随之丢失,所有加密虚拟机将无法解密和启动,因此,备份内置密钥提供程序是灾难恢复的必要环节。备份后,您能在重建 ZStack ZSphere 后恢复密钥服务,重新挂载加密虚拟机。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,选择要备份的内置密钥提供程序。
    对于尚未备份的密钥提供程序,将显示为"未备份"状态。
  5. 点击操作 > 备份
  6. 备份密钥提供程序弹窗中,按需选择备份模式。
    • 直接备份
      Note: 未采用密码保护,会使其配置数据以及使用密钥提供程序加密的虚拟机面临潜在的安全风险。
    • 密码保护:输入并确认密码。
      Note:

      请妥善保存密码。平台无法访问或找回您设置的密码,请妥善保存密码。若发生灾难,还原内置密钥提供程序时,需要使用此密码。

      如果忘记或丢失密码:
      • 将无法还原该密钥提供程序。
      • 将无法访问依赖于此密钥提供程序的加密资源(如启用了 TPM 的虚拟机、加密虚拟机)。
  7. 点击确定
    备份文件将通过浏览器下载,请将备份文件保存在一个安全的位置。

还原内置密钥提供程序

前提条件

  • 已提前准备好内置密钥提供程序的备份文件。
  • 若在备份密钥提供程序时,为备份文件设置了密码保护,请准备好备份文件的密码。
  • 确保平台上无相同名称的密钥提供程序。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,点击更多操作 > 还原
  5. 还原密钥提供程序弹窗中,上传备份文件。
  6. (可选)若备份文件设置了密码保护,请输入密码。
  7. 点击下一步
  8. 确认要还原的密钥提供程序信息,然后点击确定

删除内置密钥提供程序

前提条件

  • 如需保留该密钥提供程序以备后续使用,请先进行备份。
  • 如需保留加密资源,请在删除前对相关虚拟机执行更新密钥操作,使用默认密钥提供程序对其重新加密。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,选择要删除的内置密钥提供程序,然后点击操作 > 删除
    Note:
    • 删除后,基于此密钥提供程序加密的所有资源(如启用了 TPM 的虚拟机、加密虚拟机、加密硬盘)将进入锁定状态没无法使用。
    • 密钥提供程序将从平台中永久删除,且无法恢复,请谨慎操作。
  5. 阅读风险提示信息,请输入确认信息后,点击确定

更新密钥

出于业务或合规性要求(如定期密钥轮换、怀疑密钥泄漏、满足安全审计标准),支持更新密钥,使用默认密钥提供程序对加密虚拟机重新加密。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 选择根节点。
  3. 在根节点详情页,点击密钥提供程序
  4. 密钥提供程序子页面,点击更多操作 > 更新密钥
  5. 确定要更新密钥?弹窗中,点击确定
    此操作将使用当前默认密钥提供程序的新密钥对全局已加密资源重新进行加密。

使用 vTPM 保护虚拟机

在新建虚拟机时或为现有虚拟机添加虚拟可信平台模块 (vTPM),为虚拟机操作系统提供增强的安全性。

前提条件

  • 平台已添加可用的密钥提供程序。若使用内置密钥提供程序,请先完成备份操作。
  • 虚拟机运行所在主机的内核、QEMU 和 libvirt 版本需满足 vTPM 支持要求。不同架构和主机操作系统版本对应的组件版本要求如下:
    架构 主机操作系统版本 内核版本 QEMU 版本 libvirt 版本
    x86 H84r 4.18.0-553.69.1.13.gc220c6303994.el8.x86_64 qemu-kvm-6.2.0-235.g51749aa16b.el8 libvirt-8.0.0-90.g4f8dd1cb01.el8.x86_64
    KY10 SP3 4.19.90-52.48.v2207.ky10.x86_64 qemu-kvm-6.2.0-235.g51749aa16b.ky10 libvirt-8.0.0-90.g4f8dd1cb01.ky10.x86_64
    KY10 SP3.2403 4.19.90-89.25.v2401.ky10.x86_64 qemu-kvm-6.2.0-232.g09252161d1.ky10 libvirt-8.0.0-90.g4f8dd1cb01.ky10.x86_64
    ARM KY10 SP3 4.19.90-52.48.v2207.ky10.aarch64 qemu-6.2.0-906.g271454a05e.ky10 libvirt-6.2.0-415.gf2c25be909.ky10.aarch64
    KY10 SP3.2403 4.19.90-89.25.v2401.ky10.aarch64 qemu-6.2.0-1042.g7eecd245dd.ky10 libvirt-6.2.0-463.g2ee090fe60.ky10.aarch64
    H22e 5.10.0-136.12.0.86.oe2203sp1.aarch64 qemu-6.2.0-906.g271454a05e libvirt-6.2.0-415.gf2c25be909.aarch64
  • 虚拟机引导模式需设置为 UEFI。
  • 虚拟机操作系统需支持 TPM 2.0 规格。不支持 TPM 2.0 的操作系统(包括但不限于 Windows Server 2012 及更早版本、CentOS 6 / RHEL 6、Ubuntu 14.04 及更早版本)不在支持范围内。
  • 为现有虚拟机添加 TPM 前,需先将虚拟机关机。

操作步骤

  1. 在导航栏中,选择资源清单 > 主机与虚拟机
  2. 在资源树中,右键单击目标集群、主机、或镜像,然后点击新建虚拟机
  3. 请选择虚拟机新建方式弹窗中,选择新建虚拟机,然后点击下一步
  4. 新建虚拟机弹窗中,完成相关基础配置。有关虚拟机参数的更多信息,请参阅 新建虚拟机
  5. 高级设置分区,点击引导选项,选择UEFI作为虚拟机 BIOS 模式。
  6. 硬件信息分区,点击添加硬件 > TPM
    添加成功后,在硬件项中点击 TPM,可在右侧硬件配置中查看 TPM 状态和规格。
  7. 确认配置信息无误后,点击确定