使用保密且在服务器上不可见的环境变量在生产中运行Docker

nkhmeac6  于 2022-10-12  发布在  Docker
关注(0)|答案(1)|浏览(208)

我需要将环境变量发送到在容器中运行的应用程序,但我知道“.env”文件位于服务器上是不好的做法,因为“根”用户可以读取它。在我的应用程序中使用这些变量,并且不在服务器上留下任何痕迹并且不使用Kubernetes的最佳选择是什么?

9rygscc1

9rygscc11#

根据您的实际生产堆栈,有几种解决方案:

(1)运行在K8S集群上

Kubernete支持用户将二进制文件作为秘密上传。您可以将秘密安装到您的生产吊舱中,以分离您的码头形象和秘密。

https://kubernetes.io/docs/concepts/configuration/secret/

(2)独立服务器上的Docker

这是与(1)同构的解,但没有来自K8的本地支持。

https://docs.docker.com/storage/volumes/

(3)对外密钥管理服务

如果您使用在云上托管您的应用程序,则有更多的选择可供您考虑。以Azure为例,如果您在虚拟机上托管您的应用程序,您可以使用Azure KeyVault之类的服务:

https://learn.microsoft.com/en-us/azure/key-vault/general/basic-concepts

其概念是通过将您的服务器连接到服务来存储和获取您的所有密钥。您可以将秘密动态加载到您的应用程序中,从KeyVault获取,这可以防止在您的服务示例中留下秘密足迹。可以以无密码的方式(AWS中的IAM/Azure中的托管身份)配置密钥管理服务和您的虚拟机之间的连接,以防止您的服务器中存在机密。

展开查看全部

相关问题