5.2. 为持久性卷加密创建存储类

使用以下步骤创建加密的存储类,使用外部密钥管理系统(KMS)进行持久性卷加密。持久卷加密仅可用于 RBD PV。

先决条件

  • OpenShift Container Storage 集群处于 Ready 状态。
  • 在外部密钥管理系统 (KMS) 上,

    • 确保存在具有令牌的策略,并且启用了 Vault 中的键值后端路径。请参阅在 Vault 中启用键值和策略
    • 确保您在 Vault 服务器上使用签名的证书。
  • 在租户命名空间中创建一个 secret,如下所示:

    • 在 OpenShift Container Platform web 控制台中进入 Workloads → Secrets
    • Create → Key/value secret
    • 输入 Secret Name 作为 ceph-csi-kms-token
    • 输入 Key 作为 token
    • 输入 Value。它是来自 Vault 的令牌。您可以单击 Browse 来选择并上传含有令牌的文件,或者直接在文本框中输入令牌。
    • 点击 Create
注意

只有在所有使用 ceph-csi-kms-token 的加密 PVC 已被删除后,才能删除令牌。

流程

  1. 导航到 StorageStorage Classes
  2. Create Storage Class
  3. 输入存储类 NameDescription
  4. Reclaim Policy 选择 Delete 或 Retain。默认情况下,选择 Delete。
  5. 选择 RBD Provisioner openshift-storage.rbd.csi.ceph.com,这是用于调配持久卷的插件。
  6. 选择 存储池,其中卷数据将存储到列表中或创建新池。
  7. 选中启用加密复选框。

    1. 默认情况下,Key Management Service Provider 设置为 Vault。
    2. 输入 Vault Service Name、Vault 服务器的主机地址 ('https://<hostname or ip>')、端口号
    3. 展开 Advanced Settings,以根据您的 Vault 配置输入其他设置和证书详情。

      1. 后端路径中输入为 OpenShift Container Storage 专用且唯一的 Key Value secret 路径。
      2. (可选)输入 TLS 服务器名称Vault Enterprise 命名空间
      3. 通过上传相应的 PEM 编码证书文件提供 CA 证书客户端证书客户端私钥
      4. 点击 Save
    4. 连接
  8. 检查外部密钥管理服务连接详细信息。要修改信息,请点击 Change connection details 并编辑字段。
  9. 点击 Create
  10. 如果 Hashicorp Vault 设置不允许自动检测由后端路径使用的 Key/Value(KV)机密引擎 API 版本,请编辑 configmap 以添加 VAULT_BACKEND 参数。

    注意

    VAULT_BACKEND 是一个可选参数,它添加到 configmap 中,以指定与后端路径关联的 KV secret 引擎 API 版本。确保值与为后端路径设置的 KV secret 引擎 API 版本匹配,否则可能会导致持久性卷声明(PVC)创建过程中失败。

    1. 识别新创建的存储类使用的 encryptionKMSID

      1. 在 OpenShift Web 控制台中,导航到 Storage → Storage Classes
      2. Storage class name → YAML 标签页。
      3. 捕获存储类使用的 encryptionKMSID

        Example:

        encryptionKMSID: 1-vault
    2. 在 OpenShift Web 控制台中,导航到 Workloads → ConfigMaps
    3. 要查看 KMS 连接详情,请单击点击 csi-kms-connection-details
    4. 编辑 configmap。

      1. 点击 Action 菜单 (⋮)Edit ConfigMap
      2. 添加 VAULT_BACKEND 参数,具体取决于为之前标识的 encryptionKMSID 配置的后端。

        您可以为 KV secret engine API 分配 kv,为 KV 机密引擎 API 版本 1 和 kv-v2 分配版本 2,作为 VAULT_BACKEND 参数。

        Example:

        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: csi-kms-connection-details
        [...]
        data:
          1-vault: >-
        
            {
              "KMS_PROVIDER": "vaulttokens",
              "KMS_SERVICE_NAME": "vault",
              [...]
              "VAULT_BACKEND": "kv-v2"
            }
      3. 点击 Save
重要

红帽与技术合作伙伴合作,将本文档作为为客户提供服务。但是,红帽不为 Hashicorp 产品提供支持。有关此产品的技术协助,请联系 Hashicorp

后续步骤