Helm Academy · 课时

为什么不应将机密信息放入 values.yaml

图表和 Git 中明文机密信息的风险

第 1 / 4 课13 个步骤

为什么不应将机密信息放入 values.yaml 是 CoddyKit 上的免费 Helm Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Helm Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Helm Academy 课程共包含 4 节课。

值只是纯文本

图表的values.yaml是普通的未加密文本。您写入其中的任何内容,包括密码,打开该文件的任何人都可以读取。

Git 会永久保留记录

图表通常存放在Git中。机密信息一旦提交,就算之后删除也仍会留在历史记录中,因此泄露是永久性的。🔒

一个诱人的错误

为了让程序运行起来,直接将真实密码写入values.yaml似乎很方便。但请不要这样做,因为这个值会扩散到各处。

database:
  password: super-secret-123

Helm 存储发布数据

安装时,Helm 会将合并后的值保存到集群中的发布版本机密资源里。您的明文密码现在也存放在那里。

helm get values 会暴露它

任何拥有发布版本访问权限的人都可以运行helm get values,并准确读回您传入的所有内容,其中也包括明文密码。

helm get values myapp

CI 日志也会泄露

在流水线中通过--set传递机密信息,通常会将其打印到构建日志中,整个团队都能在那里直接看到。

helm install myapp ./chart --set db.password=secret

核心规则

规则很简单:机密信息绝不能以明文形式存在于图表、Git 或命令行中。请将其排除在外。

引用而不是嵌入

安全的做法是引用机密信息,而不是将其嵌入。模板指向集群中已经保存的机密资源。

valueFrom:
  secretKeyRef:
    name: db-credentials
    key: password

必须存储时请加密

如果机密值确实必须存放在 Git 中,请将其加密,这样提交的文件在没有解密密钥时就毫无用处。

三种常见方法

有三种方法可以解决这个问题:使用工具加密值、从外部存储中获取机密信息,或根据注入的数据生成机密资源模板。

编码不是安全措施

Kubernetes 机密资源中的 Base64 只是编码,不是加密。它不会隐藏任何内容,因此绝不要把编码后的值当作受保护的数据。

快速检查

为什么将密码写入 values.yaml 会有很大风险?

回顾

您已经了解,values.yaml 中的明文机密信息会通过 Git、发布版本数据和 CI 日志泄露,也了解了为什么必须改用引用或加密。🎉

免费开始

用 AI 导师学习 YAML — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「为什么不应将机密信息放入 values.yaml」课时是免费的吗?

是的 — 「为什么不应将机密信息放入 values.yaml」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Helm Academy 课程的其余内容,请升级到 CoddyKit PRO。 Helm Academy 课程共包含 4 节课。

「为什么不应将机密信息放入 values.yaml」这节课中我会学到什么?

图表和 Git 中明文机密信息的风险 你通过在浏览器中直接运行的动手代码来练习 Helm Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Helm Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Helm Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「为什么不应将机密信息放入 values.yaml」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Helm Academy 课中编写并运行代码吗?

能。每节 Helm Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么不应将机密信息放入 values.yaml
  2. 使用 helm-secrets 和 SOPS 加密值
  3. 从外部机密信息运算符获取机密信息
  4. 模板化 Kubernetes Secret 资源
← 返回 Helm Academy