我们从Kubernetes开始,想知道其他项目如何管理Kubernetes机密:
答案 0 :(得分:2)
其他项目如何管理Kubernetes机密
由于它们不是(至少现在不是)适当的机密(以base64编码),因此我们将它们分离为受限制的访问git存储库。
我们的大多数项目都有代码存储库(具有与秘密无关的清单,例如CI / CD管道中的部署和服务)和单独的清单存储库(包含名称空间,共享数据库init,机密以及或多或少的任何内容)与CI / CD分开进行的一次初始化,需要额外的许可才能实施,或者应以其他任何方式(例如机密)加以限制)。
话虽如此,尽管常规开发人员无法访问受限制的存储库,但必须特别注意CI / CD管道,因为即使您保护了机密,在CI期间它们也是已知的(并且可以显示/滥用)。 / CD阶段,因此那里的安全性较弱。通过让我们的DevOps之一监督和批准(受保护的分支机构)对CI / CD管道的任何更改,就可以减轻这种情况,这与高级负责人监督要部署到生产环境的代码更改的方式几乎相同。
请注意,这在很大程度上取决于项目的数量和人员,以及在安全性/开发压力/基础架构集成方面的实际项目需求。
答案 1 :(得分:1)
我将k8机密用作保存机密的商店。就像在定义秘密时一样,我在k8中定义它,而不是在其他地方定义它然后将其注入k8中。我有一个方便的客户端来创建查找和修改我的秘密。我不必担心我的秘密离开防火墙。它们很容易注入我的服务中
如果您想要额外的保护层,则可以使用KMS或类似的方法自己加密k8中的秘密
答案 2 :(得分:1)
我在github上遇到了这个叫做SealedSecrets的东西。 https://github.com/bitnami-labs/sealed-secrets。我自己没有用过。虽然这似乎是一个不错的选择。 但是请注意此github问题(https://github.com/bitnami-labs/sealed-secrets/issues/92)。这可能会导致您丢失标签和注释。
在坚果壳中,SealedSecrets允许您创建自定义资源定义以加密您的秘密。反过来,当您部署资源时,它将解密CRD并将其转换为kubernetes Secret。这样,您可以在源代码存储库中提交SealedSecret资源。
答案 3 :(得分:1)
我们最近发布了一个名为Kamus的项目。这个想法是让开发人员可以为特定应用程序(用Kubernetes service account标识)加密机密,而只有此应用程序可以解密它。 Kamus旨在支持GitOps流,因为可以将加密的机密提交给源代码控制。请查看此blog post,了解更多详细信息。