【AWS】CLIによるセキュリティグループ一覧取得

AWS-CLIを利用して、セキュリティグループの一覧を表示します。


コマンド

aws ec2 describe-security-groups --output=table --query 'sort_by(SecurityGroups[].{A_GroupName: GroupName, B_Name: Tags[?Key==`Name`].Value|[0], C_GroupID: GroupId}, &A_GroupName)'

実行結果

---------------------------------------------------------------------- | DescribeSecurityGroups | +--------------------+----------------------+------------------------+ | A_GroupName | B_Name | C_GroupID | +--------------------+----------------------+------------------------+ | default | None | sg-XXXXXXXX | | private-sg | private-sg | sg-XXXXXXXXXXXXXXXXX | | public-sg | public-sg | sg-XXXXXXXXXXXXXXXXX | +--------------------+----------------------+------------------------+

このコマンドだとセキュリティグループの一覧は取得できますが、詳細なルールは表示されません。


コマンド

aws ec2 describe-security-groups --group-ids security-group-id --output=table --query 'sort_by(SecurityGroups[].IpPermissions[].{A_Protocol: IpProtocol, B_SourcePort: FromPort, C_SourceIP: join(`, `, IpRanges[].CidrIp), D_SourceId: join(`, `, UserIdGroupPairs[].GroupId), E_SourcePrefix: join(`, `, PrefixListIds[].PrefixListId)}, &A_Protocol)'

実行結果

------------------------------------------------------------------------------------------------------------------ | DescribeSecurityGroups | +------------+---------------+----------------------------------------+-----------------------+------------------+ | A_Protocol | B_SourcePort | C_SourceIP | D_SourceId | E_SourcePrefix | +------------+---------------+----------------------------------------+-----------------------+------------------+ | tcp | 80 | 192.168.1.0/24 | | | | tcp | 22 | 192.168.1.0/24, 192.168.2.0/24 | sg-XXXXXXXXXXXXXXXXX | | | tcp | 3389 | 192.168.1.0/24 | | | +------------+---------------+----------------------------------------+-----------------------+------------------+

セキュリティグループのIDを個別に指定する必要がありますが、こちらのコマンドでインバウンドルールの一覧が表示されます。セキュリティグループを指定している場合はSourceIdの列に表示されます。


コマンド

aws ec2 describe-security-groups --group-ids security-group-id --output=table --query 'sort_by(SecurityGroups[].IpPermissionsEgress[].{A_Protocol: IpProtocol, B_DestPort: ToPort, C_DestIP: join(`, `, IpRanges[].CidrIp), D_DestId: join(`, `, UserIdGroupPairs[].GroupId), E_DestPrefix: join(`, `, PrefixListIds[].PrefixListId)}, &A_Protocol)'

実行結果

---------------------------------------------------------------------------- | DescribeSecurityGroups | +------------+-------------+-----------------+------------+----------------+ | A_Protocol | B_DestPort | C_DestIP | D_DestId | E_DestPrefix | +------------+-------------+-----------------+------------+----------------+ | -1 | None | 0.0.0.0/0 | | | | tcp | 80 | 192.168.5.0/24 | | | | tcp | 443 | | | pl-XXXXXXXX | +------------+-------------+-----------------+------------+----------------+

こちらはアウトバウンドルールの一覧が表示されます。「-1」はすべてのトラフィックを許可している場合に表示されるようです。PrefixListを指定している場合は、DestPrefixに表示されます。