多个 EC2 安全组 - 宽松还是限制?

SFu*_*n28 33 amazon-ec2 amazon-web-services

当我为一个实例分配多个安全组时会发生什么?如果任何一个安全组允许,就允许流量进入的意义上来说是宽容的。或者在每个安全组必须允许流量传入的意义上是限制性的?

例如,假设我有一类实例,它只会与同一帐户中的其他实例通信。我还有一类实例只接受通过 HTTP(端口 80)的流量。

是否可以通过创建和应用两个安全组来限制对内部实例的访问,并且只能通过 HTTP:

  1. “内部”安全组。在所有传输(TCP、UDP、ICMP)的所有端口上允许来自该安全组其他成员的所有流量
  2. 创建一个“http”安全组。允许所有流量从任何来源通过 TCP 进入端口 80。

或者我是否被迫创建一个安全组来允许来自源本身的端口 80 的流量?

eup*_*a83 33

宽容。

根据这里的 AWS:http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#security-group-rules

如果特定端口有多个规则,我们将应用最宽松的规则。例如,如果您有一个规则允许从 IP 地址 203.0.113.1 访问 TCP 端口 22 (SSH),而另一个规则允许每个人访问 TCP 端口 22,则每个人都可以访问 TCP 端口 22。


cee*_*yoz 7

如果一个实例有多个安全组,则它具有各个组中所有规则的总和。

例如,假设我有一类实例,它只会与同一帐户中的其他实例通信。我还有一类实例只接受通过 http(端口 80)的流量。

这是 AWS Virtual Private Cloud 的完美情况。将内部实例放在私有子网中,将面向公众的实例放在公共子网中。

  • 为什么人们不能只回答提出的问题,而不是插入他们对应该做什么的想法。如果你打算这样做,至少先正确回答这个问题。天啊 (8认同)
  • 非常清楚的是,您是说如果任何单个安全组允许,流量就会被允许进入?我对你关于“所有规则的总和”的评论感到困惑,因为当我想到总和时,我想到的是 AND 而不是 OR。 (3认同)
  • 是的,如果应用于实例的任何组允许,则允许。组规则被 OR 运算在一起,而不是 AND 运算。 (3认同)

SFu*_*n28 5

以下是 AWS 文档支持的回复。他们说他们会更新文档:

我发现了一些讨论论坛帖子,它们解决了一个或多个安全组中规则冲突的类似问题:

https://forums.aws.amazon.com/thread.jspa?messageID=221768

https://forums.aws.amazon.com/thread.jspa?messageID=349244吼

当多个安全组应用于一个实例时,规则会聚合以创建一大组规则。在 EC2 中,安全组规则只是宽松的,换句话说,您不能添加任何 DENY 规则。这意味着最宽松的规则将始终适用。例如,如果您有一个允许从 IP 地址 10.10.10.10 访问端口 22 的安全组和另一个允许从所有人访问端口 22 的安全组,则每个人都可以访问实例上的端口 22。