2018年7月29日 星期日

MySQL DBA的資料安全課題


資料庫是大多數應用系統的核心,因此,資料庫安全常是各種場合一再被拿出來探討的議題.但是您知道嗎?要為大部份資料庫安全問題可歸責於資料的擁有者或管理者而且當管理者或架構設計者有採取適當的防護措施時這些問題都是可以避免或補會造成資料丟失或露的人有兩大類:
1.      自己人,這包括:
甲、在操作系統上幹活的系統工程師:
和任何跑在作業系統上的應用程式一樣,MySQL資料庫管理系統佔用伺服器的記憶體空間資料也有會長久存於磁碟中.系統工程師可能對資料庫幹的事包括:
                            i.                mysqld程序.
                          ii.                誤刪某些資料庫檔案,如mycnf之類的設定檔或表空間檔或者binlog之類的日誌檔,甚至是整個資料目
l   由於系統工程師會擁有作業系統的root帳戶,這類的誤刪是沒法完要減少這種狀發生的機會可以在目錄層的權限不給privilege mask 750(擁有者有全部的權限,同一組的用戶可看可執行但不能寫,其他作業系統的用戶什麼都不能做)以上的權限,以防制這類的失誤
l   另外 MySQL的高可用架構(例如group replication或半同步複製等)在多台伺服器上執行由多個資料庫所構成的不會掉資料的同步因此,當有人對一個資料庫做些蠢事把整個資料庫都殺了時,還有其他的資料庫存有一份一樣的資料可以將它由別台伺服器全部抄回來
l   當然,資料庫的備份是救回資料的最後手段不過,想要不掉資料的把資料庫整個都救回來,除了完整的備份外binlog一定要全整的保留下來.所以如果資料庫伺服器有多個磁碟機,建binlog存放於和MySQL的資料目不同的磁機上以免刪資料目binlog會一併刪除
乙、擁有root或資料庫管理權限的資料庫管理師或某些schema管理權限的資料操作者,一般所指的DBA就是這類人,廣義來講,也包括某些應用程式開發者,他們能登入資料庫管理系統,對存資料的表或整個資料庫層級的物(如帳號權限等)件做各種操作,他們可能對資料庫造成的問題有:
l   刪庫跑路是DBA所可能做的最的事別以為老手不會幹這種事,越是老長越可能陰溝裏翻,這包括刪掉整個schema、整個表、或動到是某些不該刪或改的資料.比較好的做法是事先防範.MySQL企業版的用戶可以用資料庫防火牆,SQL命令執行前檢查SQL命令檔下由未經允許的前端所下的刪除整個表或schema,或是沒有where條件的deleteupdate之類的SQL命令全都由防火檔下(在最佳實務中這類的命令不可以隨意下,必需在特定機器、特定時間、以一個事先包裝好的程式去執行)如果要做到更精細的檢查,可在使用者介面之上加一個審核機制,在SQL命令送到資料庫前先檢查SQL的內容,不合規定的SQL命令都被審核系統擋下或發出警告.今年COSCUP的開源資料庫系列的第四場(第一天下午一點開始)中周彥偉介紹他所開Inception開源審計軟體就是一個具體的實踐,有興趣進一步了解的朋友請把握這個機會到開源資料庫系列的研討會和MySQL的技術大牛們聊聊.
2.      居心不良的駭客:
這是大部份安全防護系統想要防備的對象,這些人入侵的手段包括網路攻擊、密碼力試密碼、掛在網路上竊取傳輸的資料、入侵作業系統將整個目錄或表空間檔案抄走、或者自備份出來的資料中讀取資料等等手法.
新版MySQL大幅加強了安控能力,再配MySQL企業版的各種安控插件,例如加密插件、透明表空間加密插件、核插件、和可利用LDAP之類登入機制的安控插件等,使我們有機會打造出一套乎滴水不漏的資訊系統.當然,再強的堡壘經長時間的攻擊總有漏出破綻的時候,此時MySQL企業監控就能發揮預防重於治療的效果,隨時監看系統找出在管理及配置上可能有安全漏的地方,在這些漏洞還沒光前,讓我們能及時將漏洞堵住.另外,Oraclesupport服務會在MySQL軟體上的漏洞被發現時及時推出修正版解決這些問題,MySQL企業版的用戶可以將企業監控和Oracle support連線,在安全漏發佈的第一時間收到通知,並以一鍵式更新的方式更新資料庫版本,及時將資料庫軟體的安全漏洞補上.
有興趣了解MySQL安控機制的朋友,請把握我在COSCUP第二天下午240IB201如何善用MySQL打造固若金湯的系統研討會.