考虑以下几点

考虑以下几点

我找不到任何有关 AWS 安全组的最佳实践。我认为可以采用两种方法,但我不确定这两种方法是否有任何特定的缺点。

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

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

我想我更愿意采用方案 1,但不知道这种方法是否存在任何缺点或技术问题。有最佳实践吗?

答案1

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

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

考虑以下几点

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

  • 使用 NACL 进行粗粒度权限
  • 使用 SG 实现更具体的访问
  • 将您的实例放在私有子网中(此建议适用于非面向公众的实例。例如,您使用 ELB 连接到您的 Web 实例)

通用方法

考虑到所有这些,一种常见的方法是:

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

“常见”SG 的变体:

  • “common_linux 或 common_windows”
  • “common” AND “common_linux 或 common_windows”。

相关内容