fbpx

了解 HashiCorp Vault 機密管理工具:運作流程、核心功能、多元使用案例

Vault 是什麼?

HashiCorp Vault 是一個基於「身份機密」和「加密管理」系統,Vault 在給予客戶(用戶、機器、應用程式)機密權限或機敏資料時,會先對他們的身份進行驗證和授權。

機密泛指任何您想嚴格控管的存取權限,例如:API 密鑰、密碼和認證。

Vault 的加密解決方案是透過驗證和授權方案組合而成。

透過 Vault 的 UI、CLI 或 HTTP API ,「機密存取權限」和「其他機敏資料」能夠被安全的儲存、管理、嚴格的限制和稽核。

現代的系統往往需要存取大量機密,這些機密包括資料庫憑證、用於外部服務的 API 金鑰以及服務導向架構通訊憑證等等。

由於不同的平台有不同的機密規則,要得知誰存取了哪些機密是很困難的事情。

因此,如果無法客製化不同平台的規則(Policy),動態管理金鑰、資料庫安全和詳細的稽核日誌等功能幾乎是不可能的實現的。

Vault 正是為了解決這種煩惱而生!

Vault 如何運作? 

Vault 的解決方案主要與令牌(token)的管理有關,而每個令牌都有自己所屬的規則。

因為每條規則都基於路徑,因此規則能夠限制訪客的行動和對路徑的存取權限。

利用 Vault,您能夠手動生成令牌,將這些令牌發送給訪客,或讓訪客在成功登入系統時獲得令牌。

下圖為 Vault 工作流程中的關鍵步驟:

Key Steps in the Vault Workflow

