はじめに
セキュリティグループルールの一覧は管理コンソールからのCSV出力が可能ですが、複数リージョンの出力を一度に行いたかったのでAWS CLIで一覧を作成することにしました。
作成した一覧はタブ区切りになっているのでスプレッドシートなどにコピーしてご活用ください。
コマンド
- 取得したいリージョンが複数あればスペース区切りでリージョン名を追加してください
echo -e "OwnerId\
\tRegionName\
\tVpcId\
\tGroupId\
\tGroupName\
\tDescription\
\tSecurityGroupRuleId\
\tGroupId\
\tIsEgress\
\tIpProtocol\
\tFromPort\
\tToPort\
\tCidrIpv4\
\tCidrIpv6\
\tDescription\
\tReferencedGroupInfo.GroupId\
\tReferencedGroupInfo.PeeringStatus\
\tReferencedGroupInfo.VpcId\
\tReferencedGroupInfo.VpcPeeringConnectionId\
"\ > /tmp/sg-rules.tsv; \
echo "ap-northeast-1 us-east-1" | tr ' ' '\n' | \
while read region_name
do
aws ec2 describe-security-groups \
--region $region_name \
--query 'SecurityGroups[*].[OwnerId, GroupId, GroupName, VpcId, Description]' \
--output text | LANG=C sort -u | \
while read owner_id sgid group_name vpcid description
do
aws ec2 describe-security-group-rules \
--filter Name="group-id",Values=$sgid \
--region $region_name \
--output text \
--query "SecurityGroupRules[*].[\
SecurityGroupRuleId\
, GroupId\
, IsEgress\
, IpProtocol\
, FromPort\
, ToPort\
, CidrIpv4\
, CidrIpv6\
, Description\
, ReferencedGroupInfo.GroupId\
, ReferencedGroupInfo.PeeringStatus\
, ReferencedGroupInfo.VpcId\
, ReferencedGroupInfo.VpcPeeringConnectionId\
]" | sed "s/^/${owner_id}\t${region_name}\t${vpcid}\t${sgid}\t${group_name}\t\"${description}\"\t/"
done
done >> /tmp/sg-rules.tsv;