您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“在RavenDB中如何確保數據庫安全”,內容詳細,步驟清晰,細節處理妥當,希望這篇“在RavenDB中如何確保數據庫安全”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
據估計,到 2020 年,網絡犯罪已使全球經濟損失超過 1 萬億美元,因此數據庫安全從未如此重要。為了正確保護數據庫,必須保護服務器和節點之間傳輸的數據以及服務器上的靜止數據。
靜態加密可保護存儲在服務器上的數據,防止其被惡意查看、竊取或以其他方式訪問。例如,如果您的磁盤丟失或被盜,攻擊者將可以完全訪問您的數據。但是,加密后數據將無法讀取,攻擊者只會將其視為隨機噪聲。
數據庫安全的一個常見問題是它可能變得太復雜而難以理解和實現。結果,它經常被推遲、遺忘或完全放棄。RavenDB 的解決方案是在后臺處理安全問題,只需要用戶在設置時點擊幾下即可完全保護數據庫。(當然,與 RavenDB 中的大多數事情一樣,如果您愿意,您可以選擇獲得更多的實踐機會。)
RavenDB 使用一種名為XChaCha20Poly1305 的經過身份驗證的加密方案,其密鑰為 256 位。XChaCha20Poly1305 的細節遠遠超出了本文的范圍,但重要的是它的工作非常好,已經過行業專家的徹底審查,并由 IETF(互聯網工程任務組)標準化.
數據在盡可能低的層——存儲層——使用 RavenDB 自己定制的存儲引擎進行加密;沃龍。這一層的加密對服務器的其他級別是完全透明的,這意味著您永遠不必處理它的復雜性。
在這一層執行加密的另一個優勢是它的速度要快得多,這有助于抵消加密的固有性能成本。
如果它以未加密的形式傳輸數據以供全世界查看,那么擁有加密數據庫就沒有多大意義。為避免這種失誤,RavenDB 要求您啟用身份驗證和 HTTPS 以創建加密數據庫。好消息是,當您在 RavenDB 設置向導中選擇安全模式時,會自動設置身份驗證和 HTTPS。
如果您希望以自己的方式設置身份驗證,可以按照此處提供的說明進行操作。
進入安全模式后,您可以使用工作室創建加密數據庫,如下圖所示,或使用 REST API 和客戶端 API 手動創建。
是的,它看起來很簡單。
注意:您不能在現有數據庫上啟用加密,必須在創建時完成。但是,您可以導出數據庫,然后將數據導入新的加密數據庫。
在此步驟之后,您將獲得數據庫密鑰。
鍵是一個簡短的、看起來隨機的字符串,可用于以數學方式將您的數據轉換為無法識別的格式并返回。
當您在工作室中創建加密數據庫時,您將獲得文本形式的密鑰和可打印的二維碼。保存它非常重要,否則,您將永遠不會再看到它。
訪問 RavenDB 服務器上的數據不需要密鑰:這取決于經過身份驗證的用戶的訪問權限。但是,您確實需要關鍵功能的密鑰,例如從備份中恢復數據庫和在服務器之間移動數據文件。
如果您使用 API 創建數據庫,您可以在此處找到有關密鑰的更多信息。
你知道當你把自己鎖在房子、汽車或酒店房間之外是什么感覺嗎?將自己鎖定在數據庫之外會更糟糕。
將加密數據庫中的數據轉換回可讀格式的唯一方法是您知道加密密鑰。如果您丟失了它,您可能永遠無法再次訪問您的數據。曾經。
RavenDB 在內部保存密鑰,并將使用它來存儲和檢索數據。但是,如果您需要從備份中恢復、重建服務器或從災難中恢復,您絕對需要密鑰。
保護您的密鑰安全的重要性怎么強調都不為過,這不僅是為了您不會丟失它,而且是為了防止其他人獲得它并訪問您的數據庫。
將密鑰的物理副本鎖在一個非常安全的位置是一種簡單且非常安全的存儲密鑰的方法。畢竟你不能侵入一個上鎖的柜子。這就是為什么 RavenDB 以可打印的 QR 碼的形式為您提供密鑰的原因。
RavenDB 中的每個數據庫都有自己的密鑰,所有這些數據庫密鑰都由服務器主密鑰加密。根據您的操作系統,此服務器主密鑰的加密方式不同。對于 Windows,它由與 Windows 密碼相關的 DPAPI 加密,而對于 Linux,它由文件系統權限處理。最終結果是一樣的:確保只有創建數據庫的用戶才能訪問密鑰。
如果您想通過自己的方法存儲和檢索它,您還可以告訴 RavenDB 運行指定的可執行文件來獲取服務器主密鑰。這可用于設置與 HSM、密鑰保管庫或基于云的密鑰管理系統的集成。
您的數據未通過數據庫密鑰加密。相反,它由從數據庫密鑰生成的派生密鑰加密。它們的創建方式無法對其進行逆向工程以計算出數據庫密鑰,并且具有單獨的密鑰可確保如果攻擊者確實以某種方式找出了一個密鑰,則他們無法在其他任何地方使用它。
盡管它們很重要,但您很少需要實際使用您的密鑰。您只需要在特殊情況下使用它們,例如從備份中恢復數據庫,或者如果您想使用相同的數據庫密鑰將節點添加到數據庫中。
啟用加密后,純文本數據永遠不會寫入磁盤。數據僅在活動事務期間在內存中解密,即便如此,也只解密事務所需的特定數據。當操作系統內存不足時,它可能會將內存中的數據發送到磁盤,但該數據仍將以加密形式存在。事務完成后,立即擦除相關內存。
僅使用加密數據的例外是用于壓縮、恢復和其他此類功能的特殊臨時緩沖區。這些文件必須未加密地存儲在內存中,但是,它們保存在鎖定的內存區域中,以便操作系統不會將它們分頁到磁盤并且數據不會泄漏。如果沒有足夠的物理 RAM 可用于 RavenDB 鎖定,則鎖定內存中的數據可能會導致失敗,因此如果 RAM 有限,您可能希望閱讀更多內容并在此處了解如何更改相關設置。
默認情況下,服務器存儲未加密。它包含服務器范圍的信息,如數據庫記錄和比較交換值。它還存儲數據庫密鑰,盡管這些密鑰是加密存儲的。如有必要,您可以按照此處的說明啟用服務器存儲加密。
在設置過程中只需點擊幾下即可獲得強大而全面的加密,您可能會想在您創建的每個數據庫上啟用它。在大多數情況下,這是正確的選擇。然而,值得記住的是,安全總是有代價的。
在 RavenDB 中,對于大多數典型場景,加密的性能成本僅為 15-20%,并且會使用一些額外的內存來臨時保存解密的數據。這些是保護數據安全的小額費用,因此除非您絕對確定不需要加密,否則強烈建議您將其打開。
讀到這里,這篇“在RavenDB中如何確保數據庫安全”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。