如何在Linux上安装Hashicorp Vault
说明
在本教程中,我们将学习如何在Ubuntu上安装Hashicorp Vault并使用它来存储敏感信息。
Hashicorp Vault用于安全存储令牌,密码,证书和加密密钥。它通过对包括Active Directory,LDAP,Kubernetes,CloudFoundry和云平台在内的可信身份进行身份验证来严格控制对机密和加密密钥的访问。
Vault API支持对机密和加密数据的访问。
安装Hashicorp Vault
要安装Hashicorp Vault,请从Vault网站下载二进制文件。下载是一个二进制文件,既可以作为客户端也可以作为服务器。
将Vault作为客户端安装就像将其放在/ usr / bin目录一样简单。但是,服务器的安装并不是那么直观。
通过创建目录结构来保存二进制,日志和保管库数据,为服务器安装做准备。
sudo mkidr -p /opt/vault/{logs,bin,data}
接下来,从Hashicorp Vault官方网站下载二进制文件。在撰写本文时,版本1.1.3是最新版本。可以在下载页面上找到更多版本。
sudo wget https://releases.hashicorp.com/vault/0.10.3/vault_1.1.3_linux_amd64.zip
解压缩Vault二进制文件并将其放置在安装目录中。
unzip vault_1.1.3_linux_amd64.zip -d /opt/vault/bin
配置Hashicorp保管库
要将Vault作为服务运行,需要进行配置。在/ etc下为Vault创建目录,我们将在其中存储Vault配置文件。
sudo mkdir /etc/vault
Vault的配置使用JSON编写。在新创建的/ etc / vault目录下创建一个名为config.json的新JSON文件。
sudo touch /etc/vault/config.json
并对其进行以下配置。
{ "listener": [{ "tcp": { "address" : "0.0.0.0:8200", "tls_disable" : 1 } }], "api_addr": "http://10.128.0.2:8200", "storage": { "file": { "path" : "/opt/vault/data" } }, "max_lease_ttl": "10h", "default_lease_ttl": "10h", "ui":true }
为Vault创建服务用户
我们应始终以非特权用户身份运行Vault服务器。该用户也不应是日常用户帐户。为Vault创建一个新的用户帐户,并授予其安装目录的所有权。
要创建服务用户,请运行以下命令。 -r标志将用户设置为系统用户。例如,这将防止通过SSH访问用户。
sudo useradd -r vault
现在,授予用户帐户先前创建的安装目录的所有权。
sudo chown -rV vault:vault /opt/vault
运行保管库即服务
为Hashicorp Vault创建新的Systemd服务文件
sudo touch /etc/systemd/system/vault.service
向其中添加以下内容
[Unit] Description=vault service Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/vault/config.json [Service] User=vault Group=vault EnvironmentFile=-/etc/sysconfig/vault Environment=GOMAXPROCS=2 Restart=on-failure ExecStart=/opt/vault/vault server -config=/etc/vault/config.json StandardOutput=/opt/vault/logs/output.log StandardError=/opt/vault/logs/error.log LimitMEMLOCK=infinity ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] WantedBy=multi-user.target
要将Vault配置为在引导时自动启动,请使用systemctl enable命令启用该服务。
sudo systemctl enable vault.service
使用systemctl start命令将Vault作为服务启动。
sudo systemctl start vault.service
准备管理Vault
将Vault bin目录添加到PATH环境变量。
export PATH=$PATH:/opt/vault/bin echo "export PATH=$PATH:/opt/vault/bin" >> ~/.bashrc
设置保管箱的环境变量
export VAULT_ADDRESS=http://10.128.0.2:8200 echo "export VAULT_ADDR=http://10.128.0.2:8200" >> ~/.bashrc
初始化和解封保管箱
初始化保管箱
sudo vault operator init
输出将如下所示。我们应该将此信息存储在一个安全的位置,因为这将需要解封Vault和管理服务器。
Unseal Key 1: aUEvSKm/O9CQhQspwNFcHYuabF1uD1m7FpMmo7f5AVau Unseal Key 2: EjLBTmuaeZgEl8kGWJIuJhhWYNVCLEEqKEA7I6i4FjpF Unseal Key 3: tVSkHbcUqhLzOlKbwWWJkoLDPemZNoDWXrXbPIU3Zfad Unseal Key 4: IT8+r4aZ2gq/7YujNGDbP2Of3UQ5Kw5jKbWrr4m1atYx Unseal Key 5: e75ORgXvs8GMu1PxMgpu2hvqxj7St7LllI8eTjfEo8bX Initial Root Token: s.5iSwFPh0XQa96MSrBHquCFlH Vault initialized with 5 key shares and a key threshold of 3. Please securely distribute the key shares printed above. When the Vault is re-sealed, restarted, or stopped, you must supply at least 3 of these keys to unseal it before it can start servicing requests. Vault does not store the generated master key. Without at least 3 key to reconstruct the master key, Vault will remain permanently sealed! It is possible to generate new unseal keys, provided you have a quorum of existing unseal keys shares. See "vault operator rekey" for more information.
要打开保管库,请选择三个解封密钥,然后对它们运行保管库解封密钥命令。
vault operator unseal aUEvSKm/O9CQhQspwNFcHYuabF1uD1m7FpMmo7f5AVau vault operator unseal EjLBTmuaeZgEl8kGWJIuJhhWYNVCLEEqKEA7I6i4FjpF vault operator unseal tVSkHbcUqhLzOlKbwWWJkoLDPemZNoDWXrXbPIU3Zfad
每当服务器停止或者重新启动系统时,都必须执行此操作。
启用密码
新安装的Vault将不会启用机密或者api访问权限。我们必须同时启用这两项功能才能使用它们。
要启用API访问,我们将使用vault auth enable命令,如以下示例所示。
vault auth enable approle
充当机密文件库时,必须启用机密功能。使用以下命令来使用Vault版本2,以及设置密码路径。
vault secrets enable -version=2 -path=secret kv