困っていた内容
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
運用観点でのポイント
人が目視で確認すると、どんなに厳重にやってもミスすることはありえるので、対象数が増えれば増えるほどコマンドで確認した方が安全です。
ただし、コマンドに問題がある可能性もあるので確実に安全ではないです。
作業で絶対の安心はないので、チームで慎重に進めたり、ミスした時の手戻り手順などカバー力を上げていくことで健全に運用ができると思います。
ありがたいことに、私が所属しているアノテーションのオペレーションチームはこのような意識が浸透していて、作業時の不安要素は極力減らせています。
採用情報:テクニカルサポート | らしく働く、らしく生きる。| アノテーション株式会社
参考資料
- ネットワークインタフェースあたりのセキュリティグループルール数上限が緩和されました【300 → 1000】 | DevelopersIO
- describe-load-balancers — AWS CLI 1.19.27 Command Reference
- describe-load-balancers — AWS CLI 1.19.27 Command Reference
- describe-security-groups — AWS CLI 1.19.27 Command Reference
- 手戻りとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
テクニカルサポートノートとは?
クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。