设置集群密钥加密
虚拟私有云 传统基础设施 Satellite
创建群集后,可以通过启用密钥管理服务(KMS)提供商(如 IBM® Key Protect for IBM Cloud® )来保护 Kubernetes 秘密和存储在秘密中的任何凭证。
从 CLI 启用私钥加密
您可以启用 KMS 提供程序,更新 KMS 提供程序实例或通过 CLI 更新根密钥。
在 CLI 或 API 中支持通过在其他帐户中使用 KMS 来设置跨帐户加密。
-
创建 KMS 实例和根密钥。 如果要使用跨帐户 KMS 加密,请确保在要使用其 KMS 实例的帐户中创建 KMS 和根密钥。
-
获取先前创建的 KMS 实例的标识。
ibmcloud oc kms instance ls -
获取您之前创建的根密钥的 ID。
ibmcloud oc kms crk ls --instance-id KMS_INSTANCE_ID -
启用 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 配置。
-
验证 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 提供程序后,将自动加密所有集群私钥。
-
可选: 验证私钥是否已加密。
密钥启用(通过 Red Hat OpenShift 启动)意味着加密切换到 KMS 提供商提供的新密钥。 通过KMS提供商启动的密钥轮换是指加密切换到现有密钥的新版本。 如果KMS提供商轮换KMS实例中的任何根密钥,请不要删除该密钥。 只有当不再使用时,才能删除根密钥。 例如,启用新密钥并确认仪表盘不再使用旧密钥后,即可删除旧密钥。 如果您删除了集群所使用的根密钥,该集群将无法使用,所有数据都将丢失,且无法恢复。 轮换根密钥时,不能对同一集群复用先前的根密钥。 同样,如果禁用根密钥,那么依赖于读取私钥的操作将失败。 但是,与删除根密钥不同,您可以重新启用已禁用的密钥,使仪表板重新可用。
从控制台启用私钥加密
您可以启用 KMS 提供程序,更新 KMS 提供程序实例或通过 IBM Cloud 控制台更新根密钥。
-
创建 KMS 实例和根密钥。 如果要使用跨帐户 KMS 加密,请确保在要使用其 KMS 实例的帐户中创建 KMS 和根密钥。
-
从 控制面板中选择您想要加密的仪表盘。
-
在 “关键管理服务” 部分,点击“启用”。 如果您已经启用了KMS提供商,请点击更新。
-
选择要用于加密的 密钥管理服务实例 和 根密钥。
在启用期间,您可能无法访问 Kubernetes 主节点,例如针对部署更新 YAML 配置。
-
单击 启用 (或 更新)。
-
验证 KMS 启用过程是否已完成。 启用操作进行中的示例输出。
Master status KMS feature enablement in progress.主节点就绪时的输出示例。
Master status Ready在集群中启用 KMS 提供程序后,将自动加密所有集群私钥。
-
可选: 验证私钥是否已加密。
密钥启用(通过 Red Hat OpenShift 启动)意味着加密切换到 KMS 提供商提供的新密钥。 通过KMS提供商启动的密钥轮换是指加密切换到现有密钥的新版本。 如果KMS提供商轮换KMS实例中的任何根密钥,请不要删除该密钥。 只有当不再使用时,才能删除根密钥。 例如,启用新密钥并确认仪表盘不再使用旧密钥后,即可删除旧密钥。 如果您删除了集群所使用的根密钥,该集群将无法使用,所有数据都将丢失,且无法恢复。 轮换根密钥时,不能对同一集群复用先前的根密钥。 同样,如果禁用根密钥,那么依赖于读取私钥的操作将失败。 但是,与删除根密钥不同,您可以重新启用已禁用的密钥,使仪表板重新可用。
轮换集群的根密钥
要轮换用于加密集群的根密钥,请重复步骤以启用 KMS 加密。 轮换根密钥时,不能对同一集群复用先前的根密钥。
您可以从 KMS 实例手动轮换根密钥。 此操作将使用新的根密钥在集群中自动重新启用 KMS。 要手动旋转按键,请参阅 旋转按键。
验证密钥加密
在 Red Hat OpenShift on IBM Cloud 集群中启用 KMS 提供程序后,可以通过禁用根密钥来验证集群私钥是否已加密。 当您禁用根密钥时,集群无法再解密私钥并变为不可用,这表示私钥已加密。
确保您拥有 IBM Cloud IAM 管理员平台和群集的管理器服务访问角色。
-
要检查是否启用了 KMS 加密,请在以下命令的输出中验证 密钥管理服务 状态是否设置为
enabled。ibmcloud oc cluster get -c <cluster_name_or_ID> -
验证您是否可以列出集群中的私钥。
oc get secrets --all-namespaces -
在 KMS 实例中,禁用用于加密集群的根密钥。 如果使用来自其他帐户的 KMS 和 CRK 对集群进行加密,那么只能从其所在的帐户禁用 CRK。
-
等待集群检测对根密钥的更改。
-
请尝试列出您的私钥。 您收到超时错误,因为无法再连接到集群。 如果尝试通过运行
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 -
检查集群是否处于 warning 状态。 在再次启用根密钥之前,集群将保持此状态并且不可用。
ibmcloud oc cluster get -c <cluster_name_or_ID> -
在 KMS 实例中,启用根密钥,以便集群返回到 正常 状态并再次可用。