设置集群密钥加密

虚拟私有云 传统基础设施 Satellite

创建群集后,可以通过启用密钥管理服务(KMS)提供商(如 IBM® Key Protect for IBM Cloud® )来保护 Kubernetes 秘密和存储在秘密中的任何凭证。

从 CLI 启用私钥加密

您可以启用 KMS 提供程序,更新 KMS 提供程序实例或通过 CLI 更新根密钥。

在 CLI 或 API 中支持通过在其他帐户中使用 KMS 来设置跨帐户加密。

  1. 创建 KMS 实例和根密钥。 如果要使用跨帐户 KMS 加密,请确保在要使用其 KMS 实例的帐户中创建 KMS 和根密钥。

  2. 获取先前创建的 KMS 实例的标识。

    ibmcloud oc kms instance ls
    
  3. 获取您之前创建的根密钥的 ID

    ibmcloud oc kms crk ls --instance-id KMS_INSTANCE_ID
    
  4. 启用 KMS 提供程序以加密集群中的私钥。 使用之前获取的信息完成选项。 缺省情况下,使用 KMS 提供者的私有云服务端点来下载加密密钥。 要改为使用公共云服务端点,请包含 --public-endpoint 选项。 启用过程可能需要一些时间才能完成。

    ibmcloud oc kms enable -c CLUSTER_NAME_OR_ID --instance-id KMS_INSTANCE_ID --crk ROOT_KEY_ID [--public-endpoint]
    

    在启用期间,您可能无法访问 Kubernetes 主节点,例如针对部署更新 YAML 配置。

  5. 验证 KMS 启用过程是否已完成。 当 主状态就绪密钥管理服务已启用时,将完成此过程。

    ibmcloud oc cluster get -c CLUSTER_NAME_OR_ID
    

    启用操作进行中的示例输出

    NAME:                   <cluster_name>
    ID:                     <cluster_ID>
    ...
    Master Status:          Key management service feature enablement in progress.
    

    主节点就绪时的示例输出

    NAME:                   <cluster_name>
    ID:                     <cluster_ID>
    ...
    Master Status:          Ready (1 min ago)
    ...
    Key Management Service: enabled
    

    在集群中启用 KMS 提供程序后,将自动加密所有集群私钥。

  6. 可选: 验证私钥是否已加密

密钥启用(通过 Red Hat OpenShift 启动)意味着加密切换到 KMS 提供商提供的新密钥。 通过KMS提供商启动的密钥轮换是指加密切换到现有密钥的新版本。 如果KMS提供商轮换KMS实例中的任何根密钥,请不要删除该密钥。 只有当不再使用时,才能删除根密钥。 例如,启用新密钥并确认仪表盘不再使用旧密钥后,即可删除旧密钥。 如果您删除了集群所使用的根密钥,该集群将无法使用,所有数据都将丢失,且无法恢复。 轮换根密钥时,不能对同一集群复用先前的根密钥。 同样,如果禁用根密钥,那么依赖于读取私钥的操作将失败。 但是,与删除根密钥不同,您可以重新启用已禁用的密钥,使仪表板重新可用。

从控制台启用私钥加密

您可以启用 KMS 提供程序,更新 KMS 提供程序实例或通过 IBM Cloud 控制台更新根密钥。

  1. 创建 KMS 实例和根密钥。 如果要使用跨帐户 KMS 加密,请确保在要使用其 KMS 实例的帐户中创建 KMS 和根密钥。

  2. 控制面板中选择您想要加密的仪表盘。

  3. “关键管理服务” 部分,点击“启用”。 如果您已经启用了KMS提供商,请点击更新

  4. 选择要用于加密的 密钥管理服务实例根密钥

    在启用期间,您可能无法访问 Kubernetes 主节点,例如针对部署更新 YAML 配置。

  5. 单击 启用 (或 更新)。

  6. 验证 KMS 启用过程是否已完成。 启用操作进行中的示例输出。

    Master status   KMS feature enablement in progress.
    

    主节点就绪时的输出示例。

    Master status   Ready
    

    在集群中启用 KMS 提供程序后,将自动加密所有集群私钥。

  7. 可选: 验证私钥是否已加密

密钥启用(通过 Red Hat OpenShift 启动)意味着加密切换到 KMS 提供商提供的新密钥。 通过KMS提供商启动的密钥轮换是指加密切换到现有密钥的新版本。 如果KMS提供商轮换KMS实例中的任何根密钥,请不要删除该密钥。 只有当不再使用时,才能删除根密钥。 例如,启用新密钥并确认仪表盘不再使用旧密钥后,即可删除旧密钥。 如果您删除了集群所使用的根密钥,该集群将无法使用,所有数据都将丢失,且无法恢复。 轮换根密钥时,不能对同一集群复用先前的根密钥。 同样,如果禁用根密钥,那么依赖于读取私钥的操作将失败。 但是,与删除根密钥不同,您可以重新启用已禁用的密钥,使仪表板重新可用。

轮换集群的根密钥

要轮换用于加密集群的根密钥,请重复步骤以启用 KMS 加密。 轮换根密钥时,不能对同一集群复用先前的根密钥。

您可以从 KMS 实例手动轮换根密钥。 此操作将使用新的根密钥在集群中自动重新启用 KMS。 要手动旋转按键,请参阅 旋转按键

验证密钥加密

在 Red Hat OpenShift on IBM Cloud 集群中启用 KMS 提供程序后,可以通过禁用根密钥来验证集群私钥是否已加密。 当您禁用根密钥时,集群无法再解密私钥并变为不可用,这表示私钥已加密。

确保您拥有 IBM Cloud IAM 管理员平台和群集的管理器服务访问角色。

  1. 要检查是否启用了 KMS 加密,请在以下命令的输出中验证 密钥管理服务 状态是否设置为 enabled

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  2. 访问 Red Hat OpenShift 集群

  3. 验证您是否可以列出集群中的私钥。

    oc get secrets --all-namespaces
    
  4. 在 KMS 实例中,禁用用于加密集群的根密钥。 如果使用来自其他帐户的 KMS 和 CRK 对集群进行加密,那么只能从其所在的帐户禁用 CRK。

  5. 等待集群检测对根密钥的更改。

  6. 请尝试列出您的私钥。 您收到超时错误,因为无法再连接到集群。 如果尝试通过运行 ibmcloud oc cluster config 来设置集群的上下文,那么该命令将失败。

    oc get secrets --all-namespaces
    

    示例输出

    Unable to connect to the server: dial tcp 169.48.110.250:32346: i/o timeout
    
  7. 检查集群是否处于 warning 状态。 在再次启用根密钥之前,集群将保持此状态并且不可用。

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  8. 在 KMS 实例中,启用根密钥,以便集群返回到 正常 状态并再次可用。