保护供应链与机密信息
强化镜像与机密信息的安全。
保护供应链与机密信息 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
软件供应链
容器镜像由基础镜像、操作系统软件包和应用依赖构建而成,然后经过镜像仓库推送到集群。每一步都可能成为遭入侵的机会。供应链攻击会在代码进入生产环境之前插入恶意代码。
- 遭入侵的基础镜像或依赖。
- 镜像仓库中被篡改的镜像。
- 恶意的 CI/CD 流水线步骤。
镜像漏洞
镜像中经常带有存在已知漏洞的软件包。扫描可以在部署前发现这些问题。
- 过时的基础镜像会不断累积 CVE。
- 臃肿的镜像会扩大攻击面。
- 镜像层中嵌入的密钥会泄露凭据。
# Scan an image for vulnerabilities
trivy image myorg/app:1.4.2
# Scan filesystem and secrets too
trivy image --scanners vuln,secret myorg/app:1.4.2精简且可信的基础镜像
从小型且已知可靠的基础开始,减少攻击面。
- 使用 distroless 或精简的基础镜像(不包含命令解释器和包管理器)。
- 根据摘要固定基础镜像,而不是使用可变标签。
- 优先使用官方基础镜像或经过内部审核的基础镜像。
镜像越小,CVE 越少,攻击者在攻陷后可以滥用的工具也越少。
# Pin by digest for immutability
# FROM gcr.io/distroless/static@sha256:<digest>镜像签名与来源证明
签名可以证明镜像来自您的流水线且未被篡改。来源证明(SLSA)会记录镜像的构建过程。
- Cosign用于签名和验证镜像。
- 生成SBOM以跟踪每个组件。
- 附加构建来源证明声明。
# Sign and verify with cosign
cosign sign myorg/app:1.4.2
cosign verify --key cosign.pub myorg/app:1.4.2准入时验证
强制要求只有经过签名和扫描的镜像才能运行。准入控制器会在部署时拒绝未签名或存在漏洞的镜像。
# Kyverno policy: verify image signatures before admission
kubectl apply -f verify-image-signature.yaml
# Restrict pulls to a trusted registry only
kubectl apply -f allowed-registries.yaml保护流水线
CI/CD 系统本身就是高价值目标:它持有凭据,并且能够向生产环境推送内容。
- 按照最小权限原则限制流水线凭据的作用域,并设置较短的生命周期。
- 固定版本并验证第三方 CI 操作和插件。
- 隔离构建运行器;不要在不同信任级别之间复用运行器。
- 通过身份验证和不可变性保护镜像仓库。
Kubernetes Secret 的现实情况
Kubernetes Secret 默认是经过 base64 编码的,而不是经过加密的。任何能够读取它们或读取 etcd 的人,都能看到明文。
# A 'Secret' is trivially decoded
kubectl get secret db -o jsonpath='{.data.password}' | base64 -d静态加密保护密钥
保护 etcd 内容,避免备份被盗或 etcd 被访问后导致所有内容泄露。
- 使用
EncryptionConfiguration启用静态加密。 - 使用云 KMS 提供商实现信封加密。
- 限制对 etcd 的直接访问,并对其进行审计。
外部密钥管理器
最安全的模式是完全不将密钥存储在集群存储中。
- HashiCorp Vault或云密钥管理器保存权威来源。
- External Secrets Operator或 CSI 驱动程序在运行时注入密钥。
- 使用工作负载身份,让 Pod 通过短期云令牌获取密钥,而不是使用静态密钥。
密钥管理规范
良好的操作规范可以减少密钥暴露。
- 绝不要将密钥嵌入镜像或提交到 Git。
- 扫描代码仓库和镜像,查找泄露的凭据。
- 定期轮换密钥,并在怀疑密钥暴露时立即轮换。
- 将 RBAC
get/list secrets权限限制到最低程度。
# Detect committed secrets in source
gitleaks detect --source .测试供应链
评估时,请验证未签名或存在漏洞的镜像确实会被阻止,Secret 确实经过静态加密,并且镜像或 Git 中没有明文凭据。展示发现的问题时,不要将真实密钥外泄到证明所需范围之外。
针对每个缺口,报告能够弥补该缺口的具体控制措施(签名策略、KMS 加密或外部密钥管理器)。
快速检查
确认您对供应链和密钥的了解。
回顾
您已经强化了镜像供应链和密钥处理。
- 扫描镜像,使用精简且版本固定的基础镜像,并使用 cosign 签名。
- 在准入阶段强制要求使用经过签名和扫描的镜像以及可信的镜像仓库。
- Kubernetes Secret 只有 base64 编码;请启用 KMS 静态加密。
- 优先使用外部密钥管理器和工作负载身份,并遵循密钥管理规范。
Kubernetes 安全课程及本课程组到此结束。
用 AI 导师学习 Cyber Security Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 76
- 课程
- 303
常见问题解答
「保护供应链与机密信息」课时是免费的吗?
是的 — 「保护供应链与机密信息」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「保护供应链与机密信息」这节课中我会学到什么?
强化镜像与机密信息的安全。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「保护供应链与机密信息」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Kubernetes 威胁模型
- RBAC 与服务账户
- Pod 安全与网络策略
- 保护供应链与机密信息