<矩形寬度=“1200”高度=“340”rx=“12”填滿=“url(#bg-4273)”/>
<矩形x =“60”y =“50”寬度=“4”高度=“60”rx =“2”填滿=“#fbbf24”/>
<矩形x =“80”y =“50”寬度=“121”高度=“28”rx =“14”填滿=“#fbbf24”不透明度=“0.15”/>
1. Raft 整合式儲存深入探究
從 Vault 1.4+ 開始,整合式儲存 (Raft) 是建議的儲存後端。它消除了對 Consul 等外部儲存的依賴,簡化了架構和操作。
Raft 共識架構
<預><代碼>┌────────────────────────────────────────────────────────┐ │ Vault HA集群 │ │ │ │ ┌────────────┐ ┌──────────────┐ ┌────────────┐ │ │ │ 節點 1 │ │ 節點 2 │ │ 節點 3 │ │ │ │ (領導者) │ │ (追隨者) │ │ (追隨者) │ │ │ │ ┌──────────┐ │ │ ┌────────┐ │ │ ┌──────────┐ │ │ │ │ │ 筏板 │ │ │ │ 筏板 │ │ │ │ 筏板 │ │ │ │ │ │ 記錄 │◄├──├─▶│ 記錄 │◄├──├─▶│ 記錄 │ │ │ │ │ └──────────┘ │ │ └────────┘ │ │ └──────────┘ │ │ │ │ ┌──────────┐ │ │ ┌────────┐ │ │ ┌──────────┐ │ │ │ │ │ BoltDB │ │ │ │ BoltDB │ │ │ │ BoltDB │ │ │ │ │ └──────────┘ │ │ └────────┘ │ │ └──────────┘ │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └──────────────────────────────────────────────────────────────┘
Raft 儲存配置
#Vault-config.hcl
存放“筏”{
路徑=“/opt/vault/data”
node_id = “庫節點-1”
重試加入{
Leader_api_addr = "https://vault-node-2.company.com:8200"
Leader_ca_cert_file = "/opt/vault/tls/ca.pem"
Leader_client_cert_file = "/opt/vault/tls/client.pem"
Leader_client_key_file = “/opt/vault/tls/client-key.pem”
}
重試加入{
Leader_api_addr = "https://vault-node-3.company.com:8200"
Leader_ca_cert_file = "/opt/vault/tls/ca.pem"
Leader_client_cert_file = "/opt/vault/tls/client.pem"
Leader_client_key_file = “/opt/vault/tls/client-key.pem”
}# 效能調整
Performance_multiplier = 1 # 針對快速網路進行最佳化(預設值:5)
}
偵聽器“tcp”{
地址 =“0.0.0.0:8200”
群集位址 = "0.0.0.0:8201"
tls_cert_file = “/opt/vault/tls/server.pem”
tls_key_file = “/opt/vault/tls/server-key.pem”
tls_client_ca_file = “/opt/vault/tls/ca.pem”
}
cluster_addr = “https://vault-node-1.company.com:8201"
api_addr = “https://vault-node-1.company.com:8200"
密封“awskms”{
區域 =“ap-東南-1”
kms_key_id = "別名/vault-unseal"
}
Autopilot — 自動叢集管理
# Xem Autopilot 狀態
vault operator raft autopilot state
#Cấu hình 自動駕駛儀
vault operator raft autopilot set-config \
-cleanup-dead-servers=true \
-dead-server-last-contact-threshold=24h \
-最小法定人數=3 \
-伺服器穩定時間=10s
# 快照 tự động(企業)
vault operator raft autopilot snapshot-config set \
-間隔=1小時\
-保留=72 \
-path-prefix =“筏/快照”
手動快照
# Tạo 快照
vault operator raft snapshot save /backup/vault-$(date +%Y%m%d%H%M).snap
# 復原快照
vault operator raft snapshot restore /backup/vault-20250101.snap
# 列出對等點
vault operator raft list-peers
# 刪除失效的對等點
vault operator raft remove-peer vault-node-4
2. HA架構模式
3 節點群集(標準)
<表> <標題>
特徵值 <正文> 節點號3 容錯1個節點故障 法定人數2 適合分期、中小型生產5 節點叢集(企業/大型)
<表> <標題>
特徵值 <正文> 節點編號5 容錯2個節點故障 法定人數3 適合大生產、多AZ多可用區域部署
<前><程式碼> 區域:ap-southeast-1 ┌──────────────┐ ┐────────────────┐ ┌──────────────┐ │ AZ-1 │ │ AZ-2 │ │ AZ-3 │ │ │ │ │ │ │ │ ┌────────┐ │ │ ┌──────────┐ │ │ ┌────────┐ │ │ │ Vault-1 │ │ │ │ Vault-2 │ │ │ │ Vault-3 │ │ │ │ (領導者) │ │ │ │(追隨者) │ │ │ (追隨者) │ │ └────────┘ │ │ └──────────┘ │ │ └──────────┘ │ │ │ │ │ │ │ │ ┌────────┐ │ │ │ │ ┌──────────┐ │ │ │ LB │ │ │ ┌──────────┐ │ │ │ LB │ │ │ └──────────┘ │ │ │ LB │ │ │ └──────────┘ │ │ │ │ └──────────┘ │ │ │ └────────────────┘ └────────────────┘ └────────────────┘ ▲ ▲ ▲ └──────────────────┴──────────────────┘ 網路負載平衡/DNS
3. TLS 端對端
使用 Vault PKI 建立憑證
# 根 CA vault secrets enable -path=pki-root pki vault secrets tune -max-lease-ttl=87600h pki-root vault write pki-root/root/generate/internal \ common_name="公司根 CA" \ 生存時間=87600小時中間 CA cho Vault 集群
vault secrets enable -path=pki-vault pki vault secrets tune -max-lease-ttl=43800h pki-vault
vault write pki-vault/intermediate/generate/internal
common_name="Vault 中間 CA"
| jq -r '.data.csr' >Vault-intermediate.csrvault write pki-root/root/sign-intermediate
[email protected]
ttl=43800h
| jq -r '.data.certificate' >Vault-intermediate.pemvault write pki-vault/intermediate/set-signed
證書[email protected]Tạo 角色 cho Vault 伺服器憑證
vault write pki-vault/roles/vault-server
allowed_domains="vault.company.com,company.internal"
allowed_subdomains=true
最大生存時間=8760h頒發證書
vault write pki-vault/issue/vault-server
common_name="vault-node-1.company.internal"
alt_names="vault.company.com"
ip_sans="10.0.1.10"
生存時間=720小時
4。生產強化清單
作業系統層級調整
# /etc/sysctl.d/99-vault.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 0
vm.dirty_ratio = 10
# 申請
sysctl--系統
# 檔案描述子限制
# /etc/security/limits.d/vault.conf
vault soft nofile 65536
vault hard nofile 65536
vault soft nproc 65536
vault hard nproc 65536
Systemd 服務強化
# /etc/systemd/system/vault.service
[單位]
描述=HashiCorp Vault
文檔=https://www.vaultproject.io/docs
需要=網路在線.target
After=網路在線.target
ConditionFileNotEmpty=/etc/vault.d/vault.hcl
[服務]
類型=通知
使用者=保管庫
組=庫
ExecStart=/usr/bin/vault 伺服器-config=/etc/vault.d/vault.hcl
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=進程
KillSignal=SIGINT
重新啟動=失敗時
重啟秒=5
超時停止秒=30
限制NOFILE=65536
LimitMEMLOCK=無窮大
# 安全加固
保護系統=完整
保護首頁=true
PrivateTmp=true
私人設備=true
無新權限=true
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_BIND_SERVICE
環境能力=CAP_IPC_LOCK
[安裝]
WantedBy=多用戶.target
Vault 配置強化
# ProductionVault.hcl
使用者介面=真
停用_mlock = false
log_level = “警告”
# 停用未使用的功能
raw_storage_endpoint = false
偵聽器“tcp”{
地址 =“0.0.0.0:8200”
群集位址 = "0.0.0.0:8201"
tls_cert_file = “/opt/vault/tls/server.pem”
tls_key_file = “/opt/vault/tls/server-key.pem”
tls_client_ca_file = “/opt/vault/tls/ca.pem”
tls_min_version =“tls13”
tls_require_and_verify_client_cert = false
# 遙測
遙測{
未經身份驗證的指標存取 = false
}
}
# 審核設備 — BẮT BUỘC trong 生產
# Cấu hình sau khi 透過 CLI 解封
常規清單
<表> <標題> #項目狀態 <正文> 1TLS 端對端(API + 集群)☐ 2自動解封(KMS / HSM)☐ 3審核設備已啟用☐ 4初始根令牌已撤銷☐ 5mlock 已啟用(disable_mlock = false)☐ 6檔案描述子限制增加☐ 7交換已停用或交換性 = 0☐ 8專用機器/虛擬機器☐ 9防火牆 — 僅開放 8200、8201☐ 10網路分段☐ 11自動備份計畫☐ 12監控和警報☐ 13已配置日誌輪換 ☐ 14最低權限策略☐5。摘要
Raft 整合式儲存 — 內建 HA 存儲,無需 Consul
Autopilot - 自動管理叢集成員資格、清除失效伺服器
多可用區 - 跨可用區分佈節點以實現容錯
TLS 端對端 - 生產環境中必需
強化 - 作業系統調整、systemd 安全、mlock、防火牆、審核