全部产品
Search
文档中心

负载均衡:安全组实现端口粒度访问控制

更新时间:Aug 10, 2026

如果用户需要对ALB进行访问控制,可以通过为ALB实例配置安全组来实现。相较于ACL,ALB安全组支持基于协议/端口的访问控制,且支持IPv6地址类型的访问控制策略。

场景说明

  • ALB实例未加入安全组时,ALB监听端口默认对所有请求放行。

  • 当ALB实例加入安全组且未设置任何拒绝策略时,ALB监听端口默认对所有请求放通。如果您需要只允许特定IP访问ALB,请注意添加一条拒绝策略进行兜底。

当您的ALB实例有访问控制的诉求,希望控制ALB实例的入流量时,您可以选择为ALB实例添加安全组,同时可基于业务设置相应的安全组规则。

重要
  • 负载均衡的出方向流量为用户请求的回包。为了保证您的业务正常运行,ALB的安全组对出流量不做限制,您无需额外配置安全组出方向规则。

  • 在ALB实例创建完成后,系统会在实例所在的VPC网络下自动生成一个托管安全组,由ALB实例进行管理,您只有查看权限,没有操作权限。ALB托管安全组包括以下安全组规则:

    • 优先级为1的规则:默认放通Local IP(用于与后端服务器通信)。

      新增安全组规则时,建议您避免对ALB的Local IP添加优先级为1的拒绝策略,以确保新增的安全组规则不会与ALB托管安全组策略冲突,因为这可能会影响ALB与您后端服务之间的正常通信。您可以登录应用型负载均衡ALB控制台,在实例详情页面查看Local IP。

    • 优先级为100的规则:默认放通所有IP,即ALB加入安全组且未设置任何拒绝策略时,ALB监听端口默认对所有请求放通。

      普通安全组或企业安全组的默认访问控制规则(不可见)中存在1条拒绝其他任何流量的规则,此时,ALB托管安全组的默认放通规则会优先生效。

    • ALB扩展版实例的托管安全组会额外增加2条优先级为1的规则,默认拒绝33.0.0.0/8、22.0.0.0/16网段地址的客户端访问。

本文从以下三种场景来说明ALB实例加入安全组对端口的访问控制,以ALB实例配置HTTP 80监听和HTTP 81监听为例说明。

场景

安全组规则

预期效果

相关链接

ALB实例未加入安全组

ALB监听端口默认对所有请求放行

  • 允许客户端访问ALB实例的HTTP 80端口

  • 允许客户端访问ALB实例的HTTP 81端口

步骤五:ALB未加入安全组并验证结果

ALB实例加入安全组

拒绝访问HTTP协议的81端口

说明

此处仅列出与本文强相关的安全组规则,其余默认规则未列出。

  • 允许客户端访问ALB实例的HTTP 80端口

  • 拒绝客户端访问ALB实例的HTTP 81端口

步骤六:ALB实例加入安全组并验证结果

修改ALB实例加入的安全组

  • 拒绝访问HTTP协议的80端口

  • 拒绝访问HTTP协议的81端口

说明

此处仅列出与本文强相关的安全组规则,其余默认规则未列出。

  • 拒绝客户端访问ALB实例的HTTP 80端口

  • 拒绝客户端访问ALB实例的HTTP 81端口

步骤七:修改安全组并验证结果

使用限制

重要

ALB升级实例支持通过安全组或ACL来管理访问流量。升级前的ALB实例,仅支持通过ACL来进行访问控制。若您需要使用安全组,请新建实例或向商务经理申请存量实例的升级。

分类

安全组类型

说明

ALB支持加入的安全组

  • 普通安全组

  • 企业级安全组

  • 要求安全组为专有网络类型,且安全组和ALB实例属于同一个专有网络VPC(Virtual Private Cloud)。

  • ALB实例可加入的安全组数量及可关联的安全组规则数量,均遵循ECS安全组相关配额的限制:

  • 同一个ALB实例加入的安全组类型需保持一致,即不支持同时加入普通安全组和企业级安全组。

    某个ALB实例已加入普通安全组,如果需要加入企业级安全组,可解绑当前ALB实例的所有普通安全组后再行操作,反之亦然。

