パブリックからのアクセスを許可しているセキュリティグループを見つけるツール

少し前の話になるのですが、LLMによる開発支援機能を試したいなぁと思って、Cursorを使ってみました。(Cursorの開発体験はめっちゃよかった!)
今回はそのなかで作ったAWSのちょっと便利ツールについて紹介します。

GitHub - ktamamu/NeKo_AWS_SG

作った理由

  • 皆で共有する検証環境に、意図せずグローバルに許可を与える可能性のあるセキュリティグループが潜在していると感じたことがきっかけです。

  • 検証完了後に削除し忘れたセキュリティグループや、チュートリアル通りに設定したままのものがそのまま残っているケースもあると思います。

  • たとえ検証環境であっても、意図せずグローバルに接続可能なセキュリティグループが放置されているのは避けたいので、それらを整理するためのツールを作成しました。

機能

  • AWSアカウント内のすべてのセキュリティグループをスキャン
  • グローバルに対して公開されているインバウンドルールを持つセキュリティグループを検出
  • 検出結果をSlackに通知

使用方法

インストール方法のとおりにセットアップして、下記コマンドで実行します。

1
python src/main.py

該当するセキュリティグループが見つかった場合、下記のような通知が飛びます。

Slackの通知画面(該当セキュリティグループあり)

意図的に外部公開しているセキュリティグループは除外したいケースもあると思うので、その場合はYAMLファイルに該当のセキュリティグループの情報を./config/exclusions.yamlに追加します

1
2
3
4
5
6
7
8
- group_id: sg-12345678
rules:
- ip_protocol: tcp
port_range:
from: 443
to: 443
ip_ranges:
- 0.0.0.0/0

そうすると、該当するセキュリティグループの通知はスルーされるようになります。

Slackの通知画面(該当セキュリティグループなし)