如何安裝和配置 Vault

金庫是什麼?

Vault 保護和保護對多種類型敏感數據的訪問。 存儲和管理存在於低信任環境中的敏感密碼信息、API 密鑰和訪問令牌,並生成動態訪問權限以對用戶進行身份驗證,以確保他們對文件、位置、服務或應用程序具有授權訪問權限和可用性。

Vault 通過使用安全生成的臨時令牌為嚴格控制的環境提供更精細的授權。 在本教程中,我們將探索 HashiCorp 的 Vault 軟件。 以 HashiCorp 配置語言(或 HCL)編寫的安全策略用於確定哪些用戶有權訪問內部框架。

金庫是如何運作的?

以下是 Vault 工作原理的高級概述。 本質上,我們只有兩個面向外部的元素:

  • HTTP(s) API– 當 Vault 服務器開始允許用戶與之交互時,此網關或通道由 Vault 服務器啟動。
  • 後端存儲環境– 此存儲位置被認為是不受信任的,僅供 Vault 用於安全地存儲加密數據。

所有其他組件都鎖定在 Vault 受保護的安全範圍內。

一旦 Vault 軟件啟動,即視為處於密封狀態。 在執行任何功能之前,用戶或 API 進程必須打開 Vault。 這個任務是通過打開鑰匙來完成的。 創建 Vault 時,會生成加密密鑰以保護 Vault 中的信息。 主密鑰進一步保護該加密密鑰。 這個主密鑰是使用稱為 Shamir 的秘密共享算法的技術創建的。

Secretos de la bóveda 2

此加密算法將主密鑰拆分為多個部分或操作。 要重建原始主密鑰,需要最少數量的這些共享組件。 Vault 將主密鑰分為五個部分。 要重建主密鑰,需要五個操作中的三個。

讓我們舉個例子。 LW 銀行有一個金庫。 這個保險庫包含 Liquid Web 的所有秘密。 這個保險庫有五個鑰匙孔。 將一把鑰匙交給五位高管。 要解鎖金庫,金庫必須至少插入三把執行鑰匙。 使用五把行政鑰匙中的哪三把並不重要,因為三把行政鑰匙將打開金庫。 如果一兩把行政鑰匙丟失或被盜,仍然可以訪問保險庫。

Secretos de la bóveda 3

一旦加密密鑰被激活,Vault 就可以解密後端存儲位置中包含的數據。 打開保險庫時,它會加載所有已配置的審計設備、身份驗證方法和秘密引擎。

這些組件必須存儲在保險庫中,因為它們被視為敏感信息。 只有具有正確權限級別的用戶才能修改它們,這意味著它們在鎖定時不能在屏障外使用。 通過將它們存儲在 Vault 中,對這些項目的任何更改都會被拒絕,因為它們受到訪問控制列表 (ACL) 系統的保護,並由審計日誌進行跟踪。 ACL 只是用戶創建的策略。 策略由內部策略存儲保存和維護。

Vault 專門用於零信任模型和基於身份的訪問控制。 這意味著除非通過 ACL(策略)明確授予訪問權限,否則不允許執行該操作。 打開 Vault 後,請求通過 HTTP API 處理到 Core。 核心本身用於調節通過系統的查詢流、實施 ACL 並確保維護審計跟踪。 內置默認的“root”ACL,允許對所有資源進行完全訪問。

如何安裝保險庫

客戶可以在各種平台上使用 Vault,包括獨立服務器、AWS、Kubernetes 和其他基於容器的系統。

在這裡,我們演示瞭如何在獨立服務器上或作為服務器集群的一部分安裝 Vault。 要使用 Vault,管理員必須首先使用以下三種安裝方法之一將其安裝在服務器上:

  • 源代碼– 這是軟件的典型 Git 安裝。
  • 預編譯的二進製文件。
  • 預打包格式。

下面我們提供了在 Linux 上安裝 Vault 的說明( CentOS Ubuntu)、macOS 和 Windows。

CentOS/Ubuntu

