當前位置:
首頁 > 知識 > Hashicorp Vault:安全性與複雜性的平衡

Hashicorp Vault:安全性與複雜性的平衡

Hashicorp Vault:安全性與複雜性的平衡

現代系統需要訪問大量的敏感信息如:資料庫訪問憑證,用於外部服務的API密鑰,面向服務架構的通信憑據等,這使得了解誰正在訪問什麼敏感信息變得非常困難,並且往往是特定於某個平台。如果沒有定製的解決方案,為系統添加密鑰滾動切換,安全存儲和詳細的審計日誌幾乎是不可能的。


Vault

HashiCorp的Vault是一個安全訪問Secrets的工具。Secrets是需要嚴格控制訪問許可權的任何內容,例如API密鑰,密碼,證書等。Vault為任何secret提供統一的介面,同時提供嚴格的訪問控制並記錄詳細的審計日誌。

其主要特性包括:

  • 安全的Secrets存儲

    任意鍵/值Secrets可以存儲在Vault中。Vault在將這些Secrets寫入永久存儲器之前對其加密,因此訪問原始存儲器無法直接訪問您的敏感信息。Vault可以將加密數據寫入磁碟,Consul等等。

  • 動態的Secrets

    Vault可以為某些系統(如AWS或SQL資料庫)動態生成訪問憑據。例如,當應用程序需要訪問MySQL資料庫時,它會向Vault詢問憑據,Vault將根據需要生成具有有效許可權的MySQL資料庫訪問密鑰對。創建這些動態訪問憑據之後,Vault還會在租期結束後自動撤銷這些憑據。

  • 數據加密

    Vault可以加密和解密數據而不存儲。這允許安全團隊定義加密參數,開發人員負責將加密的數據存儲在諸如SQL資料庫中而不必設計自己的加密方法。

  • 租賃和續約(Leasing and Renewal)

    Vault中的所有Secrets都具有與其關聯的租約。在租賃結束時,Vault會自動撤銷該Secret。客戶可以通過內置的更新API更新租約。

  • 撤銷(Revocation)

    Vault內置支持Secrets的撤銷。Vault不僅可以撤銷單個secret,而且可以撤銷Secrets樹,例如由特定用戶讀取的所有Secrets或特定類型的所有Secrets。撤銷功能可以協助Secrets的滾動切換以及在入侵的情況下鎖定系統。

Vault架構

Hashicorp Vault:安全性與複雜性的平衡

在詳解上述架構之前,先來看一下Vault架構所涉及的幾個概念:

  • 存儲後端(Storage Backend)

    存儲後端負責加密數據的持久存儲。Vault不信任存儲後端,並且僅期望其提供持久性存儲功能。在啟動Vault伺服器時需要配置存儲後端。

  • 屏障(Barrier)

    屏障如同銀行保險庫的外層防護鋼殼和圍繞穹頂的混凝土。在Vault和存儲後端之間流動的所有數據都通過屏障。該屏障確保僅輸出加密數據,並且該數據在進入時被驗證和解密。任何內部數據可以訪問之前,障礙必須「開封」。

  • Secret後端(Secret Backend)

    Secret後端負責管理Secrets。簡單的Secret後端像「generic」後端在查詢時簡單地返回相同的secret。某些後端支持使用策略在每次查詢時動態生成secret。這允許使用唯一的secret,可以讓Vault進行細粒度的撤銷和策略更新。例如,一個MySQL後端可以配置一個「web」策略。當讀取「web」密碼時,將生成一個新的MySQL用戶/密碼對,其僅具有Web伺服器的有限許可權集。

  • 審計後端(Audit Backend)

    審計後端負責管理審計日誌。來自Vault的每個請求和來自Vault的響應都將通過配置的審核後端。這提供了一種將Vault與不同類型的多個審核日誌記錄目標集成的簡單方法。

  • 憑據後端(Credential Backend)

    憑據後端用於驗證連接到Vault的用戶或應用程序。一旦驗證,後端返回應用的適用策略列表。Vault接受經過身份驗證的用戶,並返回可用於將來請求的客戶端令牌。例如,用戶密碼後端使用用戶名和密碼來認證用戶。

  • 客戶端令牌(Client Token)

    客戶端令牌在概念上類似於網站上的會話cookie。用戶驗證後,Vault會返回一個用於將來請求的客戶端令牌。Vault使用令牌驗證客戶端的身份並強制實施適用的ACL策略。此令牌通過HTTP頭傳遞。

  • Secret

    Secret是Vault返回的包含機密或加密信息的任何內容。不是由Vault返回的所有內容都是Secret,例如系統配置,狀態信息或後端策略不被視為Secrets。Secret總是有相關的租約,這意味著客戶端不能假設Secret可以無限期地使用。Vault將在租賃結束時撤銷Secret,並且維護人員可以在租賃結束之前進行干預以撤銷Secret。

  • 伺服器(Server)

    Vault依賴於作為伺服器運行的長時間運行的實例。 Vault伺服器提供了一個API,客戶端與之交互並管理所有後端之間的交互,ACL實施和Secret租用撤銷。採用基於伺服器的架構可以客戶端與安全密鑰及策略分離,實現集中式審計日誌記錄並簡化操作員的管理。