普通安全组和企业安全组详情请参见普通安全组与企业级安全组。

ALB不支持加入的安全组

托管安全组

托管安全组详情请参见托管安全组。

前提条件

  • 您已创建了专有网络VPC1。具体操作,请参见创建和管理专有网络。

  • 您已在VPC1中创建ECS01和ECS02实例,ECS01和ECS02实例作为ALB实例的后端服务器,且ECS01和ECS02实例中部署了2个不同的应用服务。

    • 关于如何创建ECS实例,请参见自定义购买实例。

      如果您需要测试ALB配置安全组对IPv6地址访问控制能力,请确保ECS01和ECS02支持IPv6通信。

    • 本文ECS01和ECS02部署测试应用服务示例如下:

      ECS01服务部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS01." > index.html

      ECS02服务部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS02." > index.html

操作步骤

步骤一:创建服务器组

  1. 登录应用型负载均衡ALB控制台。
  2. 在顶部菜单栏,选择服务器组所属的地域。本文选择华东1(杭州)。

  3. 在左侧导航栏,选择应用型负载均衡 ALB > 服务器组。

  4. 在服务器组页面,单击创建服务器组。

  5. 在创建服务器组对话框中,完成以下配置,然后单击创建。

    此处仅列出与本文强相关的配置项,其余部分参数可保持默认值。更多信息,请参见创建和管理服务器组。

    配置

    说明

    服务器组类型

    选择一种服务器组类型。本文选择服务器类型。

    服务器组名称

    输入服务器组名称。

    VPC

    从VPC下拉列表中选择一个VPC。本文选择已创建的VPC1。

    后端协议

    选择一种后端协议。本文选择HTTP。

    选择调度算法

    选择一种调度算法。本文选择加权轮询。

  6. 在服务器组创建成功对话框中单击添加后端服务器。

  7. 在后端服务器页签单击添加后端服务器。

  8. 在添加后端服务器面板,选择已创建的ECS01和ECS02实例,然后单击下一步。

  9. 为已添加的服务器设置端口和权重,然后单击确定。

步骤二:创建ALB实例并配置监听

  1. 登录应用型负载均衡ALB控制台。
  2. 在实例页面,单击创建应用型负载均衡。

  3. 在购买页面,完成以下配置。

    此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建和管理ALB实例。

    • 地域:本文选择华东1(杭州)。

    • 实例网络类型:本文选择公网。

    • VPC:本文选择已创建的VPC1。

    • 协议版本:默认为IPv4,如需同时支持客户端使用IPv4和IPv6地址访问,请选择双栈。

  4. 单击立即购买,然后根据控制台提示完成实例开通。

  5. 返回实例页面,找到已创建的ALB实例,单击该ALB实例ID。

  6. 单击监听页签,然后单击快速创建监听。

  7. 在快速创建监听对话框中,配置以下参数,完成HTTP 80监听的创建,然后单击确定。

    配置

    说明

    选择监听协议

    选择监听的协议类型。本文选择HTTP。

    监听端口

    输入监听端口。本文输入80。

    转发的后端服务器组

    在服务器类型下选择目标服务器组。本文选择已创建的服务器组。

  8. 在监听页签,单击快速创建监听。

  9. 在快速创建监听对话框中,配置以下参数,完成HTTP 81监听的创建,然后单击确定。

    配置

    说明

    选择监听协议

    选择监听的协议类型。本文选择HTTP。

    监听端口

    输入监听端口。本文输入81。

    转发的后端服务器组

    在服务器类型下选择目标服务器组。本文选择已创建的服务器组。

步骤三:设置域名解析

