この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
ELB にアタッチしているセキュリティグループのルール合計数を調べる方法を教えてください。できれば一括で出したいです。
どう対応すればいいの?
ELB のコンソールからそれぞれのセキュリティグループを確認することはできますが、ELB にアタッチしているセキュリティグループ数が多い場合、確認に手間がかかります。
そのため、AWS CLI で確認するのがオススメです。
Classic Load Balancer と Application Load Balancer のコマンド例を記載します。
前提として jq コマンドのインストール、それぞれ ELB_NAME
と ELB_ARN
の値を変更してください。その後、コマンドをコピー&ペーストすれば動きます。
Classic Load Balancer(CLB)の場合
ELB_NAME=<Classic Load Balancer名>
# 現在アタッチされているセキュリティグループの一覧を出す
aws elb describe-load-balancers \
--load-balancer-name $ELB_NAME \
| jq '.LoadBalancerDescriptions[].SecurityGroups'
# インバウンドルール数の合計を出す
SGList=$(aws elb describe-load-balancers \
--load-balancer-name $ELB_NAME \
| jq '.LoadBalancerDescriptions[].SecurityGroups')
for SG in $SGList; do \
aws ec2 describe-security-groups \
--group-id $SG \
| jq '[.[] | .[].IpPermissions[].IpRanges | length] | add'; \
done
Application Load Balancer(ALB)の場合
ELB_ARN=<Application Load Balancer の ARN>
# 現在アタッチされているセキュリティグループの一覧を出す
aws elbv2 describe-load-balancers \
--load-balancer-arns $ELB_ARN | \
jq '.LoadBalancers[].SecurityGroups'
# インバウンドルール数の合計を出す
SGList=$(aws elbv2 describe-load-balancers \
--load-balancer-arns $ELB_ARN | \
jq '.LoadBalancers[].SecurityGroups')
for SG in $SGList; do \
aws ec2 describe-security-groups \
--group-id $SG \
| jq '[.[] | .[].IpPermissions[].IpRanges | length] | add'; \
done
上限緩和済み環境での出力例
[
"sg-aaa",
"sg-bbb",
"sg-ccc",
"sg-ddd",
"sg-eee",
"sg-fff",
"sg-ggg",
"sg-hhh"
]
232
運用観点でのポイント
人が目視で確認すると、どんなに厳重にやってもミスすることはありえるので、対象数が増えれば増えるほどコマンドで確認した方が安全です。
ただし、コマンドに問題がある可能性もあるので確実に安全ではないです。
作業で絶対の安心はないので、チームで慎重に進めたり、ミスした時の手戻り手順などカバー力を上げていくことで健全に運用ができると思います。
ありがたいことに、私が所属しているアノテーションのオペレーションチームはこのような意識が浸透していて、作業時の不安要素は極力減らせています。
採用情報:テクニカルサポート | らしく働く、らしく生きる。| アノテーション株式会社