Vault 的工作流程由四大關鍵步驟組成:

     

      • 身分識別:Vault 會透過訪客提供的訊息鑑定訪客身份的真偽。一但訪客通過 Vault 的識別鑑定辦法,Vault 便會生成令牌,這張令牌會伴隨著對應的規則

       

        • 身分驗證:Vault 會透過第三方資料源(如:Github、LDAP、AppRole 等等)驗證訪客身份

         

          • 授權:匹配與訪客身份相對應的規範。該規範 (policy) 是由一套規則 (rules) 組成,用於規定訪客能夠根據他手中的令牌存取哪些 API 端點。這套規範能夠提供明確的方案來允許或禁止訪客存取特定路徑的程式或操作的權限。

           

            • 使用與存取:Vault 透過發佈令牌,允許訪客對機密、金鑰和加密功能的權限。這些令牌的規則是基於訪客的身份制定而成的

          為什麼 Vault 是您的最佳選擇?

          現今,幾乎所有企業都面臨著憑證在組織內部蔓延的問題。

          密碼、API 金鑰和憑證被明文寫死、或被存入應用原始碼、設定檔或其他位置。

          由於這些憑證無處不在,要真正了解誰被授權什麼機密或誰對什麼機密有存取權,是極度困難且令人心生畏懼的。

          另外,被明文寫死的憑證同時也增加了被內部或外部人員惡意攻擊的機率。

          Vault 的誕生便是為了解決上述機密蔓延的問題。

          Vault 獲取並集中所有憑證在同一個地方,從而減少不必要的憑證暴露。

          除此之外,Vault 進一步確保用戶、應用程式和系統經過身份驗證並確保存取資源的授權。

          同時,還提供了審核軌跡,可以擷取和保存客戶端的操作記錄。

          Vault 的核心功能

          機密儲存安全性

          任意鍵/值機密 (Arbitrary key/value) 可以儲存在 Vault 中, Vault 在將這些機密加密後寫入持久性倉庫 (persistent storage)。

          因此僅擁有原始儲存庫的存取權限不足以存取這些機密,Vault 可以寫入硬碟、Consul 等。

          動態機密

          Vault 可以為某些系統按需生成機密,例如 AWS 或 SQL 資料庫。

          例如,當應用程式需要訪問 S3 資料庫時,它會向 Vault 索取憑證,而 Vault 將根據需要生成具有效期的 AWS 密鑰組。

          建立這些動態機密後,Vault 也會在效期結束後自動撤銷它們。

          數據加密

          Vault 可以在不儲存數據的情況下加密和解密數據。

          這允許安全團隊定義加密參數,以及開發人員可以將加密數據儲存在 SQL 資料庫等位置,而不必另外設計加密方法。

          租約與續約 (Leasing and Renewal)

          Vault 中的所有機密都有相對應租約,在租約結束時,Vault 將自動撤銷該機密,客戶端可以通過內建的 API 更新租約。

          撤銷

          Vault 內建機密撤銷, Vault 不僅可以撤銷單個機密,還可以撤消機密樹(a tree of secrets),例如特定用戶讀取的所有機密,或特定類型的所有機密。

          撤銷有助於密鑰滾動以及在入侵情況下鎖定系統。

          Vault 用例

          HashiCorp Vault 是一套基於「身份驗證機密」和「加密管理」系統。

          Vault 在交出機密權限和提供機敏資料前會對用戶(使用者、機器、應用程式)進行驗證和授權,以下為 HashiCorp 的 4 大用例。

           

          Vault 架構圖

          1. 機密儲存庫 (General Secret Storage)

          隨著工作負載變得越加短暫、生命週期也越來越短,長久存在的靜態憑證變成很大安全威脅因素。

          如果憑證意外洩露,或者員工留下包含 AWS 存取密鑰的筆記,或者有人將他們的 S3 存取令牌發布到公開 GH 儲存庫,該怎麼辦?

          使用 Vault,您可以生成短暫的即時憑證,這些憑證會在效期結束時「自動撤銷」,這也代表用戶和安全團隊不必手動撤銷或更改這些憑證。

          靜態機密

          憑證的權限可以是長久和靜態的,它們鮮少或甚至不會受到更動。

          Vault 能夠將這些憑證儲存在加密屏障中,而客戶端也能夠在應用程式中呼叫這些憑證。

          動態機密

          Vault 機密儲存庫的核心價值在於它能夠生成「動態憑證」。

          這些憑證會在用戶需要時被創建,Vault 能夠管理這些憑證的生命週期,包括但不限於 – 將這些憑證在一段指定的時間後刪除。

          除了資料庫憑證管理,Vault 還能管理使用者目錄、SSH 憑證、PKI 憑證等等。

          2.資料加密 (Data Encryption)

          許多組織在雲端或混合資料中心尋找加密/ 解密的解決方案,然而部署加密系統或維運複雜的金鑰管理基礎架構,將面臨「大量的成本花費」和「開發不易」這兩個議題。

          Vault 提供的加密服務將機密集中化管理,以簡化資料在傳輸時與在雲端和資料中心儲存時的程序。

          Vault 能夠將儲存在他處的資料進行加密/解密,該原理是允許應用程式加密存放於儲存庫中的資料。

          Vault 的資安團隊負責管理和維護 Vault 環境中的加密資料,讓開發者只需專注於需要加密/解密的資料。

          3.身份權限存取 (Identity-Based Access)

          隨著不同的雲、服務和系統激增,企業需要尋一個能夠管理身份蔓延的解決方案,並且還要能夠整合身分權限提供者。

          隨著組織嘗試以單一身份權限存取跨雲/跨平台的同時,組織也被迫管理多個身份管理系統,這會導致危及安全基礎設施的風險增加。

          不同的平台有不同的身份驗證方法和結構,因此難以用不同形式的憑證識別用戶或身份。

          Vault 通過使用統一的 ACL 系統來代理對系統和機密的存取,並可以合併不同的身分權限提供者,從而解決了這個挑戰。

          通過基於身份的存取,組織可以利用任何受信任的資源身份來規範和管理系統和應用程式訪問,以及跨各種雲、系統和端點的身份驗證。

          4.密鑰管理 (Key Management)

          如果要與雲端供應商合作,意味著你需要使用它們的資安功能,這涉及到供應商在自身的金鑰管理系統(KMS)中發行和儲存的加密金鑰。

          不論是否在雲上,您也可以維護信任根源( Root of Trust)和控管加密金鑰的生命週期。

          KMS 為雲端供應商對金鑰的分發和生命週期管理提供一致的工作流程,讓企業利用 Vault 集中化管理金鑰,同時利用與 KMS 供應商相容的加密功能。

          參考更多 Vault 相關資訊:https://www.omniwaresoft.com.tw/hashicorp-vault

          Related Posts