news 2026/6/19 16:48:01

云原生密钥管理:Sealed Secrets与Vault

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云原生密钥管理:Sealed Secrets与Vault


在云原生环境中,密钥管理是保障系统安全的关键环节。密钥就像是一把打开系统资源的“钥匙”,如果管理不当,就会面临密钥泄露、管理失败等严重问题,从而威胁整个云原生系统的安全。而 Sealed Secrets 和 Vault 就是解决这些问题的有效工具。接下来,我们将深入了解它们的原理、使用方法,并通过实操演示,帮助你掌握在 Kubernetes 中安全管理密钥的技能。

Sealed Secrets 和 Vault 密钥管理原理

Sealed Secrets 原理

Sealed Secrets 是一个用于在 Kubernetes 中安全管理密钥的工具。它的核心原理是利用非对称加密技术,将敏感的密钥信息(如密码、令牌等)加密成一种称为 SealedSecret 的对象。

简单来说,非对称加密就像是有两把钥匙,一把是公钥,一把是私钥。公钥可以公开,任何人都可以用它来加密数据,但只有对应的私钥才能解密这些数据。在 Sealed Secrets 中,Kubernetes 集群会生成一个公钥,用户使用这个公钥将普通的 Secret 对象加密成 SealedSecret 对象。这个 SealedSecret 对象可以安全地存储在版本控制系统中,因为没有私钥,即使数据被泄露,攻击者也无法解密其中的敏感信息。

例如,假设你有一个应用程序需要使用数据库的用户名和密码,你可以将这些信息创建成一个普通的 Secret 对象,然后使用 Sealed Secrets 的公钥将其加密。加密后的 SealedSecret 对象可以放心地提交到代码仓库,当部署到 Kubernetes 集群时,集群中的控制器会使用私钥将其解密成普通的 Secret 对象,供应用程序使用。

Vault 原理

Vault 是一个功能强大的密钥管理系统,它提供了集中化的密钥管理和访问控制。Vault 的原理基于一个核心的安全存储库,所有的密钥、证书和其他敏感信息都存储在这个存储库中。

Vault 通过身份验证和授权机制来控制对这些敏感信息的访问。用户或应用程序需要先通过身份验证,获得一个令牌,然后使用这个令牌来请求访问存储在 Vault 中的密钥。Vault 会根据预先配置的策略来决定是否授予访问权限。

例如,某个微服务需要访问数据库的密钥,它首先要向 Vault 进行身份验证,提供自己的身份信息。如果验证通过,Vault 会根据策略判断该微服务是否有权限访问数据库密钥。如果有权限,Vault 会将密钥返回给微服务,并且可以设置密钥的有效期,过期后自动失效,从而增强了安全性。

Sealed Secrets 和 Vault 使用方法

Sealed Secrets 使用方法

Sealed Secrets 的使用主要分为以下几个步骤:

  • 安装 Sealed Secrets 控制器:在 Kubernetes 集群中安装 Sealed Secrets 控制器,它负责处理 SealedSecret 对象的解密操作。可以使用 Helm 或 YAML 文件进行安装。例如,使用 Helm 安装的命令如下:
helm repoaddsealed-secrets https://bitnami-labs.github.io/sealed-secrets helminstallsealed-secrets-controller sealed-secrets/sealed-secrets
  • 生成 SealedSecret 对象:首先创建一个普通的 Secret 对象,然后使用 kubeseal 命令将其加密成 SealedSecret 对象。例如,创建一个包含数据库用户名和密码的 Secret 对象:
kubectl create secret generic db -secret --from -literal=username=admin --from -literal=password=123456-o yaml --dry -run=client>db - secret.yaml

接着使用 kubeseal 命令进行加密:

kubeseal<db - secret.yaml>db - sealed - secret.yaml
  • 部署 SealedSecret 对象:将生成的 SealedSecret 对象部署到 Kubernetes 集群中,Sealed Secrets 控制器会自动将其解密成普通的 Secret 对象。
kubectl apply -f db - sealed - secret.yaml
Vault 使用方法

Vault 的使用步骤如下:

  • 安装和启动 Vault:可以从官方网站下载 Vault 的二进制文件,然后在服务器上启动 Vault 服务。例如,在 Linux 系统上启动 Vault 开发模式:
vault server -dev
  • 初始化和 unseal Vault:首次启动 Vault 时,需要进行初始化操作,生成根令牌和 unseal 密钥。然后使用 unseal 密钥对 Vault 进行解封,使其可以正常使用。例如,初始化 Vault:
vault operator init

使用 unseal 密钥解封:

vault operator unseal<unseal - key>
  • 存储和获取密钥:使用 Vault 的 API 或命令行工具将密钥存储到 Vault 中,并在需要时获取。例如,存储一个数据库密钥:
vault kv put secret/dbusername=adminpassword=123456

获取密钥:

vault kv get secret/db

Sealed Secrets 和 Vault 安装、配置示例

Sealed Secrets 安装、配置
  • 安装:如前面所述,可以使用 Helm 进行安装。安装完成后,检查 Sealed Secrets 控制器是否正常运行:
kubectl get pods -n kube - system|grepsealed - secrets - controller
  • 配置:Sealed Secrets 通常不需要太多的额外配置。但可以根据需要调整一些参数,如加密算法等。可以通过修改 Sealed Secrets 控制器的部署文件来进行配置。
