1. 什么是Vault?
Vault是一款针对密钥和密码管理的工具。使用Vault,可以将所有机密信息都存储在数据库中,其提供了许多重要的安全功能,如访问控制,秘密引擎存储机密密钥等。
1.1 Vault的优点
Vault有许多优点,包括:
可扩展的
开源的
安全性更高
API友好,易于使用
2. 如何设置Vault
在开始使用Vault之前,需要先设置Vault的服务器。下面步骤讲述了如何在本地电脑上部署Vault服务器。
2.1 安装Vault
可以从Vault官网下载最新的二进制文件,安装完成后,可以通过将Vault二进制文件的路径添加到PATH中,使其可以全局使用。
使用以下命令来验证Vault是否已经正确安装:
vault --version
2.2 启动Vault服务端
我们需要在终端中运行以下的命令:
vault server -dev
这将启动一台开发服务器,其中包含随机生成的根令牌和身份验证令牌。这仅在开发环境中使用,不应在生产环境中使用。
3. 使用Vault管理密钥
一旦Vault服务已部署并启动,在命令行上运行:
export VAULT_ADDR=http://127.0.0.1:8200
接下来,我们可以通过以下命令进行设置,创建新用户或者独立的命名空间:
vault auth enable userpass
vault login -method=userpass username=admin password=admin
vault secrets enable -path=hello kv
vault kv put hello/world foo=bar
3.1 创建新用户
可以通过使用用户名和密码来创建新用户。
vault auth enable userpass
vault write auth/userpass/users/new_user password="password" policies=default
“users”目录是Vault中的一个预期路径,用于组织经过身份验证的用户信息。在每个用户的“users”目录下,使用“new_user”作为用户名及相关信息。
一旦创建完用户,可以使用以下命令来对该用户进行验证:
vault login -method=userpass username=new_user password=password
3.2 创建独立的命名空间
“命名空间”被用来实现租户隔离。命名空间的创建很简单,只需要执行以下命令即可。
vault namespace create myapp
export VAULT_NAMESPACE=myapp
这将创建一个名为“myapp”的命名空间,可以使用VAULT_NAMESPACE变量来进入这个命名空间。
4. 从Vault读取密钥信息
使用Vault存储密钥后,可以使用以下方式访问该密钥信息。
curl --header "X-Vault-Token: ${VAULT_TOKEN}" http://127.0.0.1:8200/v1/secret/hello/world
{"request_id":"01234567-0123-4567-8901-234567890123", "lease_id":"","renewable":false,"lease_duration":0,"data":{"foo":"bar"},"wrap_info":null,"warnings":null,"auth":null}
以上命令会输出你在Vault中存储数据所设置的值,如“foo:bar”。
5. 结论
Vault提供了一种简单快捷的方式来管理密钥和密码。通过Vault,不再需要在设备上明文存储重要的敏感信息,可以将其存储在高度安全的数据库中。Vault可以很容易地与其他Golang程序集成使用,使其作为一种首选的安全软件工具。