在现代的云原生应用中,容器化技术几乎已经成为了主流选项。然而,在容器化部署上,环境变量泄露问题是一个非常敏感的问题。尤其是在生产环境中,保护关键的敏感信息如密码、证书等是非常关键的。docker-secrets 是一款可以在容器中管理密钥、密码、证书等敏感信息的 npm 包。
docker-secrets 的使用
docker-secrets 这个 npm 模块提供了一种方法来在容器内管理 Docker secrets。Docker secrets 是 Docker swarm 中的一种加密配置数据,用来存储在一个安全的目录 /run/secrets 中。在 swarm 中,由 swarm manager 负责保管 secrets 文件,只有部署定了此 secret 的服务才有权访问。
使用 docker-secrets 可以直接将 secrets 文件写入程序的 process.env 中。对于某些 Docker secrets,程序甚至可以使用它们来生成新的加密凭据。以下是使用 docker-secrets 的步骤:
- 在 Dockerfile 中使用 ADD 或 COPY 命令将 secret 文件复制到 Docker 容器中。
ADD my_secret_file.txt /run/secrets/my_secret_file.txt
- 使用 docker run 命令将 secret 文件从主机文件系统挂载到容器的 /run/secrets 目录。
docker run --mount type=bind,source=/path/on/host,target=/run/secrets/my_secret_file.txt <image-name>
- 在 Node.js 中使用 docker-secrets 模块来读取加密文件内容。
const DockerSecrets = require('docker-secrets'); const mySecret = DockerSecrets.readFile('/run/secrets/my_secret_file.txt'); console.log(mySecret);
这样就可以在容器内部访问 Docker secrets 文件了。
示例代码
以下是一个简单的示例,演示了如何在容器内部使用 docker-secrets 模块来读取 secrets 文件:
-- -------------------- ---- ------- ----- ------------- - -------------------------- -- -- ------ -- ----- ------------- - ------------------------------------------------------ -- ----------- ----- --- ----- ----- - ----------------- ----- ------ - -------------------- ----- -------- ----- ----- --------- ------------- ---
总结
使用 Docker secrets 可以轻松地在容器中管理敏感信息、密码、证书等数据。docker-secrets 提供了一种简单、易于使用的方法来访问这些 secrets 文件。当部署应用程序时,请务必留意敏感信息的安全,以确保生产环境中的应用程序的安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cf681e8991b448e6bc1