在ACK@Edge Pro版集群中,您可以使用在阿里云密钥管理服务KMS(Key Management Service)中创建的密钥加密Kubernetes Secret密钥。本文主要介绍如何使用阿里云密钥管理服务(KMS)中管理的密钥对ACK@Edge Pro版集群中的Kubernetes Secret密钥数据进行落盘加密。
前提条件
- 由于原密钥管理服务(KMS)升级为专属KMS产品形态,因此2022年3月31号后新的KMS服务用户需要开通专属KMS基础版服务,请您根据快速入门的说明开启专属KMS基础版,并创建Aliyun_AES_256类型的主密钥。具体操作,请参见专属KMS基础版快速入门。
- 只支持使用创建类型为User的KMS密钥,不支持使用创建类型为Service的服务密钥。
- 您在开启落盘加密功能时,不要使用阿里云KMS密钥管理服务的OpenAPI或控制台禁用、删除或计划删除集群Secret加解密选择的密钥,否则会使集群API Server不可用,导致无法正常获取Secret和ServiceAccount等对象,从而影响业务应用的正常运行。
- 阿里云账号需要授权容器服务账号使用AliyunCSManagedSecurityRole系统角色的权限。如果您使用的账号未授权,在创建边缘Pro版集群或修改已有边缘Pro版集群过程中开启Secret落盘加密时,系统会提示您进行安全系统角色授权。
- 如果当前登录账号是RAM用户或RAM角色,请确保该RAM用户或RAM角色有AliyunKMSCryptoAdminAccess系统权限,授权流程请参考为RAM用户或RAM角色授权。
- KMS对API调用(以万次调用为单位)和用户上传密钥的托管会收取一定费用。当您的Pro集群开启了Secret落盘加密特性后,kube-apiserver对Secret实例的读写操作均会调用KMS服务的加解密API,默认情况下集群中Service Account实例的生命周期中会涉及大量的Secret读写操作,如果您集群中有较多的Service Account实例或Secret实例将会产生较大的KMS API使用计费,请务必保证您的账号内有足够的余额。如您对计费有疑问或是账户余额不足时,可以选择关闭对应集群的Secret落盘加密功能,具体操作,请参见在已创建的ACK@Edge Pro版集群中开启或关闭Secret落盘加密。当您欠费超过七天后,会影响整个集群的管控能力。关于KMS服务计费的详细说明,请参见KMS计费说明。
背景信息
在Kubernetes集群中,我们通常使用Secrets密钥模型存储和管理业务应用涉及的敏感信息,比如应用密码、TLS证书、Docker镜像下载凭据等敏感信息。Kubernetes会将所有的这些Secrets密钥对象数据存储在集群对应的etcd中。更多关于密钥的信息,请参见Secrets。
在ACK@Edge Pro版集群中,您可以使用在密钥管理服务(KMS)中创建的密钥加密Kubernetes Secret密钥,加密过程基于Kubernetes提供的KMS Encryption Provider机制,使用信封加密的方式对存储在etcd中的Kubernetes Secret密钥进行自动加密和解密,信封加密的详细介绍请参见使用KMS信封加密在本地加密和解密数据,以下介绍Kubernetes Secret密钥进行加密和解密的过程:
- 当一个业务密钥需要通过Kubernetes Secret API存储时,数据会首先被API Server生成的一个随机的数据加密密钥进行加密,然后该数据密钥会被指定的阿里云KMS密钥加密为一个密文密钥存储在etcd中。
- 解密Kubernetes Secret密钥时,系统会首先调用阿里云KMS服务的解密OpenAPI进行密文密钥的解密,然后使用解密后的明文密钥对Secret数据解密并最终返回给用户。
在新建的ACK@Edge Pro版集群中开启Secret落盘加密
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面中,单击页面右上角的创建集群。
- 在创建集群页面,单击ACK边缘托管版页签,在页签最下方展开显示高级选项,找到Secret落盘加密,选中选择KMS密钥,在下拉框中选择KMS密钥ID。关于创建ACK@Edge Pro版集群的其他配置信息,请参见创建ACK@Edge Pro版集群。
登录操作审计控制台,在左侧导航栏单击事件查询,在事件查询页面有使用aliyuncsmanagedsecurityrole系统角色的加密和解密事件日志,则说明该集群后台已成功开启Secret落盘加密特性。
在已创建的ACK@Edge Pro版集群中开启或关闭Secret落盘加密
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面单击目标Pro集群名称。
- 在集群详情页面单击基本信息页签,在基本信息区域中打开Secret落盘加密开关。首次开启时,请您根据提示单击前往RAM进行授权进入云资源访问授权页面,然后单击同意授权完成授权。说明
- 如需开启落盘加密功能,请确保当前登录的RAM用户或RAM角色对该集群有RBAC的管理员或运维人员权限,授权流程请参考配置RAM用户或RAM角色RBAC权限。
- 如需授权aliyuncsmanagedsecurityrole角色,请确保使用阿里云账号(主账号)登录或有RAM管理权限的RAM用户或RAM角色登录。
- 在弹出的Secret落盘加密对话框中,选择已有的KMS密钥。然后单击确定。如果您未创建KMS密钥,请单击创建密钥,前往密钥管理服务控制台创建密钥。具体操作,请参见创建密钥。
当集群状态由更新中变为运行中时,说明该集群的Secret落盘加密特性已开启。
说明 当您不需要Secret落盘加密功能时,可以在基本信息区域关闭Secret落盘加密。
使用自动轮转密钥开启Secret落盘加密
您可以使用KMS密钥管理服务中的自动轮转密钥进行Secret的落盘加密。当密钥发生自动轮转时,存量的Secret仍旧使用轮转前的密钥版本进行加密,新增的Secret将使用轮转后的新密钥版本进行加密。关于自动轮转密钥具体操作,请参见自动轮转密钥。
如需确保存量的Secret也使用新的密钥版本进行加密,请在密钥发生自动轮转后,执行以下命令强制使用新的密钥版本重新加密所有的存量Secret:
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="TIME"
说明 将TIME
替换为指示轮替发生时间的字符串(例如:20220101-010101)。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/169508.html