こんにちは!
お二人のエントリに触発されて自分も作ってみました!三番煎じですw
といっても、AmazonEC2のSecurityGroup用でもVPC用でもなく、ニフティクラウドのファイアウォール用ですが(_;
こんな感じに可視化します。

使い方はとっても簡単!
(1) ニフティクラウドのコントロールパネルから「API認証」の「AccessKey」と「SecretAccessKey」を取得
- コントロールパネルの「API認証」の項目から取得できます。

(2) インターネットアクセスが可能な端末に「ニフティクラウドCLIのコマンドラインツール」と「graphviz」をセットアップ
- ニフティクラウドCLIのコマンドラインツールの導入は下記を参照ください。
–ニフティクラウドでコマンドラインツールをご利用いただくにあたって - graphvizは下記コマンドで導入できます。
- Ubuntuの場合
% sudo apt-get install graphviz
- CentOSの場合
% sudo yum install graphviz
(3) gistからawkスクリプトを取得して配置、実行権限を付与
% wget https://raw.github.com/gist/2621567/1095b6823ad74213dfa546d1cad352438ff6aea6/niftycloud-fw-visualization.awk
% chmod +x niftycloud-fw-visualization.awk
(4) コマンド実行
% nifty-describe-security-groups --show-empty-fields --delimiter "##" | \
% ./niftycloud-fw-visualization.awk | \
% dot -Tpng > fw.png
(5) 出来上がり!
「fw.png」という名前でファイアウォールグループが可視化されます。
簡単な説明
可視化したフィアウォールグループの論理図
今回可視化したフィアウォールグループの論理図はこんな感じでしょうか。
インターネットから、WEBサーバと踏み台にだけアクセスが可能で、APLサーバとDBサーバにはそれぞれインターネットから直接アクセスを許可していない、よくある3層構造な物です。

awkスクリプトの中身
- ニフティクラウドAPIの出力はこんな感じ
% nifty-describe-security-groups --show-empty-fields
GROUP APL applied (nil) 10 1000
PERMISSION APL TCP 8080 8080 IN GRPNAME WEB
PERMISSION APL TCP 22 22 IN GRPNAME Fumidai
INSTANCE APL001
INSTANCE APL002
INSTANCE APL003
GROUP DB applied (nil) 10 1000
PERMISSION DB TCP 3306 3306 IN GRPNAME APL
PERMISSION DB TCP 22 22 IN GRPNAME Fumidai
INSTANCE DBmst001
INSTANCE DBslv001
INSTANCE DBslv002
GROUP Fumidai applied (nil) 10 1000
PERMISSION Fumidai TCP 22 22 IN CIDR 0.0.0.0/0
PERMISSION Fumidai TCP 80 80 IN CIDR 0.0.0.0/0
INSTANCE FumidaiGw
GROUP WEB applied (nil) 10 1000
PERMISSION WEB TCP 80 80 IN CIDR 0.0.0.0/0
PERMISSION WEB TCP 22 22 IN GRPNAME Fumidai
PERMISSION WEB TCP 443 443 IN CIDR 0.0.0.0/0
INSTANCE WEB001
INSTANCE WEB002
- awkスクリプトはこんな感じ
上記ニフティクラウドAPIの出力をパースしてgraphvizのdot出力に置き換えています。
仮に「0.0.0.0/0」=「インターネット」としています(汗)