设置IP白名单

创建RDS MySQLRDS MySQL Serverless实例后,需要将IP地址添加到白名单,该IP地址所属的设备才能访问该RDS实例。

前提条件

已创建RDS MySQL实例Serverless实例

操作步骤

说明

RDS默认已设置系统白名单,该白名单不显示,用于允许系统账号对数据库的维护操作,详情请参见系统账号说明

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中,单击白名单与安全组

  3. 确认IP白名单模式。

    说明

    版本为MySQL5.5、5.6、5.7且存储类型为高性能本地盘的实例可以切换为高安全模式。其他版本或存储类型的实例都采用通用模式。

  4. 单击default分组右侧的 修改 ,在弹出的对话框中添加IP白名单。

    说明
    • 如有需要,也可以单击添加白名单分组,并自定义一个分组名称。

    • 分组仅用于IP地址管理,不会影响实际访问权限。所有分组中的IP地址对RDS实例的访问权限是一致的。

    • 方法一:将应用服务器IP地址添加至组内白名单框中。查看应用服务器IP,请参见附录:如何获取应用服务器IP地址。您也可以单击加载本机公网IP(如本机开启了网络代理,请先关闭),直接添加本机公网IP。

      说明
      • 多个IP地址用英文逗号隔开,且逗号前后不能有空格。

      • 单个实例最多添加1000IP地址或IP段。如果IP地址较多,建议将零散的IP合并为IP段,例如10.10.10.0/24。

      • 如果白名单模式是高安全模式,则需注意

        • 公网IP添加至经典网络分组。

        • 把专有网络ECS实例私网IP添加至专有网络分组。

    • 方法二:单击加载ECS内网IP,显示当前阿里云账号以及当前地域下所有ECS实例的IP地址,快速添加ECS内网IP地址到白名单中。image

    添加后,该应用服务器才能访问RDS实例。

  5. 单击确定

下一步

通过命令行、客户端连接RDS MySQL实例

相关文档

常见问题

  • Q:为什么没有添加到白名单中的IP地址也可以访问RDS?

    A:您可以按照以下方法排查:

    • 检查所有的白名单分组,确认是否包含0.0.0.0/0。0.0.0.0/0表示允许所有IP访问RDS,存在安全风险,建议删除并仅设置可信任的IP地址。

    • 检查所有的安全组,确认是否包含该IP地址。如果某个安全组包含该IP地址,则可以访问RDS。

  • Q:如果在不开通外网的情况下,让本机可以访问RDS?

    A:需要打通内网,详情请参见连接本地IDC

  • Q:白名单里出现了一些IP地址,如何查看添加这些IP地址的操作者?

    A:在实例详情页左侧,单击操作审计,在事件名称中输入ModifySecurityIps,即可查看添加IP地址的操作者和操作详情。

  • Q:我的应用侧IP一直变化,没有固定IP,这种情况我应该如何设置RDS数据库的白名单?

    A:如果用户没有固定IP,无法设置0.0.0.0/0(表示允许所有IP访问RDS,出于安全考虑不推荐设置),建议基于身份验证而非IP的访问控制。例如,使用如下方式:

    • 使用动态DNS服务:通过动态DNS获取动态IP对应的域名,并将该域名或其解析出的IP地址加入数据库白名单。

    • 设置反向代理或负载均衡器:所有用户侧应用请求通过反向代理服务器或负载均衡器转发到数据库,仅将代理服务器的固定IP地址加入数据库白名单。

    • 定期更新白名单:对于IP地址在一定范围内变化的情况(如家庭宽带IPISP分配),定期获取这些IP地址并更新至白名单中。

  • Q:通过RDS控制台添加白名单时报错InvalidSecurityIPListLength.Malformed

    问题描述

    用户通过RDS控制台添加白名单时,可能会出现如下报错:

    错误码:InvalidSecurityIPListLength.Malformed
    报错信息(中文):安全IP地址不在可用范围内或已被占用。
    报错信息(英文):The security ip address is not in the available range or occupied.

    image

    解决方案

    • 原因1:单个白名单分组中最多支持1000IP地址/段,新增的IP超过了限制。

      解决方案:确保单个白名单分组中的IP地址或IP段数量不超过1000个。建议将零散的IP地址合并为CIDR格式的IP段(如192.168.1.0/24),以减少占用数量。

    • 原因2:添加的IP白名单包含非法地址。

      解决方案:确保输入的IP地址合法,推荐使用标准CIDR格式(如10.23.12.0/24),掩码范围为1~32。若需添加多个IP地址,请使用英文逗号(,)分隔。

    • 原因3:与已存在的白名单存在冲突。例如,在RDS MySQL192.168.1.8会与192.168.1.1/8发生冲突。

      解决方案:根据实际需求合理规划并添加白名单,避免与现有规则产生重叠或冲突。

    说明

    请勿删除默认分组default(包含127.0.0.1),也不要修改系统分组(如ali_dms_grouphdm_security_ips),以免影响系统功能或连接安全性。

附录:确认是否满足内网访问的条件

  1. 查看ECS实例的地域和网络类型,具体参见准备工作

  2. 查看RDS实例的地域和网络类型。

    访问RDS实例列表,在上方选择目标实例所在地域,找到目标实例,即可看到地域、网络类型、VPC ID。RDS实例地域和网络类型

  3. 确认是否满足内网访问的条件:

    1. ECS实例与RDS实例位于同一地域。

    2. ECS实例与RDS实例的网络类型相同。如果都是专有网络,专有网络ID也需要相同。

    说明

    任意一项不满足,就无法通过内网访问RDS。

附录:如何获取应用服务器IP地址

表 1. 如何获取应用服务器IP地址

场景

需获取的IP地址

如何获取

满足内网访问的条件

ACK集群的容器的对应IP

  • ACK集群的容器网络插件Flannel时,添加应用程序所在的节点IP。

  • ACK集群的容器网络插件为Terway时,添加应用程序所在的Pod IP。

您在目标ACK集群的容器组页面,查Pod IP和节点IP。

ECS实例私网IP

点此打开ECS实例列表,选择地域,在实例列表查看私网IP和公网IP。

不满足内网访问的条件

ECS实例公网IP

需要通过本地设备访问RDS实例

本地设备公网IP

通过curl ipinfo.io/ip(推荐)或curl ifconfig.me查询本地客户端公网IP。

说明

公网IP在数据库升级或变更操作时可能会发生变化。如果已经将本地IP地址添加到白名单中,但仍然无法连接,请参见外网无法连接RDS MySQLMariaDB:如何正确填写本地设备的公网IP地址处理。

附录:系统默认白名单

DMS、DTS、DAS服务与RDS MySQL交互时,系统会自动添加以下白名单分组,以确保正常访问。

分组名称

说明

dms

用于DMS登录RDS MySQL实例。

dts

用于DTS传输数据。

hdm_security_ips

用于DAS服务获取数据、优化、运维和安全管理。

重要

对于202012月之后的新建实例,hdm_security_ips白名单分组对用户不可见,防止误修改或删除分组,影响相关服务的使用。