MySQL 数据库安全管理
一、前言
數據安全是每一個企業都非常關注的問題,甚至有的企業,數據就是一切,失去數據則可能造成無法估計,無法挽回的損失,甚至產品永久下線的風險。
本文將介紹MySQL安全管理策略相關內容,著重介紹MYSQL服務層安全處理措施。
二、編寫目的
提高數據庫使用者,數據庫安全相關意識。
增強數據庫抵抗能力,降低數據庫故障幾率,維護數據庫數據安全。
三、數據庫系統安全三要素
網絡層面:將mysql服務器處在一個有保護的局域網之中,而不是暴露在公網之中,屬于基礎運維層面。
機器層面:主要是開啟防火墻,按需開放端口,避免未授權的登錄,防止文件的篡改,數據文件的損壞,屬于基礎運維層面。
MYSQL服務層: 即mysql自身防御措施,也是數據庫的核心安全策略,屬于DBA運維層面。
以上1,2步驟各個服務,各種數據庫都需要做,都可以做,第三步,則屬于MySQL數據庫獨有
四、MYSQL服務層處理措施
4.1、數據庫訪問授權管理模塊
mysql數據庫訪問授權管理模塊分為,用戶管理模塊,訪問控制模塊
用戶管理:用戶管理,DBA應對各用途分別創建各自用戶,主要是負責用戶登陸連接相關的基本權限控制,類似于我們的門禁系統,只有公司內部員工,且輸入正確的密碼,才能打開門進入公司內部。
訪問控制:權限管理,DBA應對各用途用戶分別授予不同權限,以最小滿足需要為準,類似我們的開發同學與運維同學的區別,只有運維同學才有權限登陸到線上機器做基本運維操作(update,delete,等),開發同學就只能觀看(select)
4.2、數據庫權限層級介紹
mysql數據庫權限表,User@Host,db,table_priv,column_priv(基本算是4層權限控制,每一層都包含了低層的所有權限)
用戶登錄權限(線上一般分為超級用戶,程序用戶,普通查詢用戶)
全局性的管理權限,作用于整個Mysql實例級別。
數據庫級別的權限,作用于某個指定的數據庫上或者所有的數據庫上。
數據庫對象級別的權限,作用于指定的數據庫對象上(表、視圖等) 或者所有的數據庫對象上。
權限表驗證過程 1.通過User@Host表驗證用戶是否有登陸權限(此處有參數max_connect_errors,此參數防止暴力破解mysql密碼,連續錯誤連接多少次,則ip被拉進小黑屋,需要通過flush hosts 解除); 2.通過驗證的用戶對數據庫的任何操作,都需要具體的權限驗證,包括對數據庫不同對象(庫,表,列,視圖,存儲過程,函數,索引,導入導出,狀態查詢)的增刪改查等操作。
4.3、數據庫安全的運維工作
用戶權限: 分配適當權限的各種不同用途的用戶,定期刪除廢棄帳號,定期修改超級用戶,程序用戶密碼,不得在線上主庫查詢,盡量減少主庫的壓力(主庫數據庫資源灰常的寶貴),創建用戶時候不得以%作為IP 匹配選項,應盡量嚴格匹配IP段。用戶權限應根據用戶的業務需要,配置其所需的最小權限為宜,數據庫非root用戶不得有delete,drop 等破壞性強的超級權限,這是非常危險的權限,如果不是必要的情況,應禁止遠程訪問。
備份恢復: 備份,備份,備份(重要的事情說三次),備份包括數據備份,與日志備份,DBA 應對數據庫規劃好完整備份策略,不同場景使用不同備份策略,一般情況備份需要多處備份,不應堆疊在一個地方,提高容錯性。備份需要定期檢查,備份并非是十分可靠的,需要人工檢查備份是否正確,一般可以加入監控項中。且需要經常進行恢復演練,以便處理問題時候做到沉著冷靜,不至于手足無措。
數據加密: 數據庫用戶使用強密碼策略,程序中可以對配置文件的密碼進行加密處理,對于系統數據庫中重要數據,進行加密處理,防止出現最壞的情形。禁止在數據庫中存儲銘文密碼。
參數配置: 根據機器性能和業務需求,合理設置數據庫各參數,最大連接數,內存占用,數據刷寫模式等,使數據庫得以安全、穩定、高效的運行。
腳本審核: 任何數據庫對象的更改,測試完成后,應當由dba來操作線上數據庫,不在繁忙時候做大表更新,防止長時間鎖表的發生。
應用程序: 防止SQL注入
?
?
?
附 MySQL官方參考手冊:?https://dev.mysql.com/doc/refman/8.0/en/security.html?(MySQL安全準則)
附 阿里云參考手冊:?https://help.aliyun.com/knowledge_detail/49568.html?(MySQL服務安全加固)
?
總結
以上是生活随笔為你收集整理的MySQL 数据库安全管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫笔记【一】模拟用户访问之
- 下一篇: jQuery插件使用-瀑布流