こんにちは!

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

こんな感じに可視化します。 aligncenter

使い方はとっても簡単!

(1) ニフティクラウドのコントロールパネルから「API認証」の「AccessKey」「SecretAccessKey」を取得

  • コントロールパネルの「API認証」の項目から取得できます。

aligncenter

(2) インターネットアクセスが可能な端末に「ニフティクラウドCLIのコマンドラインツール」と「graphviz」をセットアップ

% 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層構造な物です。

LogicalNetworkDiagram.png

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」=「インターネット」としています(汗)

Comments