如何在Linux上安装Hashicorp Vault

时间:2020-01-09 10:39:19  来源:igfitidea点击:

说明

在本教程中,我们将学习如何在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