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