安全组规则
安全组的规则控制允许达到与该安全组相关联资源的入站流量。这些规则还控制允许离开实例的出站流量。
您可以添加或删除安全组规则(又被称为授权或撤销入站或出站访问)。适用于入站数据流(进入)或出站数据流(离开)的规则。您可以授予对特定源或目标的访问权限。
安全组规则基本信息
以下是您的安全组规则的特征:
-
您可以指定允许规则,但不可指定拒绝规则。
-
当您首次创建安全组时,它没有入站规则。因此,在将入站规则添加到安全组之前,不允许入站流量。
-
首次创建安全组时,它具有允许来自资源的所有出站流量的出站规则。您可以删除该规则并添加只允许特定出站流量的出站规则。如果您的安全组没有出站规则,则不允许出站流量。
-
当您将多个安全组与一个资源相关联时,来自每个安全组的规则将聚合形成一组规则,用于确定是否允许访问。
-
添加、更新或删除规则时,您的更改会自动应用于与安全组关联的所有资源。有关说明,请参阅 配置安全组规则。
-
某些规则变更产生的影响可能会取决于跟踪流量的方式。有关更多信息,请参阅《Amazon EC2 用户指南》中的连接跟踪。
-
当您创建安全组规则时,AWS 会将唯一 ID 分配给规则。当您使用 API 或 CLI 修改或删除某规则时,您可以使用该规则的 ID。
限制
安全组无法阻止发送至 Route 53 Resolver 或来自其的 DNS 请求,Route 53 Resolver 有时称为“VPC+2 IP 地址”(请参阅《Amazon Route 53 开发人员指南》中的Amazon Route 53 Resolver)或 AmazonProvidedDNS。要通过 Route 53 Resolver 筛选 DNS 请求,请使用 Route 53 Resolver DNS Firewall。
安全组规则的组成部分
以下是安全组入站和出站规则的组件:
-
协议:允许的协议。最常见的协议为 6 (TCP)、17 (UDP) 和 1 (ICMP)。
-
端口范围:对于 TCP、UDP 或自定义协议,允许的端口范围。您可以指定单个端口号(例如
22
)或端口号范围(例如7000-8000
)。 -
ICMP 类型和代码:对于 ICMP,ICMP 类型和代码。例如,对于 ICMP 回应请求使用类型 8,对 ICMPv6 回显请求使用键入 128。
-
源或目标:允许的流量的源(入站规则)或目标(出站规则)。指定下列项之一:
-
一个 IPv4 地址。您必须使用
/32
前缀长度。例如,203.0.113.1/32
。 -
一个 IPv6 地址。您必须使用
/128
前缀长度。例如,2001:db8:1234:1a00::123/128
。 -
采用 CIDR 块表示法的 IPv4 地址范围。例如,
203.0.113.0/24
。 -
采用 CIDR 块表示法的 IPv6 地址范围。例如,
2001:db8:1234:1a00::/64
。 -
前缀列表的 ID。例如,
pl-1234abc1234abc123
。有关更多信息,请参阅 使用托管前缀列表合并和管理网络 CIDR 块。 -
安全组的 ID。例如,
sg-1234567890abcdef0
。有关更多信息,请参阅 引用安全组。
-
-
(可选)描述:您可以添加规则的说明;这可帮助您在以后识别它。描述的长度最多为 255 个字符。允许的字符包括 a-z、A-Z、0-9、空格和 ._-:/()#,@[]+=;{}!$*。
引用安全组
当您指定一个安全组作为规则的源或目标时,该规则会影响与安全组关联的所有实例。实例可以使用其私有 IP 地址,通过指定的协议和端口沿指定方向进行通信。
例如,下面的内容表示安全组的入站规则,该入站规则引用了安全组 sg-0abcdef1234567890。此规则允许来自与 sg-0abcdef1234567890 关联的实例的入站 SSH 流量。
来源 | 协议 | 端口范围 |
---|---|---|
sg-0abcdef1234567890 |
TCP | 22 |
在安全组规则中引用安全组时,请注意以下几点:
-
两个安全组必须属于同一 VPC 或对等 VPC。
-
不得向引用安全组的安全组添加引用安全组中的任何规则。
-
对于入站规则,与安全组关联的 EC2 实例可以接收来自与引用安全组关联的 EC2 实例的私有 IP 地址的入站流量。
-
对于出站规则,与安全组关联的 EC2 实例可以向与引用安全组关联的 EC2 实例的私有 IP 地址发送出站流量。
限制
如果您将路由配置为通过中间设备在不同子网中的两个实例之间转发流量,则必须确保这两个实例的安全组允许流量在实例之间流动。每个实例的安全组必须引用另一个实例的私有 IP 地址或包含另一个实例的子网的 CIDR 范围作为源。如果您引用另一个实例的安全组作为源,则安全组不允许流量在实例之间流动。
示例
下图显示了一个在两个可用区内分布子网,此外还拥有一个互联网网关和一个应用程序负载均衡器的 VPC。每个可用区都有一个用于 Web 服务器的公有子网和一个用于数据库服务器的私有子网。负载均衡器、Web 服务器和数据库服务器有单独的安全组。创建以下安全组规则以允许流量。
-
向负载均衡器安全组添加规则,以允许来自互联网的 HTTP 和 HTTPS 流量。来源是 0.0.0.0/0。
-
向 Web 服务器的安全组添加规则,以仅允许来自负载均衡器的 HTTP 和 HTTPS 流量。来源是负载均衡器的安全组。
-
向数据库服务器的安全组添加规则,以允许来自 Web 服务器的数据库请求。来源是 Web 服务器的安全组。
![包含 Web 和数据库服务器、安全组、互联网网关以及负载均衡器的架构](images/security-group-referencing.png)
安全组大小
源或目标的类型决定了将每条规则计入每个安全组可以拥有的最大规则数量的方式。
-
引用 CIDR 块的规则计为一条规则。
-
无论引用的安全组大小如何,引用其他安全组的规则均计为一条规则。
-
引用客户托管式前缀列表的规则计为前缀列表的最大大小。例如,如果前缀列表的最大大小为 20,则引用此前缀列表的规则计为 20 条规则。
-
引用 AWS 托管式前缀列表的规则计为前缀列表的权重。例如,如果前缀列表的权重为 10,则引用此前缀列表的规则计为 10 条规则。有关更多信息,请参阅 可用的 AWS 托管前缀列表。
过时的安全组规则
如果您的 VPC 具有与其他 VPC 的 VPC 对等连接,或者如果它使用其他账户共享的 VPC,则您的 VPC 中的安全组规则可引用该对等 VPC 或共享 VPC 中的安全组。这样,与所引用安全组关联的资源以及与进行引用的安全组关联的资源可以相互通信。有关更多信息,请参阅《Amazon VPC 对等指南》中的更新您的安全组以引用对等安全组。
如果安全组规则引用了对等 VPC 或共享 VPC 中的安全组,而共享 VPC 中的安全组或 VPC 对等连接已被删除,则该安全组规则将会标记为过时。与任何其他的安全组规则一样,您可以删除过时的安全组规则。