优惠中心

新用户5折优惠券

邮件推送 - 5.4折优惠

了解更多

如何在ACK Pro集群中使用阿里云KMS进行Secret的落盘加密

更新时间:2025-01-22 08:58

ACK Pro集群中,您可以使用在阿里云密钥管理服务KMS(Key Management Service)中创建的密钥加密Kubernetes Secret密钥。本文主要介绍如何使用KMS管理的密钥对ACK Pro集群中的Kubernetes Secret密钥数据进行落盘加密。

前提条件

条件项

说明

条件项

说明

KMS密钥

已在密钥管理服务控制台创建KMS密钥,且密钥地域与目标ACK Pro集群所在地域保持统一。

ACK Pro集群支持默认密钥、软件密钥和硬件密钥,您可以按业务需求选择。关于KMS密钥管理的更多信息和相关操作,请参见密钥管理快速入门;关于KMS服务计费的详细说明,请参见产品计费

重要

开启落盘加密功能时,请勿使用KMS的控制台或OpenAPI禁用或删除集群Secret加解密选择的密钥,否则会导致集群API Server不可用,继而无法正常获取Secret和ServiceAccount等对象,影响业务应用的正常运行。

授权

根据您使用账号类型的不同,确认已完成如下授权操作。

  • 阿里云账号:已授权容器服务账号使用AliyunCSManagedSecurityRole系统角色的权限。如果您使用的账号未授权,开启Secret落盘加密时,ACK控制台会提示您进行KMS安全系统角色授权。您可以根据控制台指引完成授权,也可以访问云资源访问授权页面完成授权。

  • RAM用户或RAM角色:

Secret加密介绍

在Kubernetes集群中,通常使用Secret密钥模型存储和管理业务应用涉及的敏感信息,例如应用密码、TLS证书、Docker镜像下载凭据等敏感信息。Kubernetes会将所有的Secret密钥对象数据存储在集群对应的etcd中。关于密钥的更多信息,请参见Secrets

ACK Pro集群中,您可以使用在KMS中创建的密钥加密Kubernetes Secret密钥。KMS加密过程基于Kubernetes提供的KMS Encryption Provider机制,使用信封加密的方式对存储在etcd中的Kubernetes Secret密钥进行自动加密和解密。Kubernetes Secret密钥加密和解密的过程如下。

  1. 当一个业务密钥需要通过Kubernetes Secret API存储时,数据会首先被API Server生成的一个随机的数据加密密钥加密,然后该数据密钥会被指定的KMS密钥加密为一个密文密钥存储在etcd中。

  2. 解密Kubernetes Secret密钥时,系统会首先调用KMS的解密OpenAPI进行密文密钥的解密,然后使用解密后的明文密钥对Secret数据解密,并最终返回给您。

更多信息,请参见KMS Encryption Provider机制使用KMS密钥进行信封加密

KMS v2

从Kubernetes 1.31版本开始,ACK Pro集群优先使用社区KMS v2接口实现落盘加密,KMS v2在集群中支持管理更多的Secret实例,且拥有更好的加解密性能。了解更多关于KMS v2加解密流程,请参见KMS v2

如何将当前集群已使用的KMS v1接口升级到KMS v2接口,请参见如何升级使用KMS v2进行Secret落盘加密?

说明

Kubernetes社区在1.27版本已经标记KMS v1为废弃状态,并在1.29版本开始默认禁用v1接口。为了保证兼容性,ACK Pro集群仍然通过设置KMS v1特性门控开启使用v1接口。

为ACK Pro集群开启Secret落盘加密

为新建的ACK Pro版集群开启Secret落盘加密
为已创建的ACK Pro版集群开启Secret落盘加密
  1. 登录容器服务管理控制台,在左侧导航栏单击集群列表

  2. 集群列表页面,单击页面右上角的集群模板,然后在选择集群模板页面,找到Pro 托管集群并单击创建

  3. ACK托管版页签最下方,展开显示高级选项,找到Secret落盘加密,勾选选择KMS密钥,然后在下拉框中选择KMS密钥ID。按需配置其他配置项后,单击创建集群。创建ACK Pro集群的其他配置,请参见创建ACK Pro版集群Secret加密

