0

参加了 Docker 和 Compose 速成课程,学习如何部署一个考虑到安全性的小型自动化应用程序。问题是,我需要输入脚本敏感值并且不想硬编码它们。经过大量研究后,我选择了 Compose 并在运行时设置我的 env var,而不是使用标准的 Docker 构建。我还有一些 JSON 文件,其中包含作为卷传递的登录形式的 Web cookie。我的理解是在检查容器时这些值是不可见的。然而,当我检查它时,它们与 JSON 文件的内容一起清晰可见。除非我是唯一一个知道如何访问特定容器的人,否则我很确定这不是一个安全的选择。

来自yaml:

services:
  frontend:
    image: SOME IMAGE
    build: .
    volumes:
      - ./script.py:/app/script.py
      - ./words.txt:/app/words.txt
      - ./.some.json:/app/.some.json
      - ./.another.json:/app/.another.json
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - ./some.env
    container_name: name
volumes:
  .:
    external: true

为什么值和文件清晰可见?我现在不想去 Swarm 的方向和它的秘密。

编辑:这不会被推送到集线器或存储库,所以我不担心这方面的安全性。

4

1 回答 1

2

除非我是唯一一个知道如何访问特定容器的人,否则我很确定这不是一个安全的选择

如果其他人知道如何访问容器,他/她将能够运行:

# to get contents of JSON file
docker exec container_name cat /app/.some.json

# to print all env vars inside container
docker exec container_name env

我很确定这不是一个安全的选择

不安全的选项是允许未知人员控制/访问服务器端。容器内容是最后一个目的地,如果有人在这里访问它,游戏就结束了,没有理由隐藏信息

在 ENV 和配置文件中设置变量和机密仅有助于

  • 在不同的配置/环境中重用相同的代码而不改变自身
  • 在公共场所(如 GitHub)共享代码而不泄露敏感信息(我建议在里面添加所有配置文件路径.gitignore

另外这篇文章可能对你有帮助

于 2022-02-10T01:55:13.683 回答