AmazonLinux2へCloudMapperをお試し導入


目的

CloudMapperというツールを利用すれば、自動で構成図を書いてくれるとの記事を見かけたため試しに導入。

記事レベル 記載理由

理解せずにツールを利用している場面が多々あるため、試しに導入する際の参考程度。
他にも参考サイトがあるにも関わらず、本記事を載せたのはcloudmapperのバージョンアップに伴い利用するコマンドが若干異なっていたため。

参考サイト

(公式)https://github.com/duo-labs/cloudmapper
https://dev.classmethod.jp/cloud/aws/cloudmapper-install/

導入時期 環境

導入日:2019/07/07
AMI ID:amzn2-ami-hvm-2.0.20190618-x86_64-gp2 (ami-0c3fd0f5d33134a76)

前提

EC2はパブリック環境で、パブリックIPを付与する。
rootアカウントで作業する。

導入手順

Githubソースのダウンロード

yum install git -y
git clone https://github.com/duo-labs/cloudmapper.git

 必要パッケージダウンロード

マニュアルに載っている「python3.7-dev」「python3-tk」が存在しないため
yum listで近い名前のパッケージ名を検索し「python3-tkinter.x86_64」「python3-devel.x86_64 python3-pip.noarch」を導入。
マニュアル上必須要件であるpythonの3.7が未導入のため「python3.x86_64」を導入。
※Pipfile(pipenv導入対象記載ファイル)ではpython_version = "3.7" と記載されている。
pipも後ほど利用するため、「python3-pip.noarch」を導入。

yum install autoconf automake libtool jq
yum install python3.x86_64 python3-tkinter.x86_64  python3-devel.x86_64 python3-pip.noarch

 pip関連モジュール インストール

pipenvを利用し、Pipfileの中身を導入。
マニュアルだと実行コマンドにpython3 -mがついていないため、省略する方法があるはず。
調査不足により下のコマンドを利用。

python3 -m pipenv
python3 -m pipenv install --skip-lock

 policy権限付与

cloudmapper利用時に以下のpolicyが必要とのことなので、ec2のroll作成して付与し、作業対象のEC2にアタッチした。
AWS環境の情報取得で必要なポリシーと思われる。マッピングする対象が決まっているなら、絞り込んでもよいかも。

arn:aws:iam::aws:policy/SecurityAudit
arn:aws:iam::aws:policy/job-function/ViewOnlyAccess

 構成情報取得

ようやく構成情報取得。
「demodemo」は適当な名前。

aws configure
 # おそらく不要な手順) region のみ ap-northeast-1 を設定。他はEC2のroleで対応
python3 -m pipenv shell
python3 cloudmapper.py configure add-account --config-file config.json --name demodemo --id 【自身のAWSアカウントID】
python3 cloudmapper.py collect --config config.json --account demodemo
python3 cloudmapper.py prepare --config config.json --account demodemo

 構成情報をブラウザで確認準備

ブラウザで情報確認のため、nginxを導入。
nginxはyumではなくamazon-linux-extrasで導入。
amazon-linux-extras listを見て分かったが、導入パッケージ名はnginxではなくnginx1.12であった。

amazon-linux-extras install nginx1.12
systemctl enable nginx
systemctl start nginx
unalias cp
cp -rf web/* /usr/share/nginx/html/

 構成情報をブラウザで確認

利用中のブラウザから、パブリックIPに対してアクセスする。
アクセスに失敗する場合は、セキュリティグループなどのアクセス経路を確認するとよいかも

その他

・pipenv利用が必須となっている
過去には「requirements.txt」(pip導入リスト)を利用しているためpipコマンドで導入しているが、現時点では「Pipfile」を利用しているためpipenvが必要となる。
リリースログを見ていないが、便利になる理由があるのだろうか。
・情報取得対応サービスの範囲
EC2やS3は対応しているが、どこまで対応しているかが不明。
もしかしたらまだ対応していないサービスもあるかも
・複数アカウントに対応しているか不明
CloudMapper情報を取得する際に、AWSアカウントで他のAWSアカウントの参照権限を含めたら構成図に含めてくれるのだろうか。
調査予定はなし