一如既往,我們首先要確保我們的系統是最新的兩個命令之一。 下面是一個命令選項。

                      
                        [[email protected] ~]# yum update -y && yum upgrade -y
                      
                    

替代命令如下所示。

                      
                        [[email protected] ~]# apt-get update && apt-get upgrade
                      
                    

創建並移動到目錄

                      
                        [[email protected] ~]# mkdir -p /usr/src/vault
[[email protected] ~]# cd /usr/src/vault/
                      
                    

下載保險庫

                      
                        [[email protected] vault]# curl -sO https://releases.hashicorp.com/vault/1.6.3/vault_1.6.3_linux_amd64.zip
                      
                    

解壓縮保管庫

                      
                        [[email protected] vault]# unzip vault_1.6.3_linux_amd64.zip
Archive:  vault_1.6.3_linux_amd64.zip
  inflating: vault
                      
                    

將文件夾移動到路徑

                      
                        [[email protected] vault]# mv vault /usr/local/bin/
                      
                    

驗證安裝

要驗證 Vault 是否已正確安裝,請在終端中運行 vault version 或 vault -h。 如果您從命令行運行它,請確保 vault 命令在您的 PATH 中,否則您可能會收到 Vault not found 錯誤。

                      
                        [[email protected] vault]# vault -version
Vault v1.6.3 (b540be4b7ec48d0dd7512c8d8df9399d6bf84d76)
                      
                    

Ubuntu

確保我們的系統是最新的。

                      
                        [[email protected] ~]# apt-get update && apt-get upgrade
                      
                    

添加 GPG 密鑰

首先,我們需要添加 HashiCorp GPG 密鑰。

                      
                        [[email protected] ~]# curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
                      
                    

添加存儲庫

接下來,我們將添加官方的 HashiCorp Linux 存儲庫。

                      
                        [[email protected] ~]# apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
                      
                    

安裝軟件

最後,運行另一個 apt-get 更新,然後安裝軟件。

                      
                        [[email protected] ~]# apt-get update && apt-get install vault
                      
                    

蘋果系統

安裝存儲庫

首先,我們需要安裝 HashiCorp 水龍頭。 這是 Homebrew 包的存儲庫,包括 Vault。

                      
                        [[email protected] ~]# brew tap hashicorp/tap
                      
                    

安裝軟件

接下來,我們將使用 hashicorp /tap/vault 安裝 Vault。

                      
                        [[email protected] ~]# brew install hashicorp/tap/vault
                      
                    

視窗

我們可以使用兩種方法在 Windows 系統上安裝 Vault:Chocolatey 和 Scoop。 Chocolatey 是 Windows 的開源包管理器。 在這裡,我們使用終端安裝 Vault。

                      
                        [[email protected] ~]# choco install vault
                      
                    

Scoop 是另一個用於 Windows 的開源包管理器。 要使用 Scoop 安裝 Vault,我們在終端中運行以下命令。

                      
                        [[email protected] ~]# scoop install vault
                      
                    

啟動 Vault 服務器

以下命令啟動默認的 Vault 開發服務器。 開發服務器是一個預配置的嵌入式服務器。 雖然不用於生產環境,但它可用於在本地探索 Vault 服務器命令。

                      
                        [[email protected] ~]# vault server -dev
==> Vault server configuration:

             Api Address: https://127.0.0.1:8200
                     Cgo: disabled
         Cluster Address: https://127.0.0.1:8201
              Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
               Log Level: info
                   Mlock: supported: false, enabled: false
           Recovery Mode: false
                 Storage: inmem
                 Version: Vault v1.4.1

WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
and starts unsealed with a single unseal key. The root token is already
authenticated to the CLI, so you can immediately begin using Vault.

You may need to set the following environment variable:

    $ export VAULT_ADDR='https://127.0.0.1:8200'

The unseal key and root token are displayed below in case you want to
seal/unseal the Vault or re-authenticate.

Unseal Key: 1+yv+v5mz+aSCK67X6slL3ECxb4UDL8ujWZU/ONBpn0=
Root Token: s.XmpNPoi9sRhYtdKHaQhkHP6x

