Amazon RDS 是在云中创建 MySQL 数据库的一种非常流行的选择。许多现代公司使用它来存储他们的业务数据。但是,与任何其他数据库一样,保护这些数据库需要特别注意以防止潜在的威胁和漏洞。
在本文中,我们将探讨保护 AWS RDS MySQL 数据库实例的 10 个最佳实践。
1.使用强密码并轮换使用
使用强密码是保护数据库实例的重要措施。强密码由大小写字母、数字和特殊字符随机组合而成。它的长度至少应为 20 个字符。
定期更改密码也很重要。应定期更改密码,例如每 60 到 90 天更改一次。
使用 MySQL validate_password插件,它提供额外的安全性,如密码过期、密码重用限制或密码失败跟踪。
- 保持 MySQL 更新
AWS 提供的托管服务的一大优势是您无需管理它们并且可以激活自动更新!没有这个就太傻了……当然,它不能防止 0-day 漏洞,但它已经很好地防止已知(和修补!)漏洞。
3.更改默认端口
这种良好做法可以防止机器人定期扫描互联网以查找未得到充分保护的实例。这是非常基本的,但没有它会很遗憾。
4.使用不同权限的不同用户
应该为每次使用创建一个用户。例如,如果我们有一个备份应用程序的脚本,我们将不会使用与应用程序相同的用户。只读用户在这里就足够了。root 用户应该只用于管理实例,而不是使用它!
- 断开您的 RDS 实例与互联网的连接
如果您有能力断开您的实例与 Internet 的连接并使其只能从其 VPC 网络内访问,那就去做吧!
6.使用防火墙
AWS 安全组可用于仅允许某些 IP 地址连接到您实例的端口:
7.使用MySQL引擎主机检查
不要像这样创建 MySQL 用户CREATE USER ‘new_user’@‘%’ IDENTIFIED BY 'password‘;,而是使用 MySQL 引擎主机检查:
Fixed IP address
CREATE USER ‘new_user’@‘123.123.123.123/255.255.255.255’ IDENTIFIED BY ‘password’;
Private IP range from your subnet
CREATE USER ‘new_user’@‘192.168.0.0/255.255.255.0’ IDENTIFIED BY ‘password’;
8.使用SSL
使用 SSL 实施传输中加密:
ALTER USER ‘new_user’@‘123.123.123.123/255.255.255.255’ REQUIRE SSL;
9. 将所需的权限授予所需的数据库
不要像这样授予您的 MySQL 用户权限,而是将GRANT ALL PRIVILEGES ON * . * TO ‘new_user’@‘123.123.123.123/255.255.255.255’;所需的权限授予所需的数据库:
GRANT SELECT, INSERT, UPDATE, DELETE ON my_db.* TO ‘some_user’@‘123.123.123.123/255.255.255.255’;
10. 使用 2FA 或 3FA
MySQL 8.0.27 及更高版本支持多因素身份验证 (MFA),这样帐户最多可以有三种身份验证方法。IAM 身份验证还可以启用多重身份验证。