阿里云的访问控制分散在几个产品里,各自独立,改一处不会影响另一处。常见的有三类。

- 云数据库 RDS、Redis 等托管数据库,在实例自己的“白名单设置”里配置,只允许列出的 IP 或 IP 段连接数据库端口。
- 云服务器 ECS,通过安全组的入方向规则,控制哪些地址能访问某个端口,比如 22(SSH)、3306(MySQL)、80 和 443。
- 对象存储 OSS 与 CDN,一般用 Referer 白名单做防盗链,限制只有指定域名能引用资源。
判断该改哪里,先看报错。连接被拒绝或超时,多半是数据库白名单或安全组的问题。返回 403 并提示 Referer 不合法,则是防盗链设置的问题。
二、RDS 白名单设置步骤
以 MySQL 为例。控制台的菜单名称会随版本调整,以你实际看到的页面为准。
- 登录阿里云控制台,进入“云数据库 RDS”,选中目标实例。
- 在左侧菜单找到“数据安全性”或“白名单设置”,打开后能看到默认分组。
- 点击“添加白名单分组”,或直接修改默认分组。输入 IP 地址或 CIDR 格式的 IP 段,例如 203.0.113.10 或 203.0.113.0/24。
- 保存后等待几秒到一分钟,白名单通常会即时生效。用客户端重新连接,确认能登录。
多个业务共用一个实例时,最好按业务分组,比如“订单服务”“报表系统”“运维办公网”各占一组。哪个系统下线,就删对应的分组,不会误伤其他服务。
案例:开发人员办公网 IP 变化导致连不上
某电商团队的开发人员在家里通过宽带连接测试库。一周后,运营商换了公网 IP,客户端报 Access denied。排查时才发现,白名单里还是旧地址。团队后来把办公网出口和常用 VPN 出口都加进了白名单,并在内部文档里写明:IP 变了,先核对白名单,再去查账号和密码。
三、Redis 白名单设置
云数据库 Redis 的白名单位置和 RDS 类似,同样在实例的安全设置里管理。Redis 更容易成为扫描对象,所以不要为了省事把 0.0.0.0/0 加进去。
如果应用和缓存在同一个 VPC 里,可以把 ECS 的内网 IP 或对应安全组加入白名单。这样应用服务器的公网 IP 变了,连接也不受影响。前提是两者确实处在同一个专有网络中。
四、ECS 安全组规则配置
ECS 的访问控制靠的就是安全组的入方向规则。配置时注意三点。
- 授权对象尽量小。运维通过 SSH 登录时,填办公网出口 IP,不要填 0.0.0.0/0。
- 只开实际需要的端口。MySQL 的 3306 不对公网开放,只允许应用服务器的内网地址访问。
- 注意规则优先级。安全组按优先级匹配。同一端口有多条规则时,先匹配到的那条生效,所以改规则后要核对顺序。
案例:临时放开的 0.0.0.0/0 忘了收回
一家初创公司为了快速调试,把 ECS 的 22 端口授权对象设成了 0.0.0.0/0,之后忘了改回。两天后,安全日志里出现大量针对 SSH 的登录失败记录。他们把授权对象改成办公网 IP,同时启用了密钥登录,异常记录很快停止。临时规则最容易被遗忘,建议在工单或文档里记下回收时间。
五、OSS 与 CDN 的 Referer 白名单
如果图片或视频被其他网站盗链,可以在 OSS 的“防盗链”设置里配置 Referer 白名单,只允许自己的域名访问。这个设置对直接访问 OSS 地址的请求有效。如果资源经过 CDN 分发,还需要在 CDN 域名的访问控制里配置同样的规则,两边要保持一致,否则会出现一部分请求能通过、另一部分被拦的情况。
Referer 可以被伪造,所以防盗链只能挡住普通盗链,不能代替身份认证。涉及敏感文件时,应该改用签名 URL 或权限控制。
六、常见问题与排查顺序
- 本地能连,服务器连不上。确认服务器的出口公网 IP,而不是内网 IP。可以在服务器上执行 curl ifconfig.me 查看。
- IP 段写错了。CIDR 格式要正确。/24 表示 256 个地址,写成 /32 则只放行单个地址,常见的错误就出在这里。
- 内网连接仍被拒绝。确认应用和数据库在同一 VPC,并且白名单里已经加入应用服务器的内网 IP 或对应安全组。
- 改完不生效。先清空客户端的连接池,等几分钟再试。同时检查是不是改错了实例或地域,这种情况很常见。
七、维护建议
白名单要定期清理。员工离职、服务下线、IP 变更,都会让旧规则失效,但它们往往还留在名单里。建议每季度核对一次,删除不再使用的地址,并为每条规则写清用途和负责人。必须从公网访问的数据库,可以考虑通过 VPN 或堡垒机接入,减少直接暴露的 IP 数量。