实际业务场景中,建议您使用自有域名,通过CNAME解析的方式将自有域名指向ALB实例域名。

  1. 在左侧导航栏,选择应用型负载均衡ALB > 实例

  2. 在实例页面,复制已创建的ALB实例的DNS名称。

  3. 执行以下步骤添加CNAME解析记录。

    说明

    对于非阿里云注册域名,需先将域名添加到云解析控制台,才可以进行域名解析设置。具体操作,请参见域名管理。如果您是阿里云注册的域名,请直接执行以下步骤。

    1. 登录域名解析控制台。

    2. 在公网权威解析页面,找到目标域名,在操作列单击解析设置。

    3. 在解析设置页面,单击添加记录。

    4. 在添加记录面板,配置以下信息完成CNAME解析配置,然后单击确定。

      配置

      说明

      记录类型

      在下拉列表中选择CNAME。

      主机记录

      您的域名的前缀。本文输入@。

      说明

      创建域名为根域名时,主机记录为@。

      解析请求来源

      选择默认。

      记录值

      输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。

      TTL

      全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。

步骤四:创建安全组

在ALB实例加入安全组前,您需要先至ECS管理控制台创建安全组。

  1. 登录ECS管理控制台。

  2. 在左侧导航栏,选择网络与安全下的安全组。

  3. 在顶部菜单栏,选择安全组所属的地域。本文选择华东1(杭州)。

  4. 在安全组页面,单击创建安全组。

  5. 在创建安全组页面,设置安全组的基本信息参数。

    此处仅列出和本文强相关的配置项,其余参数的配置请参见创建安全组。

    • 网络:本文选择已创建的专有网络VPC。

    • 安全组类型:本文选择普通安全组。

  6. 在默认的安全组规则上,配置新增的安全组的访问规则参数。

    1. 在入方向页签,连续单击两次手动添加。

    2. 按照以下规则分别进行添加,然后单击创建安全组。

      配置

      规则1:拒绝所有IPv4及IPv6地址对81端口的访问

      (可选)规则2:允许所有IPv6地址对80端口的访问

      授权策略

      选择拒绝。

      选择允许。

      优先级

      优先级保持默认值1。

      协议类型

      协议类型选择自定义TCP。

      说明

      在设置QUIC监听的安全组规则时,协议类型选择自定义UDP。

      端口范围

      输入端口号81。

      选择端口号HTTP(80)。

      授权对象

      选择所有IPv4(0.0.0.0/0)和所有IPv6(::/0)。

      选择所有IPv6(::/0)。

      描述

      输入安全组规则描述信息。

步骤五:ALB未加入安全组并验证结果

测试客户端与ECS01和ECS02之间的连通性。

本文以任意一台可以访问公网的客户端为例。如果您需要测试ALB配置安全组对IPv6地址访问控制能力,请确保该客户端支持IPv6公网通信。

  1. 打开命令行窗口,执行curl -4 http://<自有域名>:80,可以看到如下返回结果所示,表示IPv4客户端可通过ALB访问HTTP协议80端口。

    C:\Users\Administrator>curl -4 http://&lt;自有域名&gt;:80
    Hello World ! This is ECS02.
  2. 执行curl -4 http://<自有域名>:81,返回结果如下所示,表示IPv4客户端可通过ALB访问HTTP协议81端口。

    C:\Users\Administrator>curl -4 http://&lt;自有域名&gt;:81
    Hello World ! This is ECS01.
  3. (可选)执行curl -6 http://<自有域名>:80,可以看到如下所示,表示IPv6客户端可通过ALB访问HTTP协议80端口。

    C:\Users\Administrator>curl -6 http://&lt;自有域名&gt;:80
    Hello World ! This is ECS01.
  4. (可选)执行curl -6 http://<自有域名>:81,可以看到如下所示,表示IPv6客户端可通过ALB访问HTTP协议81端口。

    C:\Users\Administrator>curl -6 http://&lt;自有域名&gt;:81
    Hello World ! This is ECS01.

步骤六:ALB实例加入安全组并验证结果

