CloudTrailのログの検索するサーバーの構築についての方法は、 j3tm0t0さんのブログ を参考にさせていただきました。
とても勉強になりました。ありがとうございます。
1.インスタンスの準備
CentOS6 か AmazonLinux のサーバーを立ち上げて ssh ログインを可能にしておきます。
2.playbookの準備
できた playbook はこちらにおいてあります。
Githubのリポジトリ
(今回のものはroleなどに切り分けておりません。。)
上記のリポジトリから、ansible-playbook を clone してしてきて、実行します。
対応 OS は CentOS6 or AmazonLinux です。
3.playbookの実行
2 で clone してきたディレクトリに入り playbook を実行します。
git clone https://github.com/simeji/ansible-playbooks.git
cd ansible-playbooks
AmazonLinuxの場合
ansible-playbook cloudtrail-search-amazonlinux.yml
CentOS6の場合
ansible-playbook cloudtrail-search-centos6.yml
共通部分
- APIキー
- Secret
- CloudTrailのログの検索対象 S3バケット+ディレクトリ
の 3つのプロンプトが出てくるので入力します。
※実行してみればなんとなくわかると思います。
Please enter your aws_access_key_id: xxxxxxx
Please enter your aws_secret_access_key(secret): <入力しても表示されません>
Please enabled CloudTrail s3 path: <S3の検索対象ログ格納パス>
※s3:// はいりません。2015年2月のログを全部検索したいなら、 バゲット名/AWSLogs/7xxxxxxx5x3/CloudTrail/ap-northeast-1/2015/02
のように入力します。
すると、ログがダウンロードされてMongoDBにインポートされた状態にまでなります。
4.ログの検索
playbookを実行した後はそのサーバーに ssh でログインして、 クエリを投げます。たとえばSecurityGroup関連などの調査したい時で、なんとなくで検索するときなどは、$regexを利用して下記のようにしたりもできます。
> db.cloudtrail.find( {"eventName": { "$regex": "Security"} });
※ほかにも色々できますのでクエリなどについての詳しいことは MongoDB公式ドキュメント を参考にしてください。
まとめ
これでちょっとした時に検索する環境が簡単に出来上がります。
S3直接見るより検索しやすいし、結構気になった時にちょこっと立ち上げてすぐ環境をつくって、いらなくなった時に捨てれるので、便利かなと思いました。