RDS的白名單設定是針對整個執行個體的,無法根據資料庫帳號限制特定IP地址的訪問,存在安全缺陷。本文介紹通過SQL命令實現指定帳號僅能從特定IP地址訪問資料庫,從而提升存取控制的安全性。
前提條件
已建立高許可權帳號,建立方法,請參見建立高許可權帳號。
注意事項
指定IP地址後,使用控制台或API介面管理帳號(如刪除帳號、修改密碼)可能引發故障,建議使用DMS或SQL命令管理帳號。
如果資料庫中存在使用者名稱相同且綁定的主機IP等價(如192.168.%和192.168.%.%)的帳號,系統無法保證鑒權順序,可能導致訪問異常。例如,存在
user@192.168.%
和user@192.168.%.%
兩個帳號時,系統會隨機播放一個進行鑒權,若兩個帳號的密碼或許可權不同,可能導致無法登入或許可權不一致。因此,應盡量避免這種情況。
使用SQL命令設定帳號從特定IP地址訪問資料庫
通過以下命令建立新帳號並授權管理資料庫,允許帳號通過特定IP地址訪問資料庫。
建立新帳號test001並授權管理rds001資料庫,允許從42.120.XX.XX訪問資料庫。
CREATE USER `test001`@`42.120.XX.XX`IDENTIFIED BY 'passwd'; GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test001'@'42.120.XX.XX'; GRANT ALL PRIVILEGES ON `rds001`.* TO 'test001'@'42.120.XX.XX'; GRANT SELECT ON mysql.* TO 'test001'@'42.120.XX.XX';
說明此帳號在控制台上無法查看到所屬資料庫。將42.120.XX.XX更改為%,即可在控制台查看此帳號的所屬資料庫。
要修改IP為42.121.XX.XX,使用如下命令:
RENAME USER `test001`@`42.120.XX.XX` TO `test001`@`42.121.XX.XX`;