如何查找附加到 AWS 安全组的所有资源

问题描述 投票:0回答:2

我找到了一个允许来自

0.0.0.0
的所有流量的安全组,我想知道正在使用该安全组的所有资源。

是否有任何 AWS CLI 命令用于此操作,或者我应该检查每个资源以查看是否附加了此安全组?

amazon-web-services aws-security-group
2个回答
9
投票

方法 1:使用 AWS 管理控制台

选择您资源所在的区域

  1. 打开 Amazon EC2 控制台。
  2. 在导航窗格中,选择安全组。
  3. 复制您正在调查的安全组的安全组 ID。
  4. 在导航窗格中,选择网络接口。
  5. 将安全组 ID 粘贴到搜索栏中。

搜索结果显示与安全组关联的网络接口。检查网络接口的描述以确定与安全组关联的资源。例如,ELB

app/example-alb/1234567890abcdef
表示名称为
example-alb
的应用程序负载均衡器正在使用此安全组。

方法 2:使用 AWS CLI

aws ec2 describe-network-interfaces --filters Name=group-id,Values=<group-id> --region <region> --output json

如果输出为空,则没有附加资源

{
    "NetworkInterfaces": []
}

如果您在输出中看到信息,请运行此

aws ec2 describe-network-interfaces \
  --filters Name=group-id,Values=<group-id> \
  --region <region> --output json \
  --query "NetworkInterfaces[*].[NetworkInterfaceId,Description,PrivateIpAddress,VpcId]"

0
投票

除了上面的描述网络接口答案之外,还有其他资源可以引用安全组并防止其删除。

安全组可以引用其他安全组入站和出站:

aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=sg-012345678
aws ec2 describe-security-groups --filters Name=egress.ip-permission.group-id,Values=sg-012345678

对于这些,如果您尝试手动删除 SG,它会在控制台中告诉您问题出在哪里,但 cloudtrail 日志不会说明,并且 terraform 记录的错误也不会说明。因此,如果由于 terraform 的依赖而导致删除不需要的 sg 失败,最好的做法是手动尝试!

它们还可以出现在启动模板和启动配置中。据我所知,您无法通过命令行过滤这些内容,而且涉及更多 - 对于每个启动模板,您需要获取默认或最新版本,并检查其中的安全组,例如使用 jq。启动配置是一项传统技术,我还没有研究过 CLI。

更多参考来源可以是 ECS 和 Lambda。如果 lambda 附加到 VPC 并缩放至 0,则它不会有 ENI,但可以有 SG 引用。类似地,ECS 任务定义没有当前正在运行的任务。

© www.soinside.com 2019 - 2024. All rights reserved.