为了提高云上流量入口安全性,如果您需要对ALB进行基于协议/端口/IP的访问控制,可以通过为ALB实例配置安全组来实现。相较于ACL,ALB通过安全组能实现更全面的访问控制,不仅能配置基于协议/端口的访问控制,而且支持IPv6地址类型的访问控制策略。
场景说明
ALB实例未加入安全组时,ALB监听端口默认对所有请求放行。
当ALB实例加入安全组且未设置任何拒绝策略时,ALB监听端口默认对所有请求放通。如果您需要只允许特定IP访问ALB,请注意添加一条拒绝策略进行兜底。
如果您需要拒绝或允许特定IP访问ALB实例,请参见ALB配置安全组实现黑白名单访问策略。
如果您需要对ALB实现基于协议/端口的访问控制,请参见ALB配置安全组实现基于监听/端口粒度的访问控制。
当您的ALB实例有访问控制的诉求,希望控制ALB实例的入流量时,您可以选择为ALB实例添加安全组,同时可基于业务设置相应的安全组规则。
负载均衡的出方向流量为用户请求的回包。为了保证您的业务正常运行,ALB的安全组对出流量不做限制,您无需额外配置安全组出方向规则。
新增安全组规则时,建议您避免对ALB的Local IP添加优先级为1的拒绝策略,以确保新增的安全组规则不会与ALB托管安全组策略冲突,因为这可能会影响ALB与您的后端服务之间的正常通信。您可以登录应用型负载均衡ALB控制台,在实例详情页面查看Local IP。
当您希望ALB实例中某些端口的监听被禁止访问,其他端口的监听可以正常访问时,您可以使用安全组功能实现对端口的严格访问控制。本文从以下三种场景来说明ALB实例加入安全组对端口的访问控制,以ALB实例配置HTTP 80监听和HTTP 81监听为例说明。
场景 | 安全组规则 | 预期效果 | 相关链接 |
ALB实例未加入安全组 | ALB监听端口默认对所有请求放行 |
| |
ALB实例加入安全组 | 拒绝访问HTTP协议的81端口 说明 此处仅列出与本文强相关的安全组规则,其余默认规则未列出。 |
| |
修改ALB实例加入的安全组 |
说明 此处仅列出与本文强相关的安全组规则,其余默认规则未列出。 |
|
使用限制
安全组功能默认不开放,如需使用,请向商务经理申请。
分类 | 安全组类型 | 说明 |
ALB支持加入的安全组 |
|
关于普通安全组和企业安全组的介绍,请参见普通安全组与企业级安全组。 |
ALB不支持加入的安全组 | 托管安全组 | 关于托管安全组的介绍,请参见托管安全组。 |
前提条件
操作步骤
步骤一:创建服务器组
- 登录应用型负载均衡ALB控制台。
在顶部菜单栏,选择服务器组所属的地域。本文选择华东1(杭州)。
在左侧导航栏,选择
。在服务器组页面,单击创建服务器组。
在创建服务器组对话框中,完成以下配置,然后单击创建。
此处仅列出与本文强相关的配置项,其余部分参数可保持默认值。更多信息,请参见创建和管理服务器组。
配置
说明
服务器组类型
选择一种服务器组类型。本文选择服务器类型。
服务器组名称
输入服务器组名称。
VPC
从VPC下拉列表中选择一个VPC。本文选择已创建的VPC1。
选择后端协议
选择一种后端协议。本文选择HTTP。
选择调度算法
选择一种调度算法。本文选择加权轮询。
在服务器组创建成功对话框中单击添加后端服务器。
在后端服务器页签单击添加后端服务器。
在添加后端服务器面板,选择已创建的ECS01和ECS02实例,然后单击下一步。
为已添加的服务器设置端口和权重,然后单击确定。
步骤二:创建ALB实例并配置监听
- 登录应用型负载均衡ALB控制台。
在实例页面,单击创建应用型负载均衡。
在购买页面,完成以下配置。
此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建应用型负载均衡。
地域:本文选择华东1(杭州)。
实例网络类型:本文选择公网。
VPC:本文选择已创建的VPC1。
单击立即购买,然后根据控制台提示完成实例开通。
返回实例页面,找到已创建的ALB实例,单击该ALB实例ID。
单击监听页签,然后单击快速创建监听。
在快速创建监听对话框中,配置以下参数,完成HTTP 80监听的创建,然后单击确定。
配置
说明
选择监听协议
选择监听的协议类型。本文选择HTTP。
监听端口
输入监听端口。本文输入80。
转发的后端服务器组
选择服务器类型及服务器类型下的服务器组。本文选择已创建好的服务器组。
在监听页签,单击快速创建监听。
在快速创建监听对话框中,配置以下参数,完成HTTP 81监听的创建,然后单击确定。
配置
说明
选择监听协议
选择监听的协议类型。本文选择HTTP。
监听端口
输入监听端口。本文输入81。
转发的后端服务器组
选择服务器类型及服务器类型下的服务器组。本文选择已创建好的服务器组。
步骤三:设置域名解析
实际业务场景中,建议您使用自有域名,通过CNAME解析的方式将自有域名指向ALB实例域名。
在左侧导航栏,选择
在实例页面,复制已创建的ALB实例的DNS名称。
执行以下步骤添加CNAME解析记录。
说明对于非阿里云注册域名,需先将域名添加到云解析控制台,才可以进行域名解析设置。具体操作,请参见域名管理。如果您是阿里云注册的域名,请直接执行以下步骤。
登录域名解析控制台。
在权威域名解析页面,找到目标域名,在操作列单击解析设置。
在解析设置页面,单击添加记录。
在添加记录面板,配置以下信息完成CNAME解析配置,然后单击确定。
配置
说明
记录类型
在下拉列表中选择CNAME。
主机记录
您的域名的前缀。本文输入@。
说明创建域名为根域名时,主机记录为
@
。解析请求来源
选择默认。
记录值
输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
TTL
全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
步骤四:创建安全组
在ALB实例加入安全组前,您需要先至ECS管理控制台创建安全组。
登录ECS管理控制台。
在左侧导航栏,选择
。在顶部菜单栏,选择安全组所属的地域。本文选择华东1(杭州)。
在安全组页面,单击创建安全组。
在创建安全组页面,设置安全组的基本信息参数。
此处仅列出和本文强相关的配置项,其余参数的配置请参见创建安全组。
网络:本文选择已创建的专有网络VPC。
安全组类型:本文选择普通安全组。
在默认的安全组规则上,配置新增的安全组的访问规则参数。
在入方向单击手动添加。
配置新增的安全组规则,按照以下规则分别进行添加。然后单击创建安全组。
名称
描述
授权策略
选择拒绝。
优先级
优先级保持默认值1。
协议类型
协议类型选择自定义TCP。
说明在设置QUIC监听的安全组规则时,协议类型选择自定义UDP。
端口范围
输入端口号81。
授权对象
选择
所有IPv4(0.0.0.0/0)
和所有IPv6(::/0)
。描述
输入安全组规则描述信息。
步骤五:ALB未加入安全组并验证结果
测试客户端与ECS实例ECS01和ECS02之间的连通性。本文以任意一台可以访问公网的客户端为例。
在浏览器输入访问地址和端口号,例如
http://域名:80
,可以看到如下图所示,表示ALB可以访问HTTP协议的80端口。在浏览器输入访问地址和端口号,例如
http://域名:81
,可以看到如下图所示,表示ALB可以访问HTTP协议的81端口。
步骤六:ALB实例加入安全组并验证结果
ALB实例加入安全组,并验证安全组规则是否对ALB实例的端口的访问控制生效。
- 登录应用型负载均衡ALB控制台。
在ALB实例页面,找到目标ALB实例,单击实例ID,在实例详情页签,单击安全组页签。
在安全组页签,单击添加安全组,在弹出的ALB实例加入安全组对话框中,选择步骤四:创建安全组创建的安全组,然后单击确定。
在左侧列表框单击目标安全组ID,可单击入方向或出方向页签分别查看安全组规则。
此处仅列出与本文强相关的安全组入方向规则。此时ALB实例的安全组规则如下:
授权策略
优先级
协议类型
端口范围
授权对象
允许
1
自定义TCP
目的:80/80
源:所有IPv4(0.0.0.0/0)
允许
1
自定义TCP
目的:80/80
源:所有IPv6(::/0)
拒绝
1
自定义TCP
目的:81/81
源:所有IPv4(0.0.0.0/0)
拒绝
1
自定义TCP
目的:81/81
源:所有IPv6(::/0)
修改ALB实例加入的安全组规则后,测试访问结果。
在浏览器输入访问地址和端口号,例如
http://域名:80
,可以看到类似下图所示,表示ALB实例可以访问HTTP协议的80端口。在浏览器输入访问地址和端口号,例如
http://域名:81
,如果无法访问应用服务,可以打开命令行窗口,执行curl http://访问地址:81
,如果出现如下图所示结果,则表示客户端无法访问ALB实例的HTTP监听的81端口,这表明ALB实例的安全组对81端口的访问控制已生效。
步骤七:修改安全组并验证结果
修改安全组规则,并验证修改后的安全组规则是否对ALB实例的端口访问控制生效。
返回ALB实例页面,找到目标ALB实例,单击实例ID。在实例详情页签,单击安全组页签。
在基本信息区域单击安全组ID,或在安全组页签右上角单击前往ECS控制台编辑,进入安全组规则页面修改安全组规则。
在安全组规则页面,找到允许访问TCP协议80端口的规则,在操作列单击编辑,修改授权策略为拒绝,单击保存。
此处仅列出与本文强相关的安全组规则。修改后的安全组规则如下:
授权策略
优先级
协议类型
端口范围
授权对象
拒绝
1
自定义TCP
目的:80/80
源:所有IPv4(0.0.0.0/0)
拒绝
1
自定义TCP
目的:80/80
源:所有IPv6(::/0)
拒绝
1
自定义TCP
目的:81/81
源:所有IPv4(0.0.0.0/0)
拒绝
1
自定义TCP
目的:81/81
源:所有IPv6(::/0)
修改ALB实例加入的安全组规则后,测试访问结果。
打开命令行窗口,执行
curl http://域名:80
,如果出现如下图所示,则表示客户端无法访问ALB实例HTTP监听的80端口,这表明ALB实例的安全组对80端口访问控制已生效。打开命令行窗口,执行
curl http://域名:81
,如果出现如下图所示,则表示客户端无法访问ALB实例HTTP监听的81端口,这表明ALB实例的安全组对81端口访问控制已生效。
相关文档
关于ALB添加安全组和解绑安全组等操作,请参见ALB加入安全组。
关于ALB配置安全组实现黑白名单的访问策略,请参见 ALB配置安全组实现黑白名单访问策略。
关于普通安全组和企业安全组的介绍,请参见普通安全组与企业级安全组。
LoadBalancerJoinSecurityGroup:为应用型负载均衡实例绑定已创建的安全组。
LoadBalancerLeaveSecurityGroup:为应用型负载均衡实例解绑安全组。