引言
在前端开发中,我们经常需要处理敏感信息,比如数据库密码、API 鉴权证书等。这些信息非常重要,一旦泄露可能会对我们的业务造成严重的影响。那么如何安全地管理这些敏感信息呢?我们可以使用 Vault 来进行管理。而 Docker 也为我们提供了便捷的部署和运行环境,那么本篇文章将介绍在 Docker 中如何使用 Vault 管理敏感信息。
Vault 简介
Vault 是一种安全的信息管理工具,它可以对敏感信息进行加密、存储、访问控制和审计等操作。Vault 采用了可插拔的身份认证机制,支持 LDAP、GitHub、AppRole 等多种身份认证方式,保证用户身份的安全性。同时,Vault 也提供了包括 CLI、API 和 WebUI 在内的多种访问方式,非常方便实用。
Docker 中使用 Vault 管理敏感信息
安装与启动 Vault
首先,我们需要在 Docker 中安装和启动 Vault。可以直接使用官方的 Docker 镜像,在终端中输入以下命令:
docker pull vault
docker run --cap-add=IPC_LOCK -e VAULT_DEV_ROOT_TOKEN_ID=myroot -e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 -p 8200:8200 --name=vault-demo vault
以上命令将会拉取官方的 Vault 镜像并启动其服务。
其中:
--cap-add=IPC_LOCK
参数设置了 Docker 容器的权限限制,确保 Vault 可以使用 IPC_LOCK。-e VAULT_DEV_ROOT_TOKEN_ID=myroot
和-e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200
参数分别设置了 Vault 的根令牌 ID 和监听地址,这里我们设置为myroot
和0.0.0.0:8200
。-p 8200:8200
参数设置了容器端口映射,用于将宿主机的8200
端口映射到 Vault 容器的8200
端口。
配置 Vault
接下来,我们需要在 Vault 中创建一个用于存储敏感信息的 Secrets 引擎。这里我们将使用 KV Secrets Engine。
docker exec -it vault-demo /bin/sh
运行容器后,使用 vault login
命令登录到 Vault:
vault login myroot
然后创建 KV Secrets Engine:
vault secrets enable -path=mysecrets kv
以上命令将会创建一个名为 mysecrets
的 Secrets 引擎,并使用默认的 KV 存储方式。
存储敏感信息
现在我们已经完成了 Vault 和 Secrets 引擎的配置,接下来,我们可以使用 Vault 存储敏感信息了。
以下是一个简单的示例,演示如何使用 Vault 存储和读取敏感信息:
-- -------------------- ---- ------- ----- ----- - ----------------- ----- -------- ----- - ----- ----- - --------- ----- --- - ------------------------ -- ----- ----- -------- - ----- ---------------------------------------------- --- - -------- - ---------------- ----- - --- ----- ----------- - ------------------- -- ----- --------- ---- ----- ---- - - --------- --------- --------- ------------ -- ----- ------- - ----- --------------------------------------- ----- - -------- - ---------------- ------ --------------- ------------------ - --- -- ---- --------- ---- ----- --- - ----- -------------------------------------- - -------- - ---------------- ----- - --- ----- ------------ - -------------- -------------------------- - ------
在该示例中,我们通过 axios
库使用 REST API 与 Vault 进行交互。首先使用 axios.post()
方法对当前用户进行身份验证,然后使用 axios.post()
方法存储敏感信息,最后使用 axios.get()
方法获取该敏感信息。
Docker Compose 部署
以上示例中我们手动创建和运行了容器,现在我们可以使用 Docker Compose 将部署和启动 Vault 自动化。
首先创建一个 docker-compose.yml
文件,配置 Docker Compose 服务:
-- -------------------- ---- ------- -------- ----- --------- ------ ------ ----- --------------- ---------- --------- - ---- ------ - ----------- -------- - ---------------------- -------- ------
在以上配置中,我们指定了如下各种设置:
使用官方的 Vault 镜像。
指定容器名称为
vault-demo
。使用
.env
文件中定义的环境变量。映射宿主机
8200
端口到 Vault 容器的8200
端口。挂载
./config
目录作为容器数据卷,以存储 Vault 的配置文件。指定启动参数为
server
,表示启动 Vault 服务。
接下来,在当前目录下创建 .env
文件,并配置 Vault 运行参数:
VAULT_DEV_ROOT_TOKEN_ID=myroot VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200
现在只需要运行以下命令,即可自动化启动并部署 Vault 服务:
docker-compose up
结论
在本文中,我们介绍了如何使用 Vault 在 Docker 中安全地管理敏感信息,步骤包括 Vault 镜像的安装与启动、 Secret 引擎的配置、敏感信息的存储和读取,以及使用 Docker Compose 自动化部署等。这些步骤对于前端开发工程师而言,非常有价值,可以为敏感信息的管理提供一定的指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67163fecad1e889fe21b9034