テクノロジー

AWSのシステム構成図自動生成ツール『CloudMapper』を試してみた!

はじめに

こんにちは。D2C ビジネス エンジニアリング部 sonnoです。

社会人1年目からインフラエンジニアとしてキャリアを積んできましたが、
一念発起して、昨年より業務領域を広げるため、システム開発にチャレンジ。
一兵卒として日々、勉強中です!

今回の記事はどちらかというと、インフラ寄りのテーマとなりますが、
AWS環境の構成図を自動で作ってくれる『CloudMapper』を触ってみたので記事にまとめてみようと思います。

CloudMapperとは

クラウドベースの認証サービスを手がけるDUO Securityが公開しているツールで、
AWSのリソース情報を解析して、自動でブラウザにシステム構成を視覚化してくれるオープンソースのビジュアライズツールです。

「構成変更のたびに、システム構成図を手動更新するのは面倒くさい…。」、
「複雑なネットワーク構成を可視化するのは骨が折れる…。」等の不満を抱えている方に、おススメしたいツールです。

・CloudMapperの紹介サイト(英語)
Introduction CloudMapper

また、GitHubにCloudMapperのソース(duo-labs/cloudmapper)が公開されています。

システム構成図が生成されるまでの手順を本記事に記載しております。
また幾つか、つまずきポイントがあったので、そちらも踏まえて記事にまとめています。

環境

今回はEC2(Amazon Linux 2)で動作を確認します。
※WEBサーバはCloudMapperに内包されているので別途インストール不要

設定手順

1.ソースのダウンロード

①まずはGitHubからソースのレポジトリーをクローンします。
※GitHubのアカウントをお持ちでない方はアカウントを作成しましょう。

②カレントディレクトリ配下にcloudmapperというディレクトリがあることを確認します。

2.必要なパッケージ、CloudMapperのインストール

①CloudMapperを利用するのに必要なパッケージをインストールします。

②CloudMapperをインストールするためにpipenvコマンドをインストール。

③CloudMapperをインストールします。

④以下のコマンドを実行

3.IAMユーザを作成する

CloudMapperを利用するにあたり、AWS内の情報を収集するためのIAMユーザを作成する必要があります。

①IAMユーザを作成します。

②続いて、IAMユーザのアクセスキーを作成します。

③作成したIAMユーザの権限を設定します。
今回はEC2、ELB、RDSのDescribe権限のみ付与います。

④aws cliの設定をします。アクセスキーID、シークレットキーの情報を入力します。

4.confファイル作成

次は、CloudMapper用のconfファイルを用意します。
3章で作成したIAMユーザのアカウントID情報を入力します。

①インストール先のcloudmapper配下にデモ用の設定ファイルがあるのでconfig.jsonという名前でコピー。
こちらのファイルにAWS ID、アカウント名を記入します。

5. 情報収集

①AWSから構成情報を収集します。

…がここで躓いた。
データ収集しようとしたらモジュールが見つからないというエラーが。

pyjqをインストールするも、筆者の環境では同様に以下のモジュールもインストールしないとスクリプトが実行できませんでした。

またしても、エラーが…。

エラーメッセージを見てみるとIAMユーザの権限(iam:GetUser)がないため実行できないそう。

4章で作成したIAMユーザの権限に『iam:GetUser』を追加します。

上記の権限付与後にスクリプトを実行したところ、データ取得処理が開始されました。

②./cloudmapper/account-data/【アカウント名】配下に収集したデータが保存されます。

6.システム構成図を生成

①以下のコマンドを実行し、データ解析を実施します。

※オプション指定でリージョン、VPCなど指定可能

②Webサービスを起動します。リモートから利用する場合は、
publicオプションを指定します。

※ローカル環境でセットアップした場合は–publicオプションの指定は不要です。
※デフォルトでは8000番ポートを使用します。–portでポート指定可能。

7.実行結果

ブラウザから『http://【EC2のIP】:8000 』 へアクセスするとシステム構成図が表示されました。

ノードをクリックすると、詳細情報を確認できます。

ブラウザ画面から、以下の操作が可能でした。
・レイアウト変更
・キャプチャ取得
・ファイルインポート・エクスポート(JSON形式)

また、自動描画された構成図の編集操作はできませんでした。
あくまで現状のシステム構成を可視化するツールという位置付けの様ですね。

まとめ

リソースの変化が頻繁に発生するAWS環境で、システム構成図を自動生成してくれるのはエンジニアとして嬉しい限りです。

CloudMapperを利用することで、システム構成の現状把握はもちろん、利用していないサービスも明確になるので、不要サービスの整理⇒コスト軽減にも繋がります。

また、SecurityGroupでIP制限を設定していると、各サービス間の通信が矢印で表現されます。
これにより不要な通信を許可しているSecurityGroupが存在することが発覚!
通信セキュリティを見直す良い機会になりました。

おまけ

EC2を追加→システム構成図に反映されことを確認したかったのですが、どうやら自動更新はされない様で、筆者の環境では以下の手順を手動実行しないと反映されませんでした。

①収集したデータの削除
②データの再収集
③データ解析後
④Webサービス起動

自動更新を実装するには上記のステップをクーロンに登録するなり一工夫施す必要がありそうですね。


関連タグ