ALB访问控制通过在监听上配置IP黑白名单,实现对客户端请求的精细化过滤。用户可以创建访问控制策略组,添加IP条目,并将策略组关联到监听来限制或放行特定来源的访问。
访问控制(ACL)与安全组如何选择
ALB提供两种访问控制机制:访问控制ACL和安全组。
对比项 | 访问控制ACL(本文) | ALB安全组 |
控制粒度 | 基于源IP,作用于单个监听。 | 基于源IP + 协议 + 端口,作用于整个ALB实例。 |
IPv6支持 | 不支持,仅可添加IPv4条目。 | 支持IPv4和IPv6地址。 |
默认行为 | 白名单模式自动拒绝未列入的IP;黑名单模式自动放行未列入的IP。 | 默认放通所有流量,必须显式添加拒绝规则(0.0.0.0/0)才能限制访问。 |
适用场景 | 简单IP黑白名单。配置简便,无需理解优先级规则。 | 需端口粒度控制、IPv6控制、或ICMP协议控制的场景。 |
前提条件
创建访问控制策略组
访问控制策略组是IP条目的集合。创建策略组并添加IP条目后,可将其关联到监听以实现黑名单或白名单访问控制。
控制台
前往ALB控制台的访问控制页面,在顶部菜单栏选择目标实例所属地域,然后单击创建访问控制策略组。
在创建访问控制策略组对话框,输入策略组名称,单击确定。
策略组创建完成后,在访问控制页面,单击目标策略组ID进入详情页。在条目页签,通过以下方式添加IP条目:
单个添加:单击添加条目,在对话框输入地址/地址段和备注,单击添加。
批量添加:单击批量添加条目,按以下格式批量输入:
每个条目一行,以回车分隔。
IP地址或IP地址段与备注之间用竖线(|)分隔,例如192.168.1.0/24|备注。
单次最多支持添加20个条目。
如果批量添加的条目中包含策略组内已存在的条目,批量添加将失败,需移除重复条目后重新提交。
添加完成后,可在条目列表中删除或导出条目。
API
调用CreateAcl创建访问控制策略组。
调用AddEntriesToAcl添加IP条目。
调用RemoveEntriesFromAcl删除IP条目。
开启/关闭访问控制
用户可以为监听设置访问白名单或黑名单:
白名单:仅允许策略组内的IP访问监听,拒绝其他所有请求。
黑名单:拒绝策略组内的IP访问监听,放行其他所有请求。
无论设置白名单还是黑名单,如果关联的策略组中没有任何IP条目,访问控制不会生效,监听将转发全部请求。设置白名单前请确认策略组内已包含需要放行的IP,避免阻断正常业务流量。
控制台
前往ALB控制台的实例页面,在顶部菜单栏选择目标实例所属地域,单击目标实例ID。
在监听页签,找到目标监听,在访问控制列单击启用或关闭。
启用:在对话框选择访问控制方式(白名单或黑名单)和访问控制策略组,单击保存。
关闭:在确认对话框单击确定。
也可以在监听详情页的访问控制区域开启或关闭访问控制。
API
调用AssociateAclsWithListener将访问控制策略组关联到监听。
调用DissociateAclsFromListener解除访问控制策略组与监听的关联。
常见问题
配了白名单,任意IP仍能访问
原因:策略组未关联到监听;或策略组中没有添加任何IP条目(空策略组等同于全部放通)。
解决方案:进入ALB实例的监听页签,确认目标监听的访问控制列显示已开启,并确认关联的策略组中包含IP条目。
想临时全放通,添加0.0.0.0/0到白名单不生效
原因:访问控制策略组不支持添加0.0.0.0/0,控制台会提示格式错误。
解决方案:正确做法是直接关闭访问控制,需要时再开启。
配了黑名单,目标IP仍能访问
原因:请求经CDN/WAF转发到ALB,ALB看到的源IP是CDN/WAF的回源IP,而非客户端真实IP。
解决方案:ALB访问控制在四层生效,匹配的是请求报文的源IP地址。当请求经CDN/WAF转发时,源IP是CDN/WAF的回源IP,因此ALB层的黑名单无法拦截客户端IP。需要在WAF或CDN层配置黑名单。
黑名单无法拦截X-Forwarded-For中的IP
原因:ALB访问控制在四层生效,仅匹配请求报文的源IP地址,不解析七层HTTP头部中的X-Forwarded-For字段。
解决方案:可在 WAF 中通过自定义规则实现:将匹配字段设为 X-Forwarded-For、逻辑符设为包含、匹配内容填写目标IP,规则动作设为拦截。参考配置自定义规则中的匹配条件说明。
在后端Nginx配了allow/deny不生效
原因:经过ALB代理后,后端服务器收到的请求来源IP是ALB的Local IP(从ALB实例所在交换机分配的私网地址),Nginx的allow/deny基于来源IP判断,因此无法匹配客户端IP。
解决方案:
(推荐)改用ALB访问控制功能,在ALB层直接配置IP黑白名单。
在Nginx中通过
X-Forwarded-For请求头获取客户端真实IP,再基于真实IP配置allow/deny规则。
想对单个域名或URL路径做访问限制
说明:访问控制ACL作用于监听级别,无法按域名或路径区分。开启后该监听下所有域名均受影响。
替代方案:标准版或WAF增强版ALB可通过转发规则实现——在转发条件中同时配置域名/路径和SourceIp条件,对匹配的请求返回固定响应(如403)。单条转发规则的SourceIp条件最多支持5个IP/CIDR段,且不支持0.0.0.0/x格式。如IP数量较多或使用基础版ALB,建议接入WAF,通过自定义规则实现域名/路径与IP组合的访问控制。
想封禁国外IP
说明:ALB访问控制不提供地域封禁功能,无法自动识别IP所属国家。
替代方案:可以手动将已知国外IP段加入黑名单,但无法自动更新且条目数有上限。建议使用WAF的区域封禁功能实现。
多层代理场景的访问控制
当ALB前存在七层代理时,ALB访问控制(四层生效)只能看到上一跳代理的回源IP,无法识别客户端真实IP,需在正确的层级配置访问控制。以CNAME接入WAF的场景为例(客户端 → CDN → WAF → ALB → ECS),各层的源IP和访问控制建议如下。
WAF增强版ALB通过SDK集成实现防护,WAF不参与流量转发,因此不存在WAF回源环节。如果ALB前无CDN等七层代理,则不存在本节描述的问题。
层级 | 看到的源IP | 访问控制建议 |
WAF |
| 推荐在此层做IP黑白名单。WAF正确配置后可基于客户端真实IP进行拦截,同时支持地域封禁功能。 |
ALB | WAF的回源IP。 | 在ALB配置白名单,仅允许WAF的回源IP段访问,防止攻击者绕过WAF直接访问ALB公网IP。WAF回源IP段可在WAF控制台的接入管理页面查看。 |
后端ECS | ALB的Local IP(从ALB实例所在交换机分配的私网地址)。 | ECS安全组需放行ALB的Local IP网段(否则健康检查和请求转发会失败)。 |
计费
访问控制功能本身不产生额外费用。ALB实例的计费规则请参见ALB计费说明。
配额
限制项 | 功能版本 | 上限 |
一个访问控制策略组可关联的监听数 | 基础版/标准版/WAF增强版 | 50 |
一个监听可关联的访问控制策略组数 | 基础版/标准版/WAF增强版 | 3 |
一个地域可支持的访问控制策略组数 | 基础版/标准版/WAF增强版 | 1000 |
一个访问控制策略组可添加的条目数 | 基础版/标准版/WAF增强版 | 500 |
一个ALB实例可关联的访问控制条目数 | 基础版/标准版/WAF增强版 | 800 |
一个监听可关联的访问控制条目数 | 基础版 | 300 |
标准版/WAF增强版 | 500 |
上述指标为硬限制,无法提升,详见ALB配额与限制。