有奖捉虫:云通信与企业服务文档专题,速来> HOT
文档中心 > 容器服务 > TKE 标准集群指南 > 集群管理 > 使用 KMS 进行 Kubernetes 数据加密

操作场景

在腾讯云 TKE 独立集群和托管集群中,使用密钥管理系统(Key Management Service,KMS)实现 Kubernetes 数据源加密,并提供丰富的密钥管理功能,针对 Kubernetes 集群中 Secret 提供强大的加密/解密能力。本文主要介绍如何通过 KMS 对 Kubernetes 集群进行数据加密。

基本概念

密钥管理系统 KMS

密钥管理系统(Key Management Service,KMS)是一款安全管理类服务,它使用经过第三方认证的硬件安全模块 HSM(Hardware Security Module)来生成和保护密钥。KMS 可以帮助用户轻松创建和管理密钥,满足用户多应用多业务的密钥管理需求,同时符合监管和合规要求。

数据加密

在 Kubernetes 中,可以使用 Secrets 对象来存储集群内部使用的各类敏感数据,例如数据库用户名、密码、证书、OAuth Token、SSH KEY 等,从而使得敏感信息和普通配置文件有效解耦。默认情况下,Secrets 存储在 etcd 中。
在腾讯云 TKE 标准集群的独立集群和托管集群中,您可以使用在 KMS 中创建的密钥来加密 Kubernetes Secrets 数据。KMS 加密过程基于 Kubernetes 提供的 KMS Encryption Provider 机制,使用信封加密的方式对存储在 etcd 中的 Kubernetes Secrets 数据进行自动加密和解密。Kubernetes Secrets 密钥加密和解密的过程如下:
当一个业务密钥需要通过 Kubernetes Secrets API 存储时,数据会首先被 API Server 生成的一个随机的数据加密密钥加密。然后,该数据密钥会被指定的 KMS 密钥加密为一个密文密钥,并存储在 etcd 中。
解密 Kubernetes Secrets 密钥时,系统会首先调用 KMS 的解密 OpenAPI 进行密文密钥的解密。然后,使用解密后的明文密钥对 Secrets 数据进行解密,并最终返回给用户。

前提条件

在使用腾讯云 KMS 加密 Kubernetes Secret 之前,请确保您已创建符合以下条件的容器服务独立集群或托管集群:
Kubernetes 版本为1.18.0及以上。
Etcd 版本为3.0及以上。
说明
如需检查版本,您可以前往容器服务控制台 集群管理 页面,选择集群并查看集群基本信息

使用限制及注意事项

使用腾讯云 KMS 加密 Kubernetes Secret 会产生计费。KMS 对 API 调用(以万次调用为单位)和用户上传密钥的托管会收取一定费用,关于 KMS 服务计费的详细说明,请参见 KMS 计费说明
开启数据加密功能后,请勿通过 KMS 的 OpenAPI 或控制台禁用、删除或计划删除集群数据加解密选择的密钥,否则会使集群 API Server 不可用,导致 Secret 和 ServiceAccount 等对象无法正常获取,影响业务应用的正常运行。

操作步骤

创建集群时开启数据加密

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 集群管理页面,单击集群列表上方的新建
3. 选择标准集群,单击创建
4. 创建集群页面,单击展开高级设置,单击

开启数据加密。如下图所示:



5. 开启数据加密后,选择地域和 KMS 密钥。如下图所示:



如果您尚未创建 KMS 密钥,请单击新建 KMS 密钥,前往 密钥管理系统(合规) 控制台创建密钥。具体操作请参见 创建密钥
6. 创建集群的其他配置项详情请参见 通过控制台创建集群。配置结束后,单击完成
7. 创建完成的集群将出现在 集群列表 中。您可单击集群 ID 进入集群详情页面,在集群基本信息中查看数据加密功能开启状态。

在已创建集群中开启数据加密

说明:
如果您需要开启数据加密功能,请确保您当前登录的账号具有 CAM 权限,并且在该集群中具有 RBAC 的管理员或运维人员权限。更多信息请参见 TKE Kubernetes 对象级权限控制
如果您需要授权 TKE_QCSRole 角色,请确保您使用的是腾讯云账号(主账号)或拥有 CAM 管理权限的用户或角色。有关服务授权相关角色权限的说明,请参见相关文档。更多信息请参见 服务授权相关角色权限说明
1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 集群管理页面,选择需开启数据加密的集群 ID,进入集群详情页。
3. 在集群基本信息中,单击数据加密右侧的

,开启数据加密。如下图所示:



4. ETCD 数据加密中,选择地域和已有的 KMS 密钥,单击提交。如下图所示:




关闭数据加密

如果您不再需要使用数据加密功能,可在容器服务控制台关闭该功能。
1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 集群管理页面,选择需关闭数据加密的集群 ID,进入集群详情页。
3. 在集群基本信息中,单击数据加密右侧的

,关闭数据加密。