MySQL資料庫生產環境安全規範
一、MySQL伺服器安全規範
1. 禁止應用直連DB,一般透過代理訪問
2. 禁止DB公網訪問。
3. 禁止生產和辦公互通,需生產環境和辦公環境隔離。
4. Linux系統初始化安全選項:
1)、一些alias,寫入/etc/profile,防止誤操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete沒有指定條件,拒絕操作。
2)、刪除linux操作日誌資訊、MySQL操作歷史記錄,避免被拖庫。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL使用者能夠開啟65535個檔案描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf引數修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全選項:
1)、合理規劃目錄結構,日誌目錄順序寫建議機械盤(binlog/slowlog/relaylog),資料目錄隨機寫建議ssd。
2)、MySQL相關目錄設定專用MySQL組和使用者,MySQL後臺啟動方式不能以root來啟動,比如透過MySQL使用者 。
3)、設定bind-address為內網本機IP。
4)、修改MySQL預設服務埠號,不推薦使用3306,不同業務設定不同的埠號。
5)、透過修改max_connections和max_user_connections來控制最大連線數,過載保護。
6)、啟用safe-user-create,使用者不能用GRANT語句建立新使用者,除非使用者有MySQL.user表的INSERT許可權。
7)、禁止local-infile=1,開啟load data local file許可權,避免資料洩漏和駭客攻擊。
8)、禁止skip-grant-tables啟動,防止MySQL繞過許可權系統
9)、配置加上skip-name-resolve,防止主機名不被解析。
10)、禁止skip-networking,其它機器不能使用tcp/ip連線。
11)、禁止symbolic-links=1,關閉軟連結功能。
二、MySQL帳號管理安全策略和MySQL許可權相關的系統表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐級驗證,逐級進行賬戶許可權的粒度控制
MySQL初始化:
1. 刪除線上密碼長度小於16的帳號。
2. 刪除非root賬戶
3. 刪除非localhost和127.0.0.1賬戶。
4. 刪除test資料庫
5. 賬號區分:監控帳號、管理帳號、複製帳號、備份帳號、應用帳號
1)、監控帳號(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、備份帳號(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、複製帳號(對應主庫ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帳號(對應代理ip):
GRANT ALL PRIVILEGES
5)、root帳號
root密碼採用強密碼策略,至少32位隨機密碼,推薦使用pwgen和makepasswd來生成32位隨機密碼,包含大小寫、數字、字母、特殊字元。
root帳號只授權localhost和127.0.0.1,不得授予%許可權。
root帳號建議每3個月修改一次,不同例項,設定不同的root密碼。
6)、應用帳號
a. 應用帳號不得擁有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等許可權。
b. 最小許可權原則:select,insert,update,delete許可權,禁止應用帳號許可權設定為all。
c. 應用帳號不得擁有系統資料庫(MySQL)的任何許可權,不能使用*.*來授權。
d. 應用帳號只給所屬應用的資料庫授權,只給其所屬應用的IP或代理授權。
e. MySQL從庫必須新增read-only,只給select許可權,嚴禁all,導致只讀失效。
f. 應用帳號密碼策略同root,建議每3個月修改一次。
三、MySQL資料安全策略
1. 物理(xtrabackup)和邏輯(MySQLdump)相結合的備份策略,全備+增量+異地。
2. 資料庫備份檔案定期回放,定期驗證備份的可恢復性。
3. 針對重要業務系統建立delay資料庫或者採取Linux初始化時設定lvm策略,可快照閃回。
4. 假設有Binlog Server,遇到緊急情況可資料恢復。
附:MySQL命令列提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
1. 禁止應用直連DB,一般透過代理訪問
2. 禁止DB公網訪問。
3. 禁止生產和辦公互通,需生產環境和辦公環境隔離。
4. Linux系統初始化安全選項:
1)、一些alias,寫入/etc/profile,防止誤操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete沒有指定條件,拒絕操作。
2)、刪除linux操作日誌資訊、MySQL操作歷史記錄,避免被拖庫。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL使用者能夠開啟65535個檔案描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf引數修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全選項:
1)、合理規劃目錄結構,日誌目錄順序寫建議機械盤(binlog/slowlog/relaylog),資料目錄隨機寫建議ssd。
2)、MySQL相關目錄設定專用MySQL組和使用者,MySQL後臺啟動方式不能以root來啟動,比如透過MySQL使用者 。
3)、設定bind-address為內網本機IP。
4)、修改MySQL預設服務埠號,不推薦使用3306,不同業務設定不同的埠號。
5)、透過修改max_connections和max_user_connections來控制最大連線數,過載保護。
6)、啟用safe-user-create,使用者不能用GRANT語句建立新使用者,除非使用者有MySQL.user表的INSERT許可權。
7)、禁止local-infile=1,開啟load data local file許可權,避免資料洩漏和駭客攻擊。
8)、禁止skip-grant-tables啟動,防止MySQL繞過許可權系統
9)、配置加上skip-name-resolve,防止主機名不被解析。
10)、禁止skip-networking,其它機器不能使用tcp/ip連線。
11)、禁止symbolic-links=1,關閉軟連結功能。
二、MySQL帳號管理安全策略和MySQL許可權相關的系統表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐級驗證,逐級進行賬戶許可權的粒度控制
MySQL初始化:
1. 刪除線上密碼長度小於16的帳號。
2. 刪除非root賬戶
3. 刪除非localhost和127.0.0.1賬戶。
4. 刪除test資料庫
5. 賬號區分:監控帳號、管理帳號、複製帳號、備份帳號、應用帳號
1)、監控帳號(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、備份帳號(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、複製帳號(對應主庫ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帳號(對應代理ip):
GRANT ALL PRIVILEGES
5)、root帳號
root密碼採用強密碼策略,至少32位隨機密碼,推薦使用pwgen和makepasswd來生成32位隨機密碼,包含大小寫、數字、字母、特殊字元。
root帳號只授權localhost和127.0.0.1,不得授予%許可權。
root帳號建議每3個月修改一次,不同例項,設定不同的root密碼。
6)、應用帳號
a. 應用帳號不得擁有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等許可權。
b. 最小許可權原則:select,insert,update,delete許可權,禁止應用帳號許可權設定為all。
c. 應用帳號不得擁有系統資料庫(MySQL)的任何許可權,不能使用*.*來授權。
d. 應用帳號只給所屬應用的資料庫授權,只給其所屬應用的IP或代理授權。
e. MySQL從庫必須新增read-only,只給select許可權,嚴禁all,導致只讀失效。
f. 應用帳號密碼策略同root,建議每3個月修改一次。
三、MySQL資料安全策略
1. 物理(xtrabackup)和邏輯(MySQLdump)相結合的備份策略,全備+增量+異地。
2. 資料庫備份檔案定期回放,定期驗證備份的可恢復性。
3. 針對重要業務系統建立delay資料庫或者採取Linux初始化時設定lvm策略,可快照閃回。
4. 假設有Binlog Server,遇到緊急情況可資料恢復。
附:MySQL命令列提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2135556/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 操作生產環境的規範
- mysql資料庫規範MySql資料庫
- 生產環境資料庫恢復一例資料庫
- [資料庫]【MySQL】MySQL資料庫規範總結資料庫MySql
- MySQL 規範 (資料庫表設計規範)MySql資料庫
- 生產環境故障處理演練-mysql資料庫主從恢復MySql資料庫
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- [MySQL生產環境資料恢復]innobackupex: fatal error: OR no 'datadir'MySql資料恢復Error
- MySQL 社群規範 | 資料庫篇MySql資料庫
- MySQL資料庫設計規範MySql資料庫
- 【MySQL】資料庫開發規範MySql資料庫
- kafka生產環境規劃-kafka 商業環境實戰Kafka
- MySQL 資料庫規範--設計篇MySql資料庫
- MySQL之規範資料庫設計MySql資料庫
- mysql之 資料庫開發規範MySql資料庫
- 【乾貨】MySQL資料庫開發規範MySql資料庫
- 生產環境中mysql資料庫由主從關係切換為主主關係MySql資料庫
- 生產環境搭建MySQL複製的教程MySql
- 使用RMAN將生產庫資料恢復到另外環境追溯先前的資料資料恢復
- 生產環境資料遷移問題彙總
- MySQL資料庫設計與開發規範MySql資料庫
- MySQL資料庫基本設計規範總結MySql資料庫
- MySQL-11.資料庫的設計規範MySql資料庫
- 生產環境中MySQL複製的搭建KPMySql
- 資料庫命令規範資料庫
- redmine生產環境搭建
- Django生產環境搭建Django
- 資料庫規範之SQL規範寫法資料庫SQL
- 【MySQL資料庫】認識資料庫+環境搭建--------Windows系統MySql資料庫Windows
- 如何基於生產環境mysql 5.6.25主從部署新的mysql從庫操作指南MySql
- MYSQL資料庫欄位命名及設計規範MySql資料庫
- 一次生產環境的docker MySQL故障DockerMySql
- 生產環境使用 pt-table-checksum 檢查MySQL資料一致性MySql
- 必看的資料庫規範資料庫
- 1.2.4 資料庫規範化資料庫
- 資料庫設計規範資料庫
- PayPal將CRDT資料型別落實到生產環境資料型別
- 企業資料庫安全管理規範 | 運維進階資料庫運維