12個常見數據庫風險
在當今的大多數企業堆棧中,數據庫是我們所有秘密等待的地方。它是部分安全屋、準備室和集散地,用于存放可能非常私人或非常有價值的物品。對于依賴它的數據庫管理員、程序員和 DevOps 團隊來說,保護它免受所有入侵是最重要的工作之一。
創作者為我們提供了所有工具。他們建立了良好的安全措施并記錄下來。然而,許多潛在的錯誤、疏忽和錯誤既愚蠢又可以理解,使它成為一個無休止的挑戰。
為了幫助跟蹤并保持警覺,這里列出了即使是我們中最好的人也會絆倒的不同故障模式。
1. 權限管理不到位
許多數據庫存在于它們自己的機器上,這臺機器應該盡可能地鎖定。只有必要的用戶才能以數據庫管理員的身份登錄,并且登錄應僅限于網絡和其他機器的狹窄范圍。防火墻可以阻止 IP 地址。相同的規則也應適用于操作系統層,如果它在虛擬機上運行,??則適用于管理程序或云管理。這些限制會減慢更新軟件和修復問題的工作,但限制攻擊者可以采取的路徑是值得的。
2. 方便的物理訪問
不知道聰明的攻擊者可能會在服務器機房內做什么。云公司和主機托管設施在戒備森嚴的建筑物內提供上鎖的籠子,而且訪問受限。如果您的數據本地存儲在您自己的數據中心,請遵循相同的規則,確保只有受信任的少數人才能訪問存放物理磁盤驅動器的房間。
3. 未受保護的備份
一個團隊在保護數據庫服務器方面做得很好,但卻忘記了備份,這種情況并不少見。他們擁有相同的信息,因此需要同樣的照顧。磁帶、驅動器和其他靜態介質應鎖在保險箱中,最好是在另一個位置,它們不會被可能毀壞原件的同一火災或洪水損壞。
4. 未加密的靜態數據
加擾數據的算法通常是值得信賴的,因為它們已經過廣泛的測試,并且當前的標準沒有公開的弱點。為數據庫添加良好的加密,現在可以輕松地對所有靜態數據進行備份。即使算法和實現是安全的,也必須小心保護密鑰。云提供商和服務器開發人員正在創建與普通工作流程不同的可信硬件,因此密鑰在內部更安全。即使系統不完美,也有總比沒有好。當數據將在一段時間內保持加密狀態時,有些人更喜歡將密鑰放在不同的物理位置,最好是離線的。有些人甚至打印出鑰匙并將紙放在保險箱中。
5. 不使用隱私保護算法
只要您可以保護密鑰,加密就是保護數據庫物理副本的好工具。各種各樣的好算法也會永久地加擾數據。它們無法解決所有問題,但當不需要保留所有敏感數據時,它們會非常有效。最簡單的可能只是用隨機假名替換名字。數十種其他方法使用恰到好處的數學運算來保護個人數據,同時仍然保留足夠的數據來實現數據庫的目標。
6. 缺乏擴散控制
當數據被使用時,它會被復制到緩存和運行的服務器中。數據存儲架構師的目標是盡量減少副本的數量,并確保一旦數據不被使用就將其銷毀。許多數據庫提供常規鏡像或備份選項,作為防御機器故障的功能。雖然這對于提供穩定的服務至關重要,但在設計過程中仔細考慮擴散是值得的。在某些情況下,可以限制猖獗的復制而不會過多地影響服務。有時,如果可以限制攻擊者可能闖入的地方的數量,那么選擇速度較慢、冗余較少的選項可能會更好。
7. 缺乏數據庫控制
最好的數據庫是幾十年進化的產物,由無休止的測試和安全研究驅動。選擇一個好的。此外,數據庫創建者添加了用于管理和限制訪問的好工具。你應該使用它們。確保只有正確的應用程序才能看到正確的表。不要對所有應用程序重復使用相同的密碼。當然,不要使用默認值。在可行的情況下限制對本地進程或本地網絡的訪問。
8. 易受攻擊的輔助數據庫
許多堆棧使用快速的內存緩存(如 Redis)來加快響應速度。這些輔助數據庫和內容交付網絡通常在數據庫中擁有相同信息的副本。花費與正確配置主數據庫一樣多的時間。
9. 可以訪問數據的易受攻擊的應用程序
當受信任的應用程序表現不佳時,特別是當受信任的應用程序可以訪問所有數據時,所有謹慎的數據庫安全都沒有多大價值。一個常見問題是SQL 注入,這是一種欺騙編碼錯誤的應用程序將惡意 SQL 傳遞到數據庫的攻擊。另一個是應用程序本身的安全性差。在許多架構中,應用程序可以看到一切。如果它不能很好地阻止正確的用戶,所有這些數據都可能被泄露出去。
10. 有風險的網絡暴露
數據庫是生活在沒有公共訪問的網絡部分的理想選擇。雖然一些開發人員希望通過向一般互聯網開放數據庫來簡化他們的生活,但任何保護重要信息的人都應該有不同的想法。如果您的數據庫只與前端服務器通信,它可以愉快地生活在只有這些前端服務器可以訪問它的網絡部分。
11. 缺乏誠信管理
現代數據庫提供了多種功能,可以防止錯誤和不一致進入數據集。為數據指定模式可確保各個數據元素符合一組規則。使用事務和鎖定可防止在更新一個表或行而另一個未更新時引入錯誤。部署這些完整性管理選項會增加計算開銷,但盡可能多地使用可以減少隨機錯誤的影響,還可以防止用戶插入不一致或不正確的數據。
12. 保留不需要的數據
有時最安全的解決方案是銷毀數據庫。開發團隊通常像包裝鼠一樣思考,為可能永遠不會到來的未來存儲信息。有時,防止數據泄露的最簡單方法是擦除數據。如果您不需要這些位來提供某些未來的服務并且客戶永遠不會要求查看它,您可以將信息歸零并免于保護它。如果您不能完全確定數據不會再次被使用,您可以擦除在線副本,并僅在訪問受到進一步限制的深度存儲中保留離線備份。