您能否将 AWS 安全组配置为具有子组或嵌套组?

Can you configure AWS Security Groups to have sub groups or nested groups?

TLDR

我们在单个安全组中有很长的 IP 地址列表,很难管理。 AWS 使它 感觉 就像你可以有嵌套的组,但你不能。我说的对吗?

背景

我在配置和使用安全组方面没有任何问题。这个问题比较微妙,这设置了背景。

我们将安全组配置为将开发访问列入白名单 instances/services。由于我们的配置模式是白名单,因此我们必须不断添加新的 IP 地址,具体取决于团队成员的工作地点。还有没有静态 IP 地址的蹩脚 ISP。

这不是问题所在。但想象一下越来越乱的 IP 地址。

问题

有时我们想删除这个白名单(因为糟糕的 ISP)并确保 IP 地址是相关的、最新的并且应该仍然在白名单上。

我们发现自己不愿意这样做,因为目前有效地 "clean" 白名单的唯一方法是删除并重新开始。

AWS 似乎没有提供在安全组规则中标记记录或允许嵌套安全组的巧妙方法。

当前的解决方案

  1. 有很多(可能有数百个)独立的安全组,并确保它们始终附加到相关服务。

    专业版:易于 label/identify IP 地址(例如 Bob 的家庭 IP),因此 Bob 可以删除旧 IP 地址并替换为他的新地址。

    缺点:每个安全组都必须附加到相关实例,这个列表可能会很长。

  2. 保留一个单独的IP/lookup列表,并拥有一个安全组

    Pro:意味着你只需要一个安全组。

    缺点:必须使两个列表保持最新,不太实用,而且会出现不匹配。

  3. 某种自动化。构建一个定期检查安全组的服务,并将这些 IP 与一些基本 geo-ip/ISP 信息一起存储在 DynamoDB 中。作为参考。

    Pro:与#2 类似,但自动化。不是 100% 准确,因为 geo-ip 查找从来都不是。

    缺点:必须为感觉应该已经存在的东西编写和维护实用程序。

有希望的解决方案

  1. Sub/nested 安全组。 AWS 配置界面实际上暗示您可以这样做——但它没有按预期工作。 EG 主要安全组具有允许来自其他安全组的入站流量的规则 - 这些安全组又将 IP 地址逻辑分组在一起。

    http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html

    When you specify a security group as the source for a rule, this allows instances associated with the source security group to access instances in the security group. (Note that this does not add rules from the source security group to this security group.)

    我发现该文档有点矛盾。从实验来看它不起作用。

  2. 标记每条记录。这显然不存在,将是 AWS 的功能请求。

我是不是漏掉了什么?其他人如何管理大型安全组?

你是对的 -- 安全组不能嵌套。

如果您在 Amazon VPC 中将实例列入白名单 ,则可以使用名称来引用其他安全组。例如,您可能有一个 Web-SG 和一个 App-SG。 App-SG 可以允许从 Web-SG 进行访问。然后,与 Web-SG 关联的任何实例都将能够与 App-SG 中的任何实例进行通信。

但是,如果您将来自 AWS 外部的实例列入白名单,那么您将需要自己维护安全组内的 IP 地址列表。

最好的方法是自动化:

  • 在数据库、电子表格等中维护 'master list' 列入白名单的 IP 地址
  • 每当对主列表进行更改时自动更新列表

这可以通过用您最喜欢的编程语言编写的相当短的程序来完成,调用 authorize-security-group-ingress.

这样的命令

底线:在 AWS 外部维护您自己的完全标记列表,然后通过自动化使安全组匹配。