簡介
現今世界仰賴資料運作。組織建立、儲存和交換的資料是其最有價值的資產。資料加密對於所有組織而言,是保護自身、保護使用者,以及符合資料隱私法規的關鍵實務。組織應確保內部使用者只能檢視與他們相關的資料。更重要的是,組織需要保護其資料免於洩露和未經授權的存取。
對於處理敏感資訊的組織而言,資料加密的需求更加至關重要。在本文中,我們將討論除了強大的身份驗證和授權措施之外,您為何應該加密您的資料、MongoDB 中不同類型的加密,以及加密最佳實務。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始入門指南,或如何新增至現有專案。
為何要加密資料?
基於角色的存取控制 (RBAC) 是防止資料庫權限濫用的絕佳措施。然而,此功能僅涵蓋了在保護系統安全時必須考量的部分漏洞。RBAC 無法解決不良行為者窺探您的網路、直接資料竊盜或存取資料庫主機記憶體的情況。
早在 2019 年,世界經濟論壇就預測整個數位宇宙中的資料單位數量將在 2020 年達到 44 澤字節。這個預測數字超過了宇宙中可觀測恆星數量的 40 倍。截至本指南撰寫時的 2022 年,這個數字無疑已經成長,使得加密的必要性顯而易見。
簡而言之,加密是指編碼資料的行為,使其對於未經授權存取資料的人而言無法讀取。只有知道加密「金鑰」的授權人員才能讀取和理解資料。有效實作的加密方法應提供完整的安全性,防止洩露存取導致資料遭竊。
加密在其最基本的層級上運作的方式,是透過加密器將字母、數字和符號替換為其他字元以建立密碼。對於任何非密碼學家或 Zodiac 粉絲來說,密碼是代表原始訊息的字元集,在此案例中,即為原始資料。此密碼的建立者持有加密金鑰,即描述密碼編碼方法的數字。現代加密比簡單的字元交換複雜得多。大多數現代實作會將純文字轉換為密文,密文由文字、影像和二進位 blob 形式的區塊或串流組成。沒有這個金鑰,電腦或人類都無法讀取實際資料,任何未經授權的資料都無法正確呈現。
加密類型
加密方法通常分為兩類:對稱金鑰加密和非對稱加密。其定義如下:
- 對稱加密 - 一種加密金鑰和解密金鑰相同(對稱)的方法
- 非對稱加密 - 一種也稱為公鑰密碼學的方法,它建立兩個不同的金鑰,一個私鑰和一個公鑰,兩者並不相同。公鑰可以與任何人共享,而私鑰僅與授權人員共享。公鑰可用於加密資料,而該資料只能由私鑰解密。
這兩種方法都存在一些固有的漏洞,具體取決於資料狀態,但涵蓋了 RBAC 遺漏的問題,例如網路窺探和資料竊盜。這種保證是 MongoDB 在其資料庫中根據資料狀態同時採用這兩種方法的原因。
傳輸中加密
傳輸中加密是在資料從一個點移動到另一個點時保護資料的安全。在傳送之前,資料會針對其「旅程」進行加密,然後在接收點解密和驗證。最佳的視覺化方式是將資料想像成金錢,透過裝甲運鈔車從一家銀行分行運送到另一家分行以補充金庫。
MongoDB Atlas 支援傳輸層安全性 (TSL) 和安全通訊端層 (SSL),用於應用程式用戶端與伺服器之間以及叢集內通訊,方法是為伺服器設定憑證。憑證是一種電子文件,用於證明私鑰所有權的有效性。憑證確保資料在受信任的網路連線上傳輸時經過加密,防止網路窺探活動,例如封包嗅探或 IP/DNS 詐騙。
透過包含公鑰,我們看到 MongoDB 使用非對稱加密來保護處於移動狀態的資料。對稱加密需要透過某個通道在各方之間傳輸加密金鑰。單一金鑰在傳輸過程中必須保持安全,並且在此階段容易受到風險影響。非對稱加密理論上透過其公鑰解決了這個不安全的傳輸問題。加密通訊可以在沒有任何事先通訊的情況下進行。
透過使用公鑰加密,發送者的訊息只能由預期的接收者使用其私鑰解密。公鑰密碼學在傳輸中具有優勢,因為永遠不需要共享私鑰,而簽章的使用可確保接收者可以驗證訊息是否來自受信任的發送者。
非對稱加密的缺點是它比對稱加密花費更長的時間,並且需要消耗更多資源才能達成。如果您的資料並非在裝置與裝置之間或網路與網路之間主動移動,則這些權衡取捨是不必要的,而對稱加密提供了充足的安全性。
非對稱加密的潛在風險是,如果您的私鑰落入壞人之手,那麼您的所有訊息都可能被讀取。MongoDB 透過前向保密密碼套件提供額外的安全性。這些密碼套件建立一個由伺服器私鑰保護的臨時性會話金鑰。此會話金鑰永遠不會傳輸,並且即使伺服器的私鑰洩露,也能確保過去的會話無法被洩露的私鑰解密。MongoDB 支援臨時 Diffie-Hellman (DHE) 和臨時橢圓曲線 Diffie-Hellman (ECDHE) 演算法。
MongoDB Atlas 使用Let’s Encrypt 已知的憑證,在 TLS 啟用的用戶端通過存取和身份驗證控制後驗證其身份。TLS 協定透過在兩個或多個電腦應用程式之間使用憑證來提供完整性和真實性。MongoDB 可以跨網路進行通訊,透過使用此協定來防止不必要的竊聽和竄改。您可以參考官方 MongoDB 文件,了解用戶端的 TLS 配置。
靜態資料加密
靜態資料加密保護的是非處於傳輸狀態而是閒置的資料。您可以將靜態加密資料最佳地視覺化為銀行分行金庫中受保護的金錢。它不再傳輸到另一個分行,而是靜止在單一位置。這種靜態狀態避免了非對稱加密解決的傳輸不安全性,因此對稱加密是一種強大的方法。
磁碟上的加密資料保持加密狀態,除非攻擊者可以存取加密金鑰。在實體磁碟遺失或遭竊或資料庫檔案洩露的情況下,靜態資料加密可保護敏感資料。
MongoDB 靜態資料加密是一項 企業功能。這為您的資料庫新增了一個保護層,保證寫入儲存的檔案只有在經過授權的程序或應用程式解密後才能存取。
MongoDB Atlas 預設為叢集中每個節點的磁碟內建靜態加密。但是,您也可以從您的 WiredTiger 儲存引擎啟用額外的加密。此功能可讓您使用您偏好的雲端供應商的金鑰管理服務 (KMS)。KMS 是一種實用程式,可集中管理您的所有加密金鑰。
MongoDB 支援 AWS、Azure 和 Google Cloud Platform 金鑰管理服務。對於那些不想僅依賴 MongoDB 的加密金鑰並取得產生加密金鑰的所有權控制權的人來說,這是一項很棒的功能。
使用中加密
最後一種 MongoDB 加密是一種提供使用中加密的功能,用戶端欄位層級加密 (CSFLE)。CSFLE 允許工程師指定 文件 中應保持加密的欄位。敏感資料由用戶端加密/解密,並且僅以加密形式與伺服器進行通訊。
此功能確保伺服器和網路上所需加密欄位的安全性,只有適當的用戶端才能存取。在任何時候,敏感資料在資料庫主機和網路傳輸中都是加密的。安全責任轉移到用戶端。CSFLE 防止了通篇描述的所有漏洞:資料庫權限濫用、網路窺探、資料竊盜以及存取資料庫主機記憶體。
輪換加密金鑰
對於靜態資料加密和用戶端欄位層級加密,始終存在對稱金鑰洩露的風險。就像您應該對重要的網際網路帳戶密碼所做的那樣,您也應該定期變更您的加密金鑰。這種實務就是輪換加密金鑰。
加密金鑰輪換對於資料庫管理員來說至關重要,因為雖然它不是針對洩露金鑰的萬無一失的保護措施,但它強烈地限制了風險。如果金鑰洩露,那麼它很可能已經過時,無法存取敏感資料。維護它又是另一項任務,但採用它永遠比沒有做過而後悔莫及要好。
MongoDB Atlas 靜態資料加密和 CSFLE 內建指南,用於輪換您可能使用的每個 KMS 雲端供應商所需的金鑰
如果您是自行託管 MongoDB,則有指南可指導您進行手動金鑰輪換,以及 MongoDB 的 Ops Manager 和 Cloud Manager 平台。
結論
在本指南中,我們討論了資料加密日益增長的重要性以及許多資料安全漏洞。MongoDB 中資料經過加密是為了確保其在任何狀態下的安全。這種狀態可以是閒置、移動中或使用中。
隨著越來越多的資料進入數位宇宙,越來越多的威脅試圖存取它。所有組織都應採取一切預防措施來保護有價值的資訊。MongoDB 提供了一套加密安全功能,最好在您需要之前就充分了解。
如果您正在使用 MongoDB,請查看 Prisma 的 MongoDB 連接器!您可以使用 Prisma Client 來自信地管理生產環境 MongoDB 資料庫。
若要開始使用 MongoDB 和 Prisma,請查看我們的從頭開始入門指南,或如何新增至現有專案。