29|安全提升:如何解决 GitOps 的秘钥存储问题?
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了GitOps工作流中的密钥管理问题,并提出了解决方案。作者首先指出了Git仓库中存放的机密信息的安全性问题,包括镜像拉取凭据、外部数据库连接信息、第三方服务的API KEY等。针对这些问题,作者介绍了三种常用的密钥管理方案,重点介绍了Sealed-Secrets的工作原理和安装方法。在示例应用介绍中,作者展示了如何创建一个简单的Deployment工作负载,并介绍了如何使用kubeseal创建加密后的Secret对象。最后,作者指导读者如何将Sealed-Secrets和GitOps工作流结合,通过创建ArgoCD应用并将加密后的Secret对象推送到Git仓库中,实现了密钥的安全存储和部署。整体而言,本文深入浅出地介绍了GitOps工作流中的密钥管理问题及解决方案,对于需要提升GitOps安全性的读者具有一定的参考价值。文章内容详实,适合对GitOps工作流中的密钥管理问题感兴趣的读者深入学习。文章还提供了关于Sealed-Secret的生产建议和总结,以及一个思考题,为读者提供了更多的思考和实践机会。
《云原生架构与 GitOps 实战》,新⼈⾸单¥59
全部留言(6)
- 最新
- 精选
- Wang Yifei这个方案仍然会生成在kubernetes中生成secret对象,有权限访问secret的人员仍然能得到密码,有更安全的方案么?
作者回复: 集群应该保护起来,不对外暴露。如果一定要实现不生成 Secret 的方案,那可能需要一套配置中心来处理。
2023-05-06归属地:北京1 - pokubeseal 需要连接到集群中,但是 kubeseal 平常都是开发或者运维在测试环境或者电脑本机,测试环境或者本机连接到生产kubernetes一般不大可能,现在想到的可能就是生产和测试kubernetes都同步一样的RSA,然后提交到Git,感觉这个管理流程上不是很顺畅,
作者回复: Kubeseal 的使用场景是可以直连 Kubernetes,本质上它需要把 RSA 秘钥保存到集群里,如果不能满足这个条件的话,那么只能按照迁移的模式提前生成好 RSA 秘钥,这可能不利于安全性的提升。
2023-02-26归属地:上海31 - Sophia-百鑫老师好,关于原理解析部分,描述和原理图有一点不一致的地方,具体是第2步:sealed secret controller 生成 RSA key 并保存在kube-system命名空间下的secret对象下。不应该是保存在secret-demo 命名空间下的secret对象下。 请老师确认一下。
作者回复: RSA key 是存放在 kube-system,业务的 secret 对象和 CRD 是放在业务命名空间下。
2023-08-18归属地:上海 - Sophia-百鑫老师好,2个问题需求求助您解答: 1.示例中,为了达到预期结果,除了要把 application.yaml中的 repoURL值改成自己的github 地址外。是否也需要把image-pull-secret.yaml 中的 .dockerconfigjson 值也改成自己的github username 和 PAT ? 2. 我完成2个加密文件后,secret-demo 空间的 pod 还是 imagepullbackoff。具体如下内容。 是什么原因导致的或如何排查? ➜ kubernetes-example git:(main) ✗ kubectl get pods -n secret-demo NAME READY STATUS RESTARTS AGE sample-spring-65f7bbf4fd-l86gr 0/1 ImagePullBackOff 0 43h
作者回复: 是的,秘钥也需要换成自己的。你可以用 kubectl describe pod xx 命令来查看拉取镜像的具体日志,一般是凭据错误或者镜像不存在。
2023-08-17归属地:上海2 - 无名无姓安全性问题特别重要
作者回复: 是的,在 GitOps 中明文存储秘钥是不可取的。
2023-02-14归属地:北京 - 黑鹰在云原生环境下,数据库访问凭证动态定期轮换也很重要‼️Sealed-Secret 好像不支持该特性,Vault有比较好的支持!
作者回复: Vault 是一款老牌的秘钥管理工具了,ArgoCD 可以结合 Vault 插件来使用。
2023-02-13归属地:北京