ALB实例加入安全组,并验证安全组规则是否对ALB实例的端口的访问控制生效。

  1. 登录应用型负载均衡ALB控制台。
  2. 在ALB实例页面,找到目标ALB实例,单击实例ID,在实例详情页面单击安全组页签。

  3. 在安全组页签,单击添加安全组,在弹出的ALB实例加入安全组对话框中,选择步骤四:创建安全组创建的安全组,然后单击确定。

  4. 在左侧列表框单击目标安全组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)

  5. ALB实例加入安全组后,测试访问结果。

    1. 在客户端的命令行窗口,执行curl -4 http://<自有域名>:80,可以看到如下所示,表示IPv4客户端可通过ALB访问HTTP协议80端口。

      C:\Users\Administrator>curl -4 http://&lt;自有域名&gt;:80
      Hello World ! This is ECS01.
    2. (可选)执行curl -6 http://<自有域名>:80,可以看到如下返回结果,表示IPv6客户端可通过ALB访问HTTP协议80端口。

      C:\Users\Administrator>curl -6 http://&lt;自有域名&gt;:80
      Hello World ! This is ECS02.
    3. 执行curl -4 http://<自有域名>:81,可以看到IPv4客户端无法访问HTTP协议的81端口,表示ALB实例的安全组对81端口的访问控制已生效。

      C:\Users\Administrator>curl -4 http://xxx:81
      curl: (28) Failed to connect to xxx port 81 after 42076 ms: Could not connect to server
    4. (可选)执行curl -6 http://<自有域名>:81,可以看到,IPv6客户端无法访问HTTP协议的81端口,表示ALB实例的安全组对81端口的访问控制已生效。

      C:\Users\Administrator>curl -6 http://xxx:81
      curl: (28) Failed to connect to xxx port 81 after 42121 ms: Could not connect to server

步骤七:修改安全组并验证结果

修改安全组规则,并验证修改后的安全组规则是否对ALB实例的端口访问控制生效。

  1. 返回ALB实例页面,找到目标ALB实例,单击实例ID。在实例详情页签,单击安全组页签。

  2. 在基本信息区域单击安全组ID,或在安全组页签右上角单击前往ECS控制台编辑,进入安全组规则页面修改安全组规则。

  3. 在安全组规则页面,找到允许访问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)

  4. 修改ALB实例加入的安全组规则后,测试访问结果。

    1. 在客户端的命令行窗口,执行curl -4 http://<自有域名>:80,如果出现如下所示的输出,表示IPv4客户端无法访问HTTP协议的80端口,ALB实例的安全组对80端口访问控制已生效。

      C:\Users\Administrator>curl -4 http://&lt;自有域名&gt;:80
      curl: (28) Failed to connect to &lt;自有域名&gt; port 80 after 42020 ms: Could not connect to server
    2. (可选)执行curl -6 http://<自有域名>:80,如果出现如下所示的结果,IPv6客户端无法访问HTTP协议的80端口,表示ALB实例的安全组对80端口访问控制已生效。

      C:\Users\Administrator>curl -6 http://&lt;自有域名&gt;:80
      curl: (28) Failed to connect to &lt;自有域名&gt; port 80 after 42077 ms: Could not connect to server
    3. 执行curl -4 http://<自有域名>:81,如果出现如下所示的结果,IPv4客户端无法访问HTTP协议的81端口,表示ALB实例的安全组对81端口访问控制已生效。

      C:\Users\Administrator>curl -4 http://&lt;自有域名&gt;:81
      curl: (28) Failed to connect to &lt;自有域名&gt; port 81 after 42095 ms: Could not connect to server
    4. (可选)执行curl -6 http://<自有域名>:81,如果出现如下所示的结果,IPv6客户端无法访问HTTP协议的81端口,表示ALB实例的安全组对81端口的访问控制已生效。

      C:\Users\Administrator>curl -6 http://&lt;自有域名&gt;:81
      curl: (28) Failed to connect to &lt;自有域名&gt; port 81 after 42095 ms: Could not connect to server

相关文档

控制台操作文档

API文档