MySQL 安全策略全景指南:網絡、系統、應用、資料庫四層防護體系
資料安全非單層防護所能達成,需構建**纵深防御**體系。本文從四個層面梳理可快速落地的安全策略。
一、網絡與系統層 (基礎設施)
- ✅ 資料庫內網部署: 嚴禁直接暴露公網 IP
- ✅ SSH 強化: 修改預設 22 埠 (>10000)、禁用密碼登入 (僅金鑰)、禁止 root 直接登入
- ✅ 防火牆白名單: 僅允許應用伺服器 IP 存取 3306/SSH 埠
- ✅ 管理介面隔離: iDRAC/iLO/IMM 走專用管理網,修改預設密碼,設定 GRUB 密碼
- ✅ 密碼策略: 最小長度 12+、複雜度要求、定期輪換、建議使用密碼管理器生成 32 位隨機密碼
- ✅ 日誌集中化: 所有操作日誌 (syslog, audit.log, MySQL error/slow log) 實時轉發至遠端日誌伺服器,**嚴禁僅存本地**
- ✅ 最小化安裝: 僅安裝必要套件,移除無用服務
- ✅ 權限分離: Web/App 進程用戶無權直接讀取 MySQL datadir
- ✅ 禁用目錄瀏覽: Nginx/Apache 關閉
autoindex
- ✅ 強制 HTTPS: 全站 TLS 1.2+,HSTS 頭部
- ✅ 及時修補: OS、MySQL、中間件、框架建立補丁管理流程
- ✅ 應用層安全配置: PHP
disable_functions、Java SecurityManager、.NET 請求驗證
- ✅ 雲端安全產品: WAF、主機入侵檢測 (HIDS)、漏洞掃描納入常規
- ❌ 絕對禁止: 含敏感資訊 (IP、帳密、金鑰) 的代碼/配置上傳至公共倉庫 (GitHub/GitLab 等)
二、邏輯應用層 (代碼與業務邏輯)
- ⚠️ 謹慎使用開源 CMS/論壇: 未經代碼審計嚴禁直上線,黑客重點攻擊目標
- ✅ WAF 模組: Nginx ModSecurity / OpenResty WAF 攔截常見攻擊
- ✅ 代碼安全審計: 靜態掃描 (SonarQube, Checkmarx) + 動態掃描 (OWASP ZAP) + 人工 Code Review
- ✅ 防禦 OWASP Top 10:
- XSS:輸出編碼、CSP 頭部
- CSRF:同源檢查、Token 驗證、SameSite Cookie
- SQL 注入:參數化查詢/預處理語句、**嚴禁字串拼接 SQL**
- 文件上傳:白名單副檔名、MIME 驗證、儲存非執行目錄、隨機重命名
- 繞過認證:集中式授權、JWT 簽名驗證、Session 安全屬性
- ✅ 敏感配置加密: JDBC 密碼、API 金鑰以加密形式存儲 (Vault、KMS、自建加密工具),運行時解密
- ✅ Proxy 層隔離: 應用連 Proxy (ProxySQL/MaxScale),Proxy 再連 MySQL,避免應用直連資料庫
- ✅ 關鍵業務審計日誌: 交易、權限變更、敏感操作完整記錄,便於事後追溯
三、MySQL 資料庫層 (最後防線)
- ✅ 啟用
--safe-updates (或 sql_safe_updates=ON): 禁止無 WHERE 條件的 UPDATE/DELETE 全表操作
- ✅ 延長 Binlog 保留:
expire_logs_days=30 以上,支援審計與 PITR
- ✅ 應用帳號最小權限: 僅
SELECT, INSERT, UPDATE,**移除 DELETE、DROP、ALTER、GRANT**
- ✅ 軟刪除模式: 邏輯刪除 (
is_deleted=1) 替代物理 DELETE,真正清理由 DBA 備份後執行
- ✅ SQL 審計插件: Percona Audit Log Plugin / McAfee MySQL Audit / MariaDB Audit Plugin
- ✅ 觸發器輔助防篡改: 關鍵表加
BEFORE UPDATE/DELETE 觸發器記錄變更前值、攔截異常操作
- ✅ 加密存儲: TDE (Tablespace Encryption) 保護靜態資料,SSL/TLS 保護傳輸中資料
- ✅ 定期權限審計:
SELECT user, host FROM mysql.user; 清理無用/過期/過權帳號
四、總結:安全是文化,而非清單
工具、配置、流程皆可複製,**安全意識**才是核心。每位參與者 (DBA、開發、運維、管理) 皆需:
- 敬畏資料資產價值
- 主動學習最新威脅與防禦
- 嚴格執行既定規範,不走捷徑
- 事件發生時透明通報、快速復盤、持續改進
真正的資料安全,靠所有人的意識安全作為支撐。沒有這份意識,機制、制度、工具皆成空中樓閣。