如何轻松管理众多安全组中不断变化的公共 IP 地址

如何轻松管理众多安全组中不断变化的公共 IP 地址

我们的开发环境托管在 AWS 上,可供数十人访问。随着人们加入和离开项目,或者在其他(通常是临时的)地点工作,我发现自己不断地更新我们的许多安全组。


示例:Caroline 是一位主要在家工作的开发人员。

  • 当她加入这个项目时,我添加她的公共 IP 地址属于安全组“dev-a”、“dev-b”、“dev-c”和“dev-d”;她的条目被标记为“Caroline Lastname home”‡
  • 周一,恶劣的天气导致 Caroline 家停电;当电源恢复时,她的公共 IP 地址已经改变,所以我必须更新她在安全组“dev-a”、“dev-b”、“dev-c”和“dev-d”中的“Caroline Lastname home”条目。
  • 一周后,Caroline 去另一个州探望父母。她确定了新的公开 IP 并将其传达给我,我添加 安全组“dev-a”、“dev-b”、“dev-c”和“dev-d”中的条目标记为“Caroline Lastname temp [YYYYMMDD]”。
  • 我随后 消除这些“临时”IP 条目以垃圾收集的方式保存。
  • 当 Caroline 突然来到办公室工作时,我不需要做任何其他事情,因为办公室的 IP 范围已经在需要的位置配置好了。

现在将这些活动乘以项目人员数量……您就会明白为什么我将安全组列表链接添加到书签中!

如何轻松管理众多安全组中不断变化的公共 IP 地址?我可以采取哪些步骤来简化安全组条目的管理开销?

‡:所有名称(包括安全组名称)均已更改,以保护无辜者。

答案1

很难说什么是最好的,因为你没有说人们在环境中做什么。他们是否在 Windows EC2 实例上运行 IDE?在 Linux 机器上访问日志?如果你编辑问题以提供更多背景信息,你可能会得到更好的答案。

不过有几点想法:

  • 使用不同的方法:不要将家庭 IP 列入白名单,最好使用 MFA 让人们进入堡垒实例/AWS 工作区。堡垒/工作区安全组在您环境的其余部分中被列入白名单。最佳实践是无论如何在具有堡垒的私有子网中拥有私有资源。

  • 为每个人提供使用 AWS CLI(或 CLI 调用 lambda)的脚本/批处理文件,以删除其中包含其名称/唯一 ID 的任何现有安全组规则,并将其替换为其当前 IP

  • 考虑基于身份的身份验证而不是基于 IP 的限制的一般思想,类似于零信任网络。

如果您在问题中扩展了您的场景,然后回复让我知道我可以完善我的答案。

答案2

创建 AWS 客户端 VPN 以授予他们访问权限。他们可以各自拥有自己的凭证并使用私有 IP 地址访问环境。您还可以将 VPN 客户端放入他们自己的安全组中,并以此方式限制访问。

答案3

如果您能够切换到 VPN 等,这里的其他答案在替代方案和最佳实践方面非常出色。

如果您想要一种机制来根据 OP 的工作流程自动管理条目,请考虑使用 lambda 创建和清理规则的解决方案。

这个 GitHub repo 有一个强大的解决方案:https://github.com/fvinas/tf_aws_lambda_ip_whitelist

它使用 terraform 来设置一切,您可以选择谁能够为人们创建这些规则,无论是您自己还是用户自己(如果您非常信任他们:))。

相关内容