Development mode should NOT be used in production installations!

==> Vault server started! Log data will stream in below:
                      
                    

配置保管庫

服務器激活後(非開發模式),可以使用基於 HCL 或 JSON 的文件配置 Vault。 下面是一個配置文件的例子。

                      
                        storage "consul" {
  address = "127.0.0.1:8500"
  path    = "vault"
}

listener "tcp" {
  address     = "127.0.0.1:8200"
  tls_disable = 1
}

telemetry {
  statsite_address = "127.0.0.1:8125"
  disable_hostname = true
}
                      
                    

保存配置後,管理員將使用 Vault Server -config 命令指示配置文件的位置。

檢查正在運行的服務器

要驗證開發服務器是否正在運行,請運行 vault status 命令。 如果開發服務器已啟動,用戶應該會看到以下輸出。

                      
                        [[email protected] ~]# vault status

Key             Value
---             -----
Seal Type       shamir
Initialized     true
Sealed          false
Total Shares    1
Threshold       1
Version         1.5.0
Cluster Name    vault-cluster-4d862b44
Cluster ID      92143a5a-0566-be89-f229-5a9f9c47fb1a
HA Enabled      false
Copy
If the output looks different, restart the dev server and try again.
                      
                    

添加秘密

要創建秘密,我們使用以下語法。 kv 標誌代表 keyvault,put 標誌表示我們正在向路由添加秘密。

                      
                        vault kv put <path> <key>=<value> command.

[[email protected] ~]# vault kv put secret/hithere user=password

Key              Value
---              -----
created_time     2021-03-12T21:40:01.635656Z
deletion_time    n/a
destroyed        false
version          1
                      
                    

此命令將 user=password 對寫入 secret/hithere 路徑。

找回秘密

可以使用以下語法檢索秘密。

                      
                        [[email protected] ~]# vault kv get <path>
                      
                    
                      
                        [[email protected] ~]# vault kv get secret/hithere

====== Metadata ======
Key              Value
---              -----
created_time     2021-03-12T21:41:17.568155Z
deletion_time    n/a
destroyed        false
version          2

===== Data =====
Key        Value
---        -----
user       password
                      
                    

刪除秘密

要刪除秘密,我們使用 Vault kv delete 命令。

                      
                        [[email protected] ~]# vault kv delete secret/hithere

Success! Data deleted (if it existed) at: secret/hithere
                      
                    

創建 Vault 用戶

最佳實踐要求我們創建一個沒有權限使用 Vault 的系統用戶。

                      
                        [[email protected] ~]# useradd --system --home /etc/vault --shell /bin/false vault
[[email protected] ~]# chown -R vault:vault /etc/vault /var/lib/vault/
                      
                    

秘密引擎

每個秘密引擎路徑都完全獨立並與其他秘密引擎路徑隔離。 例如,在 /path/foo 啟用的秘密引擎 A 無法與在 /path/foo 啟用的秘密引擎 B 通信。

啟用秘密引擎

                      
                        [[email protected] ~]# vault secrets enable -path=A /path/foo
Success! Enabled the kv secrets engine at: kv/
                      
                    

禁用秘密引擎

當禁用特定的秘密引擎時,將立即撤銷使用該特定秘密引擎生成的所有秘密。 要禁用現有的秘密引擎,我們使用以下命令。

                      
                        [[email protected] ~]# vault secrets disable
                      
                    

結論

Vault 是一款可靠且高效的軟件,用於在動態基礎架構中創建、管理和加密敏感的 API 密鑰、數據庫憑據或其他與身份驗證相關的用戶數據。 Vault 緊密存儲、保護和控制對多種類型平台的訪問。 它是一個必不可少的工具,客戶可以擴展以用於操作系統的獨立版本和容器化配置。 總的來說,這是一款任何客戶都可以實施的卓越安全產品。

詳細了解我們的產品以及它們如何為您提供幫助。

相關文章