Vault 安装、配置
  • 安装:从官方网站下载适合你操作系统的 Vault 二进制文件,然后将其添加到系统的 PATH 环境变量中。
  • 配置:创建一个 Vault 的配置文件,指定存储后端、监听地址等信息。例如,创建一个名为 vault.hcl 的配置文件:
storage "file" { path = "/vault/data" } listener "tcp" { address = "0.0.0.0:8200" tls_disable = 1 }

然后使用该配置文件启动 Vault:

vault server -config=vault.hcl

实操演示:在 Kubernetes 中安全管理密钥

使用 Sealed Secrets 管理密钥
  1. 创建普通 Secret 对象:按照前面的示例,创建一个包含敏感信息的普通 Secret 对象。
  2. 加密成 SealedSecret 对象:使用 kubeseal 命令将普通 Secret 对象加密成 SealedSecret 对象。
  3. 部署 SealedSecret 对象:将 SealedSecret 对象部署到 Kubernetes 集群中,验证是否成功解密成普通 Secret 对象。可以使用以下命令查看解密后的 Secret 对象:
kubectl get secret db - secret -o yaml
使用 Vault 管理密钥
  1. 启动 Vault 服务:按照前面的步骤启动 Vault 服务,并进行初始化和解封操作。
  2. 存储密钥到 Vault:使用 Vault 的命令行工具将密钥存储到 Vault 中。
  3. 在 Kubernetes 中集成 Vault:可以使用 Vault Agent Injector 来实现 Kubernetes 与 Vault 的集成。首先安装 Vault Agent Injector,然后创建一个包含 Vault 访问信息的 Pod 模板。例如,创建一个名为 app - pod.yaml 的文件:
apiVersion:v1kind:Podmetadata:name:app-podannotations:vault.hashicorp.com/agent - inject:"true"vault.hashicorp.com/role:"app - role"vault.hashicorp.com/agent - inject - secret - db:"secret/db"spec:containers:-name:app-containerimage:nginx

部署该 Pod,验证是否成功从 Vault 中获取密钥。

总结

通过学习 Sealed Secrets 和 Vault 的密钥管理原理、使用方法,以及进行实际的安装、配置和操作演示,你已经掌握了在云原生环境中使用这两个工具实现密钥安全管理的技能。Sealed Secrets 利用非对称加密技术,将敏感信息加密后可以安全地存储在版本控制系统中;Vault 则提供了集中化的密钥管理和访问控制,增强了密钥的安全性和可控性。

掌握了云原生密钥管理中 Sealed Secrets 与 Vault 的相关内容后,下一节我们将深入学习云原生网络安全防护策略,进一步完善对本章云原生安全实践主题的认知。—


🍃 系列专栏导航


  • 🔖 《深入浅出云原生》

  • 🍃 博客概览:《程序员技术成长导航,专栏汇总》
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 17:08:31

2025最新!专科生必备8个AI论文平台:开题报告与文献综述全测评

2025最新&#xff01;专科生必备8个AI论文平台&#xff1a;开题报告与文献综述全测评 2025年专科生论文写作工具测评&#xff1a;从功能到体验的全面解析 随着人工智能技术在学术领域的不断渗透&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面…

作者头像 李华
网站建设 2026/6/6 20:38:10

搞砸一次发布赔了6位数后,我才明白平台工程的真正价值。

我永远忘不了那个周五晚上&#xff0c;我满怀信心地按下了发布按钮&#xff0c;然后整个系统就崩了。接下来的十几个小时&#xff0c;就是一场混乱的救火行动。回滚代码、排查日志、紧急修复&#xff0c;整个团队都被拖入了深渊。那一刻我才意识到&#xff0c;我们引以为傲的敏…

作者头像 李华
网站建设 2026/6/15 16:29:55

我们是如何用云端开发,把上线时间从1周压到3分钟的

整个技术圈都在为 AI 疯狂&#xff0c;我们讨论 Copilot 如何让编码效率提升十倍。但这可能只说对了一半&#xff0c;我们用 AI 加速了“写代码”&#xff0c;但作为工程师&#xff0c;我发现自己大量的时间&#xff0c;却消耗在了写代码之外的、那些看不见的“摩擦”上。我认为…

作者头像 李华
网站建设 2026/6/16 16:09:04

兼容性测试的边界困局与云测平台的效能天花板

——面向测试从业者的深度实践洞察 一、兼容性测试的无限边界&#xff1a;被低估的复杂性 在移动互联网与物联网融合的2025年&#xff0c;兼容性测试已从单纯的"设备-系统"适配演变为五维测试矩阵&#xff1a; 硬件拓扑维度&#xff1a;折叠屏机械结构差异、传感器…

作者头像 李华
网站建设 2026/6/18 2:25:30

‌大数据测试专项:数据质量、数据管道与计算逻辑验证

在数据驱动的时代&#xff0c;大数据测试已成为软件测试的核心领域。随着2025年AI和云计算的普及&#xff0c;数据量激增&#xff08;预计全球数据量达200ZB&#xff09;&#xff0c;测试从业者面临前所未有的挑战&#xff1a;如何确保海量数据的准确性、管道的高效性和计算逻辑…

作者头像 李华