返回介绍

管理密钥

发布于 2019-11-10 06:06:41 字数 6485 浏览 957 评论 0 收藏 0

在 Swarm 集群中管理敏感数据

在动态的、大规模的分布式集群上,管理和分发 密码证书 等敏感信息是极其重要的工作。传统的密钥分发方式(如密钥放入镜像中,设置环境变量,volume 动态挂载等)都存在着潜在的巨大的安全风险。

Docker 目前已经提供了 secrets 管理功能,用户可以在 Swarm 集群中安全地管理密码、密钥证书等敏感数据,并允许在多个 Docker 容器实例之间共享访问指定的敏感数据。

注意: secret 也可以在 Docker Compose 中使用。

我们可以用 docker secret 命令来管理敏感信息。接下来我们在上面章节中创建好的 Swarm 集群中介绍该命令的使用。

这里我们以在 Swarm 集群中部署 mysqlwordpress 服务为例。

创建 secret

我们使用 docker secret create 命令以管道符的形式创建 secret

$ openssl rand -base64 20 | docker secret create mysql_password -$ openssl rand -base64 20 | docker secret create mysql_root_password -

查看 secret

使用 docker secret ls 命令来查看 secret

$ docker secret lsID                          NAME                  CREATED             UPDATEDl1vinzevzhj4goakjap5ya409   mysql_password        41 seconds ago      41 seconds agoyvsczlx9votfw3l0nz5rlidig   mysql_root_password   12 seconds ago      12 seconds ago

创建 MySQL 服务

创建服务相关命令已经在前边章节进行了介绍,这里直接列出命令。

$ docker network create -d overlay mysql_private$ docker service create \     --name mysql \     --replicas 1 \     --network mysql_private \     --mount type=volume,source=mydata,destination=/var/lib/mysql \     --secret source=mysql_root_password,target=mysql_root_password \     --secret source=mysql_password,target=mysql_password \     -e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" \     -e MYSQL_PASSWORD_FILE="/run/secrets/mysql_password" \     -e MYSQL_USER="wordpress" \     -e MYSQL_DATABASE="wordpress" \     mysql:latest

如果你没有在 target 中显式的指定路径时,secret 默认通过 tmpfs 文件系统挂载到容器的 /run/secrets 目录中。

$ docker service create \     --name wordpress \     --replicas 1 \     --network mysql_private \     --publish target=30000,port=80 \     --mount type=volume,source=wpdata,destination=/var/www/html \     --secret source=mysql_password,target=wp_db_password,mode=0400 \     -e WORDPRESS_DB_USER="wordpress" \     -e WORDPRESS_DB_PASSWORD_FILE="/run/secrets/wp_db_password" \     -e WORDPRESS_DB_HOST="mysql:3306" \     -e WORDPRESS_DB_NAME="wordpress" \     wordpress:latest

查看服务

$ docker service lsID            NAME   MODE        REPLICAS  IMAGEwvnh0siktqr3  mysql      replicated  1/1       mysql:latestnzt5xzae4n62  wordpress  replicated  1/1       wordpress:latest

现在浏览器访问 IP:30000,即可开始 WordPress 的安装与使用。

通过以上方法,我们没有像以前通过设置环境变量来设置 MySQL 密码, 而是采用 docker secret 来设置密码,防范了密码泄露的风险。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文