EC2 - 安全组应该专业化和堆叠吗?

ffx*_*sam 5 amazon-ec2 amazon-web-services security-groups

我尚未找到任何 AWS 安全组的最佳实践。我认为我可以采取两种方法,但我不确定其中一种方法是否有任何特定的缺点。

场景 1:
定义小型的专用安全组,例如“ssh”、“mongodb”、“web”等,然后实质上在每个 EC2 实例上“堆叠”多个安全组以指定打开哪些端口。

场景 2:
定义更大、更通用的安全组,例如打开端口 80、443、ssh、数据库的“web1”,并将其应用于任何适当的 EC2 实例。

我想我宁愿选择场景#1,但不知道这种方法是否有任何缺点或技术问题。有最佳实践吗?

Dre*_*ury 2

AWS 限制可以应用于网络接口的组数量:Security groups per network interface 5

一种常见的方法是创建 SG,以便可以轻松更新服务器群,但更新方式对于它们所应用到的所有主机仍然有意义。

考虑这几点

这些因素将决定您想要为实例安全组开放的内容。

  • 使用 NACL 获取课程粒度权限
  • 使用 SG 进行更具体的访问
  • 将您的实例放入私有子网中(此建议适用于面向非公开的实例。例如,您使用 ELB 连接到您的 Web 实例的情况)

通用方法

鉴于这一切,一个常见的方法是:

  • 所有实例都有一个通用安全组(其中包含您想要应用于每个实例的规则)
  • 每个实例都有一个角色,例如“Web 服务器”或“邮件服务器”或“postgres db”,并且每个角色都有一个关联的安全组
  • 您的特定实例可能有一个额外的安全组,用于前两个组未涵盖的任何自定义

“普通”SG 的变体:

  • “common_linux 或 common_windows”
  • “通用”和“common_linux 或 common_windows”。