IBM Cloud Docs
设置集群密钥加密

设置集群密钥加密

虚拟私有云 经典基础架构 Satellite

创建集群后,可以通过启用密钥管理服务 (KMS) 提供程序 (例如 IBM® Key Protect for IBM Cloud® 或 Hyper Protect Crypto Services) 来保护 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。 要手动轮换密钥,请参阅 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 实例中,启用根密钥,以便集群返回到 正常 状态并再次可用。