问题标签 [docker-secrets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
33 浏览

docker - 从 Docker Secrets 设置 HAProxy stats auth 凭据

我正在尝试从 Docker Secrets 中提取 HAProxy 统计页面的凭据(而不是在配置文件中硬编码它们)。我会使用环境变量,但我无法修改 Docker 容器以使用读取机密文件的脚本来设置它。

有没有人对如何使这项工作有其他想法?

不起作用的事情:

  1. 使用 Lua 脚本读取机密文件并设置环境变量。它不起作用,因为setenv不处理动态表达式。

  2. 使用一个Lua脚本就stats auth行了。它不起作用,因为stats auth它也不处理动态表达式。

  3. 将机密文件格式化为 HAProxy 映射文件,然后使用其密钥提取凭据。同样,它不起作用,因为stats auth不处理动态表达式。

0 投票
0 回答
62 浏览

docker - 使用 docker 的秘密很好,但 docker-compose 失败

我有一个Dockerfile使用秘密的,我可以使用docker build. 但是,当我尝试使用构建相同的图像时docker-compose build出现错误:

这发生在 Ubuntu 20.04LTS(Docker 版本 18.09.6,构建 481bc77,docker-compose 版本 1.20.0-rc2,构建 8c4af54)上。

在 RHEL 7.9(Docker 版本 20.10.7 构建 f0df350、docker-compose 版本 1.29.2、构建 5becea4c)上会发生不同的错误:

如何使用 docker-compose 构建涉及机密的图像?

使用 docker 构建(工作)

使用 docker-compose 构建(失败)

Dockerfile

码头工人-compose.yml

0 投票
1 回答
42 浏览

docker - 如何在 docker compose 中配置秘密?

我有一个使用秘密的简单 docker compose。但是我一直无法访问这个秘密。日志显示/run/secrets/username正在服务器中传递,但不显示实际用户名。我的设置有什么问题?如何在我的服务中从 DB_USERNAME 获取秘密值?

0 投票
1 回答
23 浏览

docker - Docker 机密是否比绑定挂载提供任何额外的安全性?

据我了解,Dockersecrets和挂载(绑定和卷)都是在 Docker 容器中管理机密的安全方式。我想知道是否secrets有任何安全优势?

我有一组任意大小的秘密。秘密保存在文件夹中的单独文件中。它们会定期自动更改。我想让所有这些都可用于 Docker 容器。使用绑定挂载,我可以挂载他们的文件夹,并且它们都可以访问。使用secrets,我必须在 Docker Compose 文件中指定每一个,增加耦合并降低可维护性。我有什么理由选择以secrets可维护性为代价选择吗?

0 投票
0 回答
13 浏览

docker - 如何使用 docker compose 和 docker build 保护构建和运行时的敏感数据?

我正在尝试保护在两个上下文(本地开发、云部署)中在 docker 容器中运行的 api-server 的敏感数据(密码、令牌等),并且正在寻找有关如何做到这一点的建议,给定以下约束:

  • 在构建时需要一些敏感数据,在运行时需要一些敏感数据。

  • docker compose在本地,为了开发,docker 容器是通过yaml 文件创建的(以及其他需要的容器) 。

  • 对于远程部署(在 Google Cloud Platform 的 - GCP - “Cloud Run”上),容器是使用 GCP 的“Cloud Build”服务创建的:本质上是一个远程运行的包装器docker build和我的 Dockerfile。

  • 容器不在集群中运行,因此使用创建/管理的“秘密”docker secret不是一个选项。

在本地,我可以使用docker compose文件的“每个服务”文件机密机制(请参阅此处的文档)将敏感信息放置到一个静默创建、安全许可的/run/secrets/目录中,该目录在容器内持久可用。这解决了运行时需要的敏感数据或者在运行时和构建时需要) - 但是在构建时需要的敏感数据呢?似乎还没有(见这里)支持安全的构建时特定的秘密(即没有类似于/的docker composedocker buildBuildKit--secret参数);只是标准的构建参数,它可以(不安全地)出现在构建输出中,并在构建后保留在构建工件中。

远程(在 GCP 的“云构建”的上下文中)我可以使用docker build/BuildKit--secretargs 获取仅构建时间的敏感信息(基于此处的提示),但我还没有看到如何处理运行时所需的敏感信息-时间,因为(不像docker compose),docker build不会默默地创建一个持久的,严格许可的/run/secrets/目录......我可以手动创建和(也许?)收紧在我的 Dockerfile 中/run/secrets/使用的目录的权限 - 但是(和相关操作)将在构建输出,并会导致可能不安全的中间构建工件。COPYCOPY

总而言之:docker compose似乎为运行时提供了解决方案,但不是构建时(即“文件机密”,放置在 中/run/secrets),而docker build/BuildKit似乎为构建时(即--secret参数)提供了安全解决方案,但不是运行时

这是准确的吗?有没有人发现这个困境,即想出如何使用 docker compose来保护构建时数据,以及在使用时如何保护运行时数据docker build

我知道有 3rd-party 秘密存储(VaultSecret Manager等),但想知道如果引入这种额外的复杂性/依赖层,什么是/将是可能的......

如果不可能同时拥有安全的构建时机密和安全的运行时机密:考虑到上述上下文,从安全角度来看,哪个更重要?

谢谢。