再看上述Vault架構圖,從圖中可以看出組件被屏障Barrier清晰的隔離為內外兩部分。只有存儲後端和HTTP API位於外部,其他組件都位於屏障內部。存儲後端是不可信的,被Vault用來存儲加密後的數據。

Vault啟動時處於密封(「sealed」)狀態,在可以與其交互之前,Vault必須切換到啟封(「unsealed」)狀態。狀態切換需要提供啟封鑰匙。Vault初始化時會生成一把加密密鑰來保護所有的數據,這個加密密鑰受主鑰匙(master key)保護。默認情況下,Vault使用[Shamir的密鑰共享演算法](https://en.wikipedia.org/wiki/Shamir"s_Secret_Sharing)將主鑰匙拆分為5份,必須提供5個密鑰中任意3個來重建主鑰匙。

Hashicorp Vault:安全性與複雜性的平衡

主鑰匙拆分的數量及用來重建主鑰匙的最低份數都可以設置,也可以禁用Shamir的密鑰共享演算法,這時需要使用主鑰匙直接啟封Vault。一旦Vault檢索到加密密鑰,它就能夠解密存儲後端中的數據,並進入啟封狀態。取消密封后,Vault會載入所有配置的審計,憑據和Secrets後端。

當客戶端首次連接到Vault時,需要進行身份驗證。 Vault提供可配置的憑據後端(Credential Backend),為客戶端提供靈活的身份驗證機制,如操作人員可使用用戶名/密碼,GitHub驗證,而應用可以使用公私鑰或Token令牌驗證。一個驗證請求從Vault內核進入憑據後端,由其校驗合法性並返回一個關聯的策略列表。

策略只是一個命名的ACL規則,例如,「root」策略是一個內置策略,具有所有資源的訪問許可權。可以創建任意數量的命名策略來細粒度的控制訪問路徑。Vault以白名單模式運作,除非透過策略明確授予存取許可權,否則不允許執行操作。由於用戶可能具有多個關聯的策略,因此如果任何一個策略允許,則允許操作。策略由內部策略存儲庫存儲和管理,此內部存儲通過系統後端操作,系統後端始終掛載在sys/下。

校驗過程中,憑據後端通過提供的策略進行驗證,如果驗證通過會生成一個新的客戶端令牌保存到令牌存儲,並返回給客戶端供後續請求使用。如果憑據後端的配置為客戶端令牌設定了租約,則該客戶端令牌必須周期性的生成以避免變得無效。

校驗通過後,所有的請求必須提供令牌,通過令牌可以校驗客戶端是否得到授權並載入相關的策略,載入的策略用於校驗用戶特定操作是否得到授權。操作請求隨後路由到Secrets後端,由其根據自身類型進行相應的處理。如果Secrets後端返回了一個secret,Vault內核會將其註冊到過期管理服務並為其附加一個租用ID。客戶端可以使用這個租用ID來撤銷或重新生成其secret,如果客戶端允許租約自動過期,則由過期管理服務負責secret的到期撤銷。

Vault內核負責記錄請求和響應並發送給審計匯流排,再由其存儲到審計後端。在請求處理流程之外,Vault內核負責某些後台操作,如關鍵的租約管理可以撤銷客戶端令牌和自動撤銷Secrets。此外,Vault通過使用回滾管理器使用預寫寫日誌(write ahead logging)來處理某些部分故障情況的恢復。


工作流程

以下是從Hashicorp Vault中存儲和檢索Secret機密信息的工作流程:

Hashicorp Vault:安全性與複雜性的平衡

使用Hashicorp Vault的明顯缺點是額外的複雜性 - 即使使用簡單的設置和有限的功能,仍然需要團隊成員負責維護和管理訪問列表和Vault伺服器本身。

然而,在具有較高安全性要求的項目中,效益可能是巨大的。Vault遵循Hashicorp的優雅的解決方案設計原則,以獨立的方式分離不同的身份驗證和秘密存儲後端。它允許根據需要對Secret機密信息進行細粒度控制,可以在文件夾中為每個Secret或每組Secret定義策略和TTL設置。此外,Enterprise版本還提供技術支持,並允許跨多個數據中心進行複製。它是自主託管的,限制了對外部供應商的依賴,它是開源的,允許審核員根據需要評估代碼,以證明解決方案的安全性。

Secret Backends

  • AWS

  • Cassandra

  • Consul

  • Cubbyhole

  • Generic

  • MongoDB

  • MSSQL

  • MySQL

  • PKI (Certificates)

  • PostgreSQL

  • RabbitMQ

  • SSH

  • Transit

  • Custom

Auth Backends

  • App ID

  • AppRole

  • AWS EC2

  • GitHub

  • LDAP

  • MFA

  • Okta

  • RADIUS

  • TLS Certificates

  • Tokens

  • Username & Password

Audit Backends

  • File

  • Syslog

  • Socket

更多信息,請參考Hashicorp Vault的官方文檔。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 領域修鍊之路 的精彩文章:

DCOS中的服務發現與負載均衡
在DCOS中搭建私有DOCKER鏡像倉庫

TAG:領域修鍊之路 |

您可能感興趣

思科或收購HashiCorp:舉行初步性的收購會談