脱AWS初心者!AWSのCloudTrailとCloudWatchを使って他リージョンの異常なイベントを監視・通知する
やりたいこと
国内向けのサービスをAWS上で運営しているが東京リージョンしか使っていない。
そこで、何かの拍子に他のリージョンにec2が大量に作られるなどした場合に検知できるようにしておきたい。
概要
調べたところ 以下のような手順でできそう・・
- Cloudtrailでイベントのログを取る
- CloudWatch LogでログのフィルターとSNSをトリガー
- SNSで通知する
手順
Cloudtrailでイベントのログを取る
Cloudtrailの設定については調べれば出てくるので割愛します。
CloudWatch Logのフィルター
フィルターをかけるところまでいったらここからが本題です。
今回の要件/実装方針は
1. 東京リージョン以外のイベントを検知したい
2. ログインは発生するのでそれらは除く
3. 他にもログなどの書き込みなどありそうだがそこは少しずつフィルターを育てて改善する
の2つです。
仕様に落とし込むと
1. regionは ap-northeast-1
以外で絞る
2. "invokedBy": "signin.amazonaws.com"
かつ "userName": "someUser"
を弾く
実装
1. ロググループ選択
OtherRegionLogGroup
という名前でグループを作りましたのでそれをクリックする。
2. イベント一覧
イベントの一覧です。リストの中身を見ればイベントの詳細情報がわかります。
ここでフィルターをいろいろ試しながら自分が使いたいフィルターを決めます。
CloudWatch フィルターとパターンの構文一覧はこちら
条件としては下記の形になりました。
{
($.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 メトリクスフィルタの作成
フィルターが決まったらそれを適用させます。
ロググループ一覧に戻り、グループを選んだ状態でメトリクスフィルタの作成を押します。
そこにフィルタパターンを入れて「メトリクスの割り当て」を押します。
そうしたらこんな画面になるかと。
4. アラームの設定
上図の「アラームの作成」を押してアラームを作成しましょう。
今回は1度でもイベントがあるとアラームがくるようにしています。
5. アラームのチェック
試しにus-east-1リージョンでec2を作成してアラームが来るか検証してみましょう。来ていたら成功です
最後に
以外と後回しにしがちですが、1時間ほどあればとりあえずの設定はできるのでおすすめです!
もし何かありましたらコメントお願いします
Author And Source
この問題について(脱AWS初心者!AWSのCloudTrailとCloudWatchを使って他リージョンの異常なイベントを監視・通知する), 我々は、より多くの情報をここで見つけました https://qiita.com/udondon89/items/3150c2e88d51fa79ba8a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .