LoginSignup
2
2

More than 5 years have passed since last update.

脱AWS初心者!AWSのCloudTrailとCloudWatchを使って他リージョンの異常なイベントを監視・通知する

Last updated at Posted at 2019-04-02

やりたいこと

国内向けのサービスをAWS上で運営しているが東京リージョンしか使っていない。
そこで、何かの拍子に他のリージョンにec2が大量に作られるなどした場合に検知できるようにしておきたい。

概要

調べたところ 以下のような手順でできそう・・

  1. Cloudtrailでイベントのログを取る
  2. CloudWatch LogでログのフィルターとSNSをトリガー
  3. SNSで通知する

手順

Cloudtrailでイベントのログを取る

Cloudtrailの設定については調べれば出てくるので割愛します。

CloudWatch Logのフィルター

フィルターをかけるところまでいったらここからが本題です。

今回の要件/実装方針は
1. 東京リージョン以外のイベントを検知したい
2. ログインは発生するのでそれらは除く
3. 他にもログなどの書き込みなどありそうだがそこは少しずつフィルターを育てて改善する

の2つです。

仕様に落とし込むと
1. regionは ap-northeast-1 以外で絞る
2. "invokedBy": "signin.amazonaws.com" かつ "userName": "someUser" を弾く

実装

1. ロググループ選択

OtherRegionLogGroup という名前でグループを作りましたのでそれをクリックする。

1.ロググループ.png

2. イベント一覧

イベントの一覧です。リストの中身を見ればイベントの詳細情報がわかります。
ここでフィルターをいろいろ試しながら自分が使いたいフィルターを決めます。

CloudWatch フィルターとパターンの構文一覧はこちら

2フィルターテスト.png

条件としては下記の形になりました。

{
  ($.awsRegion != "ap-northeast-1") && (
    ($.userIdentity.invokedBy != "signin.amazonaws.com") &&
    ($.userIdentity.invokedBy != "cloudtrail.amazonaws.com")
  )
}

ap-northeast-1 以外かつ発火ユーザーが signin, cloudtrail 以外としています。

2.5 json filterのネストの書き方

少しだけ詰まったので補足説明です。
例: { $.requestParameters.instanceId = "some-instance-id"

SELECTOR
どのJSON プロパティを確認するかを指定します。プロパティセレクタは常に、JSON のルートを示すドル記号 ($) から始まります。
プロパティセレクタは英数字の文字列であり「-」および「_」をサポートします。
配列要素は [NUMBER] 構文で示され、プロパティに従う必要があります。
例は次のとおりです。$.eventId、$.users[0]、$.users[0].id、$.requestParameters.instanceId。

3 メトリクスフィルタの作成

フィルターが決まったらそれを適用させます。
ロググループ一覧に戻り、グループを選んだ状態でメトリクスフィルタの作成を押します。
1.ロググループ.png

そこにフィルタパターンを入れて「メトリクスの割り当て」を押します。
4.フィルタ定義.png

そうしたらこんな画面になるかと。

5.フィルタ定義後.png

4. アラームの設定

上図の「アラームの作成」を押してアラームを作成しましょう。
今回は1度でもイベントがあるとアラームがくるようにしています。

6. アラート作成.png

5. アラームのチェック

試しにus-east-1リージョンでec2を作成してアラームが来るか検証してみましょう。来ていたら成功です :tada:
7アラームきた.png

最後に

以外と後回しにしがちですが、1時間ほどあればとりあえずの設定はできるのでおすすめです!
もし何かありましたらコメントお願いします :bow:

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2