話題の記事

AWSのSecurity Groupの視覚化に便利なツール「aws_security_viz」

規模が大きいく大量のセキュリティグループを確認するのは面倒ですよね。マネージメントコンソールで名前で検索しながら確認・・・というか、自分もそんな感じです。 セキュリティグループを図で見れたら・・・と思って調べたら解決していた人がいました。感謝です。
2020.10.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、コカコーラ大好きカジです。

「規模が大きく大量のセキュリティグループを確認するのは面倒ですよね。」

マネージメントコンソールで名前で検索しながら確認・・・というか、自分もそんな感じです。

Security Groupを図で見れたら・・・と思って調べたら解決していた人がいました。感謝です。

aws_security_vizとは

現在のAWS上のSecurity Group構成を簡単に視覚化するツールです。(MITライセンスです)

anaynayak/aws-security-viz: Visualize your aws security groups.

前提条件

MacOSXでの利用法を記載します。 他のOSの場合は、Dockerで動作するようですので、上記URLのReadmeをご参照ください。

aws_security_vizのセットアップ

HomebrewとRubyが利用できる環境にあることが条件です。 私のRuby環境はrbenvを利用し、ruby 2.7.2p137で動作確認しております。

brew install graphviz
gem install aws_security_viz

上記だけです。簡単ですね。

aws_security_vizの使いかた

AWS CLI(aws ec2 describe-security-groups)のJSON結果からSecurity Groupの図を生成

aws ec2 describe-security-groups > sg.json
aws_security_viz -o sg.json -f viz.svg --color

viz.svgをブラウザで開くと図でみれます。

私の検証環境で試し、一部を抜粋表示しています。マインドマップみたいですよね。

簡単ですよねぇ。ひかえめに言って最高じゃ無いですか?

直接AWSから情報取得してSecurity Groupの図を生成

aws_security_viz -a <your_aws_key> -s <your_aws_secret_key> -e <your_aws_session_token> --region=ap-northeast-1  -f viz.svg --color=true

viz.svgをブラウザで開くと図でみれます。

「aws_session_token」はAssume Roleしている場合に利用します。 オプションでvpc指定も可能です。詳細は「-h」でオプション確認してください。 AWSキーやシークレットキー、セッショントークンが環境変数で設定済みの際には以下のスクリプトでできると思います。

$ cat create-viz.sh
#!/bin/bash
aws_security_viz --access-key=${AWS_ACCESS_KEY_ID} --secret-key=${AWS_SECRET_ACCESS_KEY} --session-token=${AWS_SESSION_TOKEN} --region=ap-northeast-1 --filename=viz.svg --color=true

Navigator Viewでの表示

上記の手順ではsvgファイルの形式の出力ですが、他の表示形式も可能です。

aws_security_viz -a <your_aws_key> -s <your_aws_secret_key> -e <your_aws_session_token> --region=ap-northeast-1 -f aws.json --renderer navigator

上記出力したファイルと同じディレクトリ上で以下を実行
ruby -run -e httpd -- -p 3000

ブラウザで以下のURLを開く
http://localhost:3000/navigator.html#aws.json

マウス操作できるビューで表示できます。

私の環境で試した表示サンプル。マウス操作で移動したり表示色を変更したり可能で便利です。

JSON Viewでの表示

Navigator ViewよりシンプルでSecurity Group 同士の関連がクリックした物だけ表示されるシンプルな図です。

aws_security_viz -a <your_aws_key> -s <your_aws_secret_key> -e <your_aws_session_token> --region=ap-northeast-1 -f aws.json --renderer json

上記出力したファイルと同じディレクトリ上で以下を実行
ruby -run -e httpd -- -p 3000

ブラウザで以下のURLを開く
http://localhost:3000/view.html#aws.json

マウス操作できるシンプルなビューで表示できます。

私の環境で試した表示サンプル。こんな感じ。セキュリティグループ間の関連のみが追えて良いです。

まとめ

aws_security_vizは、セキュリティグループをマインドマップみたいに見れるので、色々使えると思います。

参考元

anaynayak/aws-security-viz: Visualize your aws security groups.