小编Rya*_*yan的帖子

过滤具有特定端口和 IP ACL 的安全组的 AWS CLI 输出

我在过滤 AWS CLI 描述安全组输出时遇到困难

目标:使用 cidr 0.0.0.0/0 在端口 22 上找到所有具有入口规则的 SG

亚马逊自己的文档提供了一个示例,但声明他们的查询存在限制,因为它将首先过滤端口 22 的整个数据集,然后过滤 0.0.0.0/0 的整个数据集。这意味着具有以下规则的 SG 仍将触发:

ingress 22 sg-12345678
ingress 443 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)

这完全违背了过滤的目的,我什至不知道为什么亚马逊提供了一个标题为“描述具有特定规则的安全组”的示例

路线 1:先 aws cli 查询,然后是 jq

这条路线基于我在这里找到的内容:https : //github.com/aws/aws-cli/issues/971

aws ec2 describe-security-groups --output json --query 'SecurityGroups[*].[GroupName,GroupId,IpPermissions[?ToPort==`22`].[IpRanges[?CidrIp==`0.0.0.0/0`]]]'
Run Code Online (Sandbox Code Playgroud)

它提供了所有安全组的列表,但显示了具有 22 0.0.0.0/0 的任何 SG 的嵌套数据(并成功忽略了其他端口的任何 0.0.0.0/0 ACL)在下面的输出中,SG1 是我感兴趣的, SG2/SG3 需要过滤掉。

[
    [
        "SG 1", 
        "sg-11111111", 
        [
            [
                [
                    {
                        "CidrIp": "0.0.0.0/0"
                    }
                ]
            ]
        ]
    ],
    [
        "SG 2",
        "sg-22222222",
        [
            [
                []
            ]
        ] …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cli jq jmespath

4
推荐指数
1
解决办法
4458
查看次数

标签 统计

amazon-ec2 ×1

amazon-web-services ×1

aws-cli ×1

jmespath ×1

jq ×1