EC2 – 安全组是否应该专门化和堆叠?

我一直无法findAWS安全组的最佳实践。 我认为我可以采取两种方法,但我不确定是否有任何特定的缺陷。

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

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

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

AWS限制可应用于networking接口的Security groups per network interface 5

一个常见的方法是创buildSG,以便更新您的服务器队列,但是对于所有应用的主机来说,仍然是有意义的。

考虑这些点

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

  • 使用NACLs课程粮食许可
  • 使用SG进行更具体的访问
  • 把你的实例放在一个私有子网中(这个build议是针对非公开的实例的,比如你使用ELB连接到你的web实例的地方)

一个通用的方法

鉴于这一切,一个共同的方法是:

  • 所有实例都获得一个通用的安全组(这有你想要应用于每个实例的规则)
  • 每个实例都有一个angular色,比如“web服务器”或“邮件服务器”或“postgres数据库”,每个angular色都有一个关联的安全组
  • 您的特定实例可能会有一个额外的安全组,用于前两个组未涵盖的任何自定义设置

“常见”SG的变化:

  • “common_linux OR common_windows”
  • “common”和“common_linux OR common_windows”。