數據庫安全的5個基本實踐
譯者注:現在已經進入到大數據時代,因此數據和數據庫安全比以往任何時候都更加珍貴。如何確保組織機構和用戶數據的安全性和可靠性是每個人都得掌握的一項技能。以下為譯文。
一旦數據發生泄露,那么付出的代價將是非常慘痛的。由于數據泄露而導致的業務中斷、客戶信心喪失、法律成本、監管罰款,或者是由于類似于蠕蟲病毒攻擊造成的直接損失,這些后果可能需要花費數百萬。俗話說得好,最好的防守就是發起進攻,所以讓我們來學習以下五個關鍵實踐,以確保數據庫的安全:保護、審計、管理、更新和加密。
1.使用代理保護數據庫免受攻擊
數據庫代理(或網關代理)位于應用程序和數據庫之間,接受來自應用程序的連接請求,然后代表這些應用程序連接到數據庫。智能數據庫代理(如我們自己使用的MaxScale)提供了過濾器和加載模塊,以提供安全性、可靠性、可伸縮性和性能優勢。
MaxScale數據庫防火墻過濾器通過過濾器解析發起的查詢,如果發送過來的查詢不符合已經提前設置的查詢類型的白名單,那么過濾器就會自動阻止。例如,給定的連接只能執行更新和插入,而另一個連接必須匹配某些正則表達式,等等。
像MaxScale這樣的代理也可以保護數據庫不受DDoS的攻擊:當過多的連接直接進入到數據庫服務器時,它就會超載。但是代理會吸收一些負載來限制這種攻擊的影響。
2.建立審計和健壯的日志記錄
審計和日志記錄是緊密相連的,但是審計日志比一般日志要復雜得多。審計日志給用戶提供了調查可疑活動所需要的全部信息,如果確實做過違反規則的操作,還可以根據審計日志進行根源分析。此外,審計日志有助于確保遵守諸如GDPR、PCI、HIPPA和SOX等規則。(學習更多關于用MariaDB TX處理GDPR的信息)
MariaDB審計插件可以記錄大量信息:所有傳入的連接、所有執行的查詢,甚至所有單個表的訪問記錄。用戶可以看到誰在給定的時間訪問了一個表,以及誰執行了插入或刪除數據的操作。審計插件可以記錄到文件或syslog,因此如果已經有了依賴于syslog的工作流,那么就可以直接將其綁定到這些文件中。
3.實行嚴格的用戶帳戶管理
嚴格管理數據庫用戶帳戶是非常重要的。無論對于IT生態系統的哪個方面來說,這都是一條正確的規則,因此我們不會在這里詳細說明。相反,我們將簡單地提醒您用戶帳戶管理的幾個關鍵方面:
- 只允許超級管理員從本地客戶端進行訪問。
- 堅持使用強密碼。
- 每個應用程序都有單獨的數據庫用戶。
- 限制可以訪問數據庫服務器的IP地址的數量。
4.保證數據庫軟件和操作系統是最新的
我們都知道讓軟件處于最新版本的原因,但還是有很多人會去運行遺留的操作系統以及舊版本的數據庫服務器。我們時刻都要謹記,只有將版本保持為最新版本這才是保護數據不受那些最新威脅的唯一方法。
這不僅適用于服務器軟件,也適用于操作系統。畢竟,Windows操作系統安全補丁的應用不太好,這也間接導致了蠕蟲病毒的攻擊成為了可能。
5.加密敏感數據,無論是在應用程序中,還是在數據傳輸中,甚至處于空閑時
許多組織機構都會對加密進行簡短的處理,但這么做卻很有價值。畢竟,如果他們能在平時的工作中能夠發現密碼會被破解,那么這就會降低黑客入侵的概率。
加密的第一階段是在應用程序里面,此時數據還未到達數據庫。如果數據在應用程序中就已經被加密了,那么破壞數據庫的黑客就看不出數據是什么(不過,這只適用于沒有密鑰的數據)。
接下來是傳輸過程中的數據加密。這意味著當數據從客戶端移動到數據庫服務器(或在代理服務器上)時,數據在網絡上加密。這與在web瀏覽器中使用HTTPS基本相同。顯然,服務器可以看到這些信息,因為它需要讀取用戶填寫的表單,用戶也可以讀取信息,因為是他們填寫的表單,但在用戶和服務器之間沒有人能夠讀取它。
最后,我們講一下數據庫處于空閑時的數據加密。你可以使用它來加密InnoDB表空間、InnoDB redo日志以及二進制日志。這意味著你可以在MariaDB服務器上中加密幾乎所有被寫入光盤的東西。