我有一个运行容器的容器,需要访问API密钥和数据库密码等敏感信息。现在,这些敏感值嵌入在控制器定义中,如下所示:
env:
- name: DB_PASSWORD
value: password
然后可以在Docker容器中作为$DB_PASSWORD
环境变量使用。一切都相当容易。
但是在Secrets上阅读他们的文档,他们明确表示将敏感配置值放入您的定义中会违反最佳做法,并且可能是一个安全问题。我能想到的唯一其他策略如下:
这似乎相当复杂,但更安全,更灵活,因为这些值不再是静态的,而是以明文形式存储。
所以我的问题,我知道这不是一个完全客观的问题,这是否完全是必要的?只有管理员才能首先查看和执行RC定义;所以如果有人违反了kubernetes大师,你还有其他问题要担心。我看到的唯一好处是没有明文提交到文件系统的秘密危险...
还有其他方法可以安全地使用秘密信息填充Docker容器吗?
答案 0 :(得分:4)
除非您有多兆字节的配置,否则此系统听起来不必要地复杂。预期用途是让您将每个配置放入一个秘密,并且需要配置的pod可以将该秘密作为卷安装。
然后,您可以使用各种机制中的任何一种将该配置传递给您的任务,例如:如果它是环境变量source secret/config.sh; ./mybinary
是一种简单的方法。
我认为通过将私钥存储为秘密,您不会获得任何额外的安全性。
答案 1 :(得分:2)