如何限制传递给链接容器的环境变量
How to restrict environment variables passed to linked containers
我们已经开始广泛使用 docker(我们喜欢它),但发现了一个相当严重的安全问题。链接的容器可以完全访问源容器的环境设置。
例如,假设您创建了一个 mysql 容器。
docker run --name db -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
现在你创建一个 wordpress 容器
docker run --name wp --link db:db \
-e WORDPRESS_DB_USER=wp \
-e WORDPRESS_DB_PASSWORD=1234 \
-d wordpress
如果您现在检查 wordpress 容器中的环境,您将能够看到 mysql root 密码。
docker exec -i wp sh -c "env|grep ^MYSQL_MYSQL_ENV"
MYSQL_ENV_MYSQL_MAJOR=5.7
MYSQL_ENV_MYSQL_ROOT_PASSWORD=mysecretpassword
MYSQL_ENV_MYSQL_VERSION=5.7.5-m15
这是一个重大的安全漏洞! wordpress 容器中的任何随机代码或模块都可以使用 mysql root 密码进行连接并造成严重破坏。如果 mysql 数据库与多个 wordpress 容器(和 joomla 容器)共享,则破坏可能是全球性的。
我的问题是,有没有办法限制链接容器之间传递的环境变量?
第二个问题——我仔细检查了有关链接容器的文档 https://docs.docker.com/userguide/dockerlinks/#environment-variables
但它没有描述这种行为。我在想这可能是一个意外的副作用,也许我应该打开一个错误报告?
My question is, is there a way to limit what environment variables are passed between linked containers?
如果这是您环境中的一个问题,您最好的选择可能是采用容器链接以外的解决方案来进行服务发现。例如,您可以使用现有的各种 etcd
支持的发现机制之一——直接使用 etcd
,或类似 consul, registrator or skydns.
的机制
我们已经开始广泛使用 docker(我们喜欢它),但发现了一个相当严重的安全问题。链接的容器可以完全访问源容器的环境设置。
例如,假设您创建了一个 mysql 容器。
docker run --name db -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql
现在你创建一个 wordpress 容器
docker run --name wp --link db:db \
-e WORDPRESS_DB_USER=wp \
-e WORDPRESS_DB_PASSWORD=1234 \
-d wordpress
如果您现在检查 wordpress 容器中的环境,您将能够看到 mysql root 密码。
docker exec -i wp sh -c "env|grep ^MYSQL_MYSQL_ENV"
MYSQL_ENV_MYSQL_MAJOR=5.7
MYSQL_ENV_MYSQL_ROOT_PASSWORD=mysecretpassword
MYSQL_ENV_MYSQL_VERSION=5.7.5-m15
这是一个重大的安全漏洞! wordpress 容器中的任何随机代码或模块都可以使用 mysql root 密码进行连接并造成严重破坏。如果 mysql 数据库与多个 wordpress 容器(和 joomla 容器)共享,则破坏可能是全球性的。
我的问题是,有没有办法限制链接容器之间传递的环境变量?
第二个问题——我仔细检查了有关链接容器的文档 https://docs.docker.com/userguide/dockerlinks/#environment-variables
但它没有描述这种行为。我在想这可能是一个意外的副作用,也许我应该打开一个错误报告?
My question is, is there a way to limit what environment variables are passed between linked containers?
如果这是您环境中的一个问题,您最好的选择可能是采用容器链接以外的解决方案来进行服务发现。例如,您可以使用现有的各种 etcd
支持的发现机制之一——直接使用 etcd
,或类似 consul, registrator or skydns.