1. CLI 명령어
1-1. Security Group 이름 출력
$ aws ec2 describe-security-groups --query 'SecurityGroups[].{Name:GroupName}'
1-2. Security Group 이름과 ID 출력
$ aws ec2 describe-security-groups --query 'SecurityGroups[].[Tags[?Key==`Name`] | [0].Value, GroupId]'
1-3. 특정 Security Group ID의 정보 출력
$ aws ec2 describe-security-groups --group-ids <GroupId>
1-4. 특정 Security Group 이름의 정보 출력
$ aws ec2 describe-security-groups --filters 'Name=group-name,Values=<GroupName>'
1-5. CIDR이 0.0.0.0/0이고 포트가 80인 Security Group 정보 출력
$ aws ec2 describe-security-groups --filters 'Name=ip-permission.cidr,Values=0.0.0.0/0' 'Name=ip-permission.to-port,Values=80' --query 'SecurityGroups[?length(IpPermissions[?ToPort==`80` && contains(IpRanges[].CidrIp, `0.0.0.0/0`)]) > `0`].{GroupName: GroupName, TagName: Tags[?Key==`Name`].Value | [0]}'
만약 다음과 같이 실행하면 문제가 생긴다.
$ aws ec2 describe-security-groups --filters 'Name=ip-permission.cidr,Values=0.0.0.0/0' 'Name=ip-permission.to-port,Values=80'
이러면 CIDR가 0.0.0.0/0인 규칙이 있고 포트가 80포트인 규칙이 있으면 무조건 출력된다. 즉, 이런 것이다.
IPPERMISSIONS 80 tcp 80 IPRANGES 10.0.0.0/8 IPPERMISSIONS 8471 tcp 8471 IPRANGES 0.0.0.0/0 IPPERMISSIONS 8071 tcp 8071 IPRANGES 0.0.0.0/0 IPPERMISSIONS 443 tcp 443 IPRANGES 0.0.0.0/0