安全组链接 EC2 - 负载均衡器 - RDS

Security Group Linking EC2 - Load Balancer - RDS

虽然安全组的设置是一种非常简单的做法,但在关注应用程序安全和管理我的 EC2 实例、负载均衡器和 RDS 之间的连接时,我很难应用正确的模板。

我担心的是,我知道某些应用程序不应该 public 访问权限,只能由使用它们的应用程序访问,但不确定实现该目的的最佳方法 linking。

负载均衡器是否应该是安全组配置的来源,然后附加的 EC2 实例只引用负载均衡器设置?应该 RDS link 到 EC2 安全组还是负载均衡器?关于我在设计和当前设置方面应该考虑什么的任何指导都将非常有帮助!

负载均衡器:

Type | Protocol | Port Range | Source

HTTP | TCP | 80 | *Public*
SSH | TCP | 22 | *Private IP*
HTTPS | TCP | 443 | *Public*

EC2 实例:

Type | Protocol | Port Range | Source

HTTP | TCP | 80 | *Load Balancer Security Group*
SSH | TCP | 22 | *Load Balancer Security Group*
HTTPS | TCP | 443 | *Load Balancer Security Group*

RDS:

Type | Protocol | Port Range | Source

All TCP | TCP | 0 - 65535 | *EC2 Instance Security Group*
PostgreSQL | TCP | 5432 | *Public*
PostgreSQL | TCP | 5432 | *Public (IPv6)*
SSH | TCP | 22 | *Private IP*

您可以从 RDS 安全组中删除 SSH 和 All,因为它们将永远不会被使用。 RDS sec 组应指定需要连接的 EC2 sec 组。这意味着您还应该删除可公开访问的引用。

ELB 应该可以从 Internet 访问吗?如果是这样,你就可以开始了,除非你应该从 ELB 中删除 SSH 规则,因为它永远不会被使用(你不能通过 ssh 连接到 ELB 并且 ELB 不会负载平衡 ssh 连接)。

EC2 sec 组应该有允许 ELB 访问的规则。换句话说,应该为端口 80 和 443 添加定义 ELB sec 组 ID 的规则,这基本上就是您所拥有的。

删除(或更改)允许从 ELB 进行 SSH 访问的 EC2 sec 组规则,因为 ELB 不支持负载平衡 ssh 连接。理想情况下,它应该锁定在您的管理位置(您的办公室)。

所以基本上是这样的:

ELB

Type | Protocol | Port Range | Source

HTTP | TCP | 80 | *Public*
HTTPS | TCP | 443 | *Public*

EC2

Type | Protocol | Port Range | Source

HTTP | TCP | 80 | *Load Balancer Security Group*
HTTPS | TCP | 443 | *Load Balancer Security Group*
SSH | TCP | 22 | *Your office IP address (best practices)*

RDS

Type | Protocol | Port Range | Source

PostgreSQL | TCP | 5432 | *EC2 Instance Security Group*

最后,对于 ELB,您可以在 ELB 终止 SSL 连接,然后 ELB 将通过端口 80 将连接转发到您的 EC2 后端实例。这使您能够在一个地方 (ELB) 管理您的 SSL 证书。在需要极其严格的合规性的情况下,您不应该这样做,因为它会在 ELB -> EC2 之间留下加密间隙。但是你真的不需要担心这个,除非你要处理 PCI 或 HIPAA 合规性。

那么您的 EC2 sec 组将如下所示:

EC2

Type | Protocol | Port Range | Source

HTTP | TCP | 80 | *Load Balancer Security Group*
SSH | TCP | 22 | *Your office IP address (best practices)*