有没有比通过 env 更安全的方法将变量传递给 docker 容器

有没有比通过 env 更安全的方法将变量传递给 docker 容器

我正在尝试使用 docker 容器。更准确地说,我使用docker-compose。我需要将变量传递给我的容器并使用一个.env文件。虽然这可行,但它让我怀疑它有多安全。我的意思是每个脚本语言都可以访问env,因此运行应用程序中的任何黑客都可能暴露存储在环境中的敏感数据。我想存储像数据库密码这样的数据。

受 的启发salt,我正在寻找一种方法,在构建容器之前将变量安全地传递到应用程序模板中,而不是将它们传递到env容器中。如何实现这一点?

答案1

还有一种使用 Docker Swarm 的替代方法,称为 Docker secrets。Swarm 允许您拥有一个 Docker 引擎节点集群,并且您可以根据需要创建一个单机集群。基本上,您可以使用存储在 Docker Swarm 集群中的 secrets,当在集群中部署服务(服务将使用集群中的容器部署任务)时可以使用这些 secrets。

解释 Docker 的秘密这里你甚至可以使用它们您的撰写文件。您的环境变量有一个很好的例子这里

我使用 docker secrets 来存储在容器内使用的 Amazon S3 凭证。

答案2

现在你可能使用 docker-compose.yml 并插入 secrets 部分

docker-compose.yml

version: "3.6"

services:

  my_service:
    image: ubuntu:latest
    entrypoint: "wc -c /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./password.txt

答案3

Hashicorp Vault 就是您要找的工具。将不敏感数据存储在 .env 中,对于机密则使用 Vault。

https://www.vaultproject.io/

相关内容