登录操作审计控制台,在左侧导航栏单击事件查询,如果事件查询页面存在使用aliyuncsmanagedsecurityrole系统角色的加密和解密事件日志,表明该集群后台已成功开启Secret落盘加密特性。

当您不需要使用Secret落盘加密功能时,可在集群列表单击集群名称,在集群信息页面单击基本信息页签,然后在基本信息区域关闭Secret落盘加密开关。

  1. 登录容器服务管理控制台,在左侧导航栏单击集群列表

  2. 集群列表页面,单击目标集群名称,然后在集群详情页面单击基本信息页签,在基本信息区域打开Secret落盘加密开关。

    首次开启时,请根据提示单击前往RAM进行授权进入云资源访问授权页面,然后单击同意授权完成授权。

    说明
    • 如需开启落盘加密功能,请确保当前登录的RAM用户或RAM角色对该集群有RBAC的管理员或运维人员权限。具体操作,请参考使用RBAC授予集群内资源操作权限

    • 如需授权aliyuncsmanagedsecurityrole角色,请确保已使用阿里云账号(主账号)或拥有RAM管理权限的RAM用户或RAM角色登录。

  3. 在弹出的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="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"

常见问题

如何升级使用KMS v2进行Secret落盘加密?

如使用KMS v2进行Secret落盘加密,请确保您的ACK Pro集群为1.31或以上版本。

  • 如果您的集群之前未开启Secret落盘加密功能,请参考为ACK Pro集群开启Secret落盘加密为集群开启加密功能。开启后,集群中的Secret实例在落盘和读取流程中会自动使用KMS v2接口进行加解密。

  • 如果您的集群已开启Secret落盘加密功能,您可以在业务低峰时通过以下任一方式轮转落盘密钥的加密方式。

    • 方式一:执行kubectl get secrets --all-namespaces -o json | kubectl replace -f - 命令,该命令会通过KMS v2接口的加密方式轮转所有已落盘Secrets实例的加密方式。

    • 方式二:登录容器服务管理控制台,在集群信息页面的基本信息页签找到Secret 落盘加密并关闭。关闭流程会触发集群所有落盘Secrets实例的轮转。等待一段时间后,参考为ACK Pro集群开启Secret落盘加密为集群重新开启加密功能,开启成功后,集群中的所有Secrets实例会使用KMS v2接口落盘加密。

开启Secret落盘加密后,通过kubectl命令获取到的Secret是加密后的密文吗?

不是。Secret落盘加密功能所加密的是etcd中存储的原始数据,即开启Secret落盘加密后,etcd中存储的Secret数据将是加密后的密文数据。但客户端通过API Server提供的Secret API获取到的Secret数据仍旧是原始的明文数据。

如何禁止RAM用户或RAM角色在已创建的ACK Pro集群中开启或关闭Secret落盘加密功能

您可以通过为RAM用户或RAM角色授予如下拒绝操作的RAM权限策略,禁止该RAM用户或RAM角色在已创建的ACK Pro集群中开启或关闭Secret落盘加密功能。具体操作,请参见使用RAM授予集群及云资源访问权限

  {
      "Action": [
          "cs:UpdateKMSEncryption"
      ],
      "Effect": "Deny",
      "Resource": [
          "*"
      ]
  }
  • 本页导读 (1)
  • 前提条件
  • Secret加密介绍
  • KMS v2
  • 为ACK Pro集群开启Secret落盘加密
  • 使用自动轮转密钥开启Secret落盘加密
  • 常见问题
  • 如何升级使用KMS v2进行Secret落盘加密?
  • 开启Secret落盘加密后,通过kubectl命令获取到的Secret是加密后的密文吗?
  • 如何禁止RAM用户或RAM角色在已创建的ACK Pro集群中开启或关闭Secret落盘加密功能
文档反馈
phone 联系我们

立即和Alibaba Cloud在线服务人员进行交谈,获取您想了解的产品信息以及最新折扣。

alicare alicarealicarealicare