如何维护 Dockerfile 中使用的秘密?
How to maintain secrets used in Dockerfile?
下面是 docker-compose 有密码的文件的片段:
test:
build: ../../
dockerfile: docker/dev/Dockerfile
volumes_from:
- cache
links:
- db
environment:
DJANGO_SETTINGS_MODULE: todobackend.settings.test
MYSQL_HOST: db
MYSQL_USER: root
MYSQL_PASSWORD: password
TEST_OUTPUT_DIR: /reports
db:
image: mysql:5.6
hostname: db
expose:
- "3386"
environment:
MYSQL_ROOT_PASSWORD: password
运行AWS环境下的这个文件,
可以使用 KMS 存储在 s3 中,另一种方法是 AWS 参数存储
使用 docker-compose
构建 docker 文件和启动容器时,如何安全地维护机密,而不将其暴露给文本文件?任何代码片段...
能想到几种可能的方法。
- 将秘密存储在环境变量中,在您的撰写文件中引用环境变量,如 this
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
没有任何值的键在机器上解析为它们的值。
另一种方法是使用 docker secret。
创建秘密
$ printf "This is a secret" | docker secret create db_password -
如果它是一个文件,它可以像
一样保存
$docker secret create site.key site.key
访问您撰写的秘密如下
version: '3.1'
services:
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_root_password
- db_password
秘密可在 /run/secrets 文件夹中找到。
如果您提交容器,则不包括机密。
您可以使用 ECS 和 Secrets Manager 之间的集成,将对存储在 Secrets Manager 中的机密的引用放在 ECS 任务定义中,然后将它们作为环境变量引用。 ECS docs provide a short tutorial on this (and there are more elaborate blog posts).
下面是 docker-compose 有密码的文件的片段:
test:
build: ../../
dockerfile: docker/dev/Dockerfile
volumes_from:
- cache
links:
- db
environment:
DJANGO_SETTINGS_MODULE: todobackend.settings.test
MYSQL_HOST: db
MYSQL_USER: root
MYSQL_PASSWORD: password
TEST_OUTPUT_DIR: /reports
db:
image: mysql:5.6
hostname: db
expose:
- "3386"
environment:
MYSQL_ROOT_PASSWORD: password
运行AWS环境下的这个文件,
可以使用 KMS 存储在 s3 中,另一种方法是 AWS 参数存储
使用 docker-compose
构建 docker 文件和启动容器时,如何安全地维护机密,而不将其暴露给文本文件?任何代码片段...
能想到几种可能的方法。
- 将秘密存储在环境变量中,在您的撰写文件中引用环境变量,如 this
environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET:
没有任何值的键在机器上解析为它们的值。
另一种方法是使用 docker secret。 创建秘密
$ printf "This is a secret" | docker secret create db_password -
如果它是一个文件,它可以像
一样保存$docker secret create site.key site.key
访问您撰写的秘密如下
version: '3.1'
services:
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_root_password
- db_password
秘密可在 /run/secrets 文件夹中找到。
如果您提交容器,则不包括机密。
您可以使用 ECS 和 Secrets Manager 之间的集成,将对存储在 Secrets Manager 中的机密的引用放在 ECS 任务定义中,然后将它们作为环境变量引用。 ECS docs provide a short tutorial on this (and there are more elaborate blog posts).