HashiCorp VaultㄧQ2’s Nomad 利用 Consul 和 Vault 動態檢索機密
公司介紹
Q2 提供全面的數位銀行解決方案,包括開戶、數位網路銀行、貸款解決方案、欺詐保護等等。我們使金融機構能夠為每個帳戶持有人提供豐富的資料驅動體驗。我們滿足消費者銀行業務、小型企業、企業銀行業務,甚至金融科技公司的需求。
美國十分之一的網上銀行用戶使用 Q2。每分鐘價值 260 萬美元的資金流經我們的平台,每年約 1.5 萬億美元。美國前 100 家銀行中有 33% 是 Q2 的客戶,大多運行在 Nomad 之上的應用程式中。
挑戰
在 2016 年至 2017 年,我們的應用程式以非常過時的方式運行。部署和升級我們的應用程式涉及大量繁瑣的手動工作,錯誤的可能性也很大。在部署和運行應用程式後,需要進行大量維護。管理生命週期通常很辛苦,確保應用程式保持運行就需要很多時間。
我們以手動的方式響應告警並重新啟動服務,在整個環境中引入新的方法是幾乎是不可能的,而且風險很大。如果我們想同時向所有客戶大規模推出更改,則需要大量的計劃和工作,並且風險很高。因為涉及大量要變動的應用程式的修改,這是一項需要手動的任務。我們需要一種更好的方法來擴展環境,以實現快速變更和自助服務。很明顯,隨著我們繼續擴大規模,我們需要徹底改革。
在評估解決方案和未來走向時,必須滿足幾個重要的考慮。首先,我們的應用程式的很大一部分是基於 Windows。例如,我們的核心業務邏輯在 IIS 上運行。我們需要有 Windows 和 Linux 支援。
儘管我們更喜歡運行容器,但我們沒有非得要使用它們。如果可以,我們更喜歡直接在 VM 上運行應用程式。我們希望在不對現有應用程式進行大量且耗時的重寫為前提下改進工作流程。由於我們所處的行業,安全性和合規性執行極為關鍵。最後,我們需要簡單、易於使用和維護的解決方案。
使用產品
解決方案
HashiCorp Nomad
我們評估了幾個主要的協作器。最終,我們選擇了 Nomad,因為它滿足了我們的所有要求。
全面增加部署
由於部署十分簡單,因此建立應用程式變得更加容易,可以進行更好的測試和實驗,並且總體上更容易更改。部署和變更也具有更好的歷史記錄,以便稽核。
提高應用程式彈性
我們的生產堆棧也獲得額外的彈性。這樣做的方法是防止應用程式堆棧中的單點故障,並確保多個副本同時運行。 Nomad 自動確保服務保持健康運行,並為我們處理 VM 故障和維護事件。
提高標準和安全性
我們的客戶十分期待其安全和合規的環境,而 Nomad 正在幫助我們實現這個目標。我們能夠改善和執行所有應用程式的標準。應用程式堆棧現在被定義為程式碼,可以進行版本控制,經過同行審查程序。
我們能夠透過自動化工具進行更改,以強制執行標準化。例如,像 Sentinel 這樣的工具,允許我們在作業中強制執行允許的驅動程式、允許的服務和標準配置選項。它還允許我們指定最低和最高資源標準。
使用 Nomad ACL 和 Vault 對管理和部署作業的訪問進行嚴格控管。這意味著更改具有稽核追蹤,並且可能曾經存在於配置文件中的機密現在已移至 Vault。 Nomad 和 Vault 都具有稽核日誌紀錄功能。這可以讓您更好地了解環境中發生的行為。
實踐新技術
使用 Nomad,我們的 SRE 和平台工程團隊已經能夠過渡到一些最新的技術管理實踐。我們能夠進步到高市場佔有率及低預期增長的業務。底層 VM 現在更加通用,對於生命週期和維護十分合適。在 Q2,我們能夠將焦點轉移到支援我們的開發團隊和其他業務部門。
環境概述
今天,我們在 Nomad 的整個環境中運行了 7,000 多個工作,也就是跨 1,500 個 VM 的 40,000 多個任務。我們今天大部分使用 HashiStack, Nomad, Consul 和 Vault。我們還使用 Terraform 和 Packer 進行 VM 管理。我們的大多數 Nomad 基礎設施都位於地端,非常傳統但現代的資料中心。
作業文件(Job File)
我們嘗試從 Windows 的 Docker 開始,但遇到太多挑戰,例如穩定性和密度損失。透過 app 池驅動程式,我們維護運行 IIS 以及 Nomad 和 Consul agents 的 VM。當我們提交作業時,artifact stanza 會下拉 app 池內容並在 IIS 中啟動它。隨著我們遷移到 .NET Core,下一步是從綁定 IIS 的應用程式遷移到直接的可執行文件。
我們透過 Jinja 模板過程生成 Nomad 作業,並將其儲存在版本控制中。這個作業片段以熟悉的 HCL 格式分成兩個映像檔。我們今天為每個 Nomad 區域生成一個作業文件,也期待嘗試更多區域部署。我們將物理資料中心視為 Nomad 區域,主要是由於 Nomad leader如何從地端 Vault 叢集中檢索 Vault 令牌。
Template Stanzas
我們在作業中大量使用 template stanzas。這讓我們可以保留通用容器和應用程式池,並且我們在運行時使用作業文件中的 template stanzas,對我們需要的自定義進行分層。這是在幕後使用 Consul 模板,強化您的模板和循環。它還允許您從 Vault 中提取機密和憑證,您不必將它們直接儲存在作業文件中。
使用 Vault PKI,可以在需要時動態提取憑證。由於它們被視為租賃(lease),Nomad 和 Vault 會在憑證自動到期時輪換和刷新。
Consul 和 Vault 整合
在 Nomad 中,我們充分利用內建的 Consul 和 Vault 整合。我們所有的工作都有service stanzas,包括額外的標籤和健康檢查。我們利用 Vault 與 Nomad 的整合,使用令牌角色而不是 Vault,因此您可以在作業中指定 Vault 策略。這些策略授予您訪問 Vault 中特定路徑的權限。這樣,您可以使用 template stanzas 直接從 Vault 中提取機密或憑證。
我們使用 Vault 的性能複製在資料中心之間複製機密。團隊需要更新主要 Vault 叢集中的機密,以及在資料中心之間複製的機密。
並且,我們在 Vault 中使用 Consul 和 Nomad 的機密引擎,因此操作人員可以使用其 LDAP 憑證登錄 Vault。然後,他們可以請求 Nomad 令牌並臨時訪問 Nomad 叢集。這意味著令牌會被自動撤銷,並且有完整的稽核追蹤。