赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 弹性容器实例 ECI
  4. 安全合规
  5. 容器应用安全
  6. 使用阿里云KMS进行Secret的落盘加密

使用阿里云KMS进行Secret的落盘加密

  • 容器应用安全
  • 发布于 2025-04-15
  • 0 次阅读
文档编辑
文档编辑

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

索引

  • 前提条件

  • Secret加密介绍

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

  • 使用自动轮转密钥开启Secret落盘加密

  • 常见问题

前提条件

条件项

说明

KMS密钥

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

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

重要

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

授权

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

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

  • RAM用户或RAM角色:

    • 已确保对该集群有RBAC的管理员或运维人员权限。具体操作,请参见使用RBAC授予集群内资源操作权限。

    • 已授予AliyunKMSCryptoAdminAccess系统权限。具体操作,请参见为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密钥进行信封加密。

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

为新建的ACK Pro版集群开启Secret落盘加密

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

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

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

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

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

为已创建的ACK Pro版集群开启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')"

常见问题

开启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": [
          "*"
      ]
  }
相关文章

启用安全策略管理 2025-04-15 17:15

为了满足集群合规性要求、提升集群安全性,推荐您启用安全策略管理功能。安全策略管理功能提供了符合Kubernetes容器应用场景的安全策略规则,包括Infra(基础设施层资源)、Compliance(Kubernetes合规规范)、PSP(基于PodSecurityPolicy能力的拓展)和K8s-g

容器安全策略规则库说明 2025-04-15 17:15

您可以为Pod配置安全策略,验证Pod部署和更新的请求是否安全。ACK集群策略管理功能提供了四类内置规则库,包括Compliance、Infra、K8s-general和PSP。 规则介绍 当前容器服务ACK容器安全策略规则库包含以下四类规则模板:<

配置巡检检查集群工作负载 2025-04-15 17:15

ACK提供巡检功能,帮助您扫描集群中工作负载配置的安全隐患。执行巡检任务后,系统会生成巡检报告,您可以根据报告结果查看并处理风险项,实时了解集群中工作负载的健康状态。 前提条件

使用Keycloak OIDC Provider进行身份认证 2025-04-15 17:15

本文介绍如何在ACK托管集群中部署Keycloak服务,并将Keycloak作为K8s OpenID Connect的认证服务器,实现在ACK托管集群上的身份认证。 前提条件 已创建Kubernetes托管版集群,且集群为1.22及以上版本。

使用Vault作为KMS服务 2025-04-15 17:15

Vault是一个基于身份的密钥管理和数据加密系统,提供对Token、密码、证书、API Key等常见敏感凭据的安全存储和控制,可有效解决应用系统中对敏感信息的硬编码问题。本文介绍如何在ACK Serverless集群中部署和使用Vault。 前提条件

ACK对接外部LDAP验证源 2025-04-15 17:15

随着企业客户上云进程的推进,有些客户有自己的账户体系,而上云后这些体系如何平滑迁移到云上?如何避免大量账号的注册和多份用户名密码的管理?为解决这些问题,本文介绍如何在阿里云上完成对自建LDAP( 轻量目录访问协议)的对接过程。 背景信息

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号