はじめに
本投稿は SBCloud Engineers' Blog にも投稿しています。SBCloud Engineers' Blogには日中間接続をはじめ、Alibaba Cloud関連のソリューションや技術ネタを記載していますので、よかったら是非一度アクセスみてください。
先日、Log Serviceのメール通知機能がリリースされました。Log Serviceでアラームを設定して、ユーザーが設定した条件で関心のあるイベントが発生した時にはそのイベントを検知して、ユーザーに通知することができるようになりました。
今回はRAMアカウントがパスワードクラッキングされた場合、どうLog Serviceを利用して検知するかをご紹介します。
Log Serviceがどんなサービスなのかについては、「意外と知らないLogServiceの話」をご確認ください。実は分析も可視化もできて、便利なサービスです。
前提条件
ActionTrailが有効化されて、LogServiceにログを保存されていること。
ActionTrailはAlibaba Cloudリソースに対する操作を記録するサービスです。ユーザーがAlibaba Cloudにログインしようとして、認証失敗した時にも、その認証失敗のイベントがActionTrailログとして記録されます。
今回ActionTrailのログの格納先は以下のものとします。
Log Service のプロジェクト: audit-log-qiu
Log Servvice のログストア: actiontrail_audit_trail
Log Serviceの設定
設定作業が非常に簡単で、事前に用意したクエリーをアラームに保存するだけです。
1: クエリーの設定
Log ServiceはActionTrailログに対してクイック解析のクエリーを用意しており、actiontrail_audit_trailのログ分析画面にて確認できます。
今回は下記event.errorMessage(クィック解析欄三番目のクエリー)を利用します。
event.errorMessageの右にあるをクリックして、設定した時間帯にActionTrailログが存在していれば、詳細が表示されるので、
をクリックすると、event.errorMessageクィック解析クエリーが検索欄に設定されます。
* | select "event.errorMessage" , pv, pv *1.0/sum(pv) over() as percentage from( select count(1) as pv , "event.errorMessage" from (select "event.errorMessage" from log limit 100000) group by "event.errorMessage" order by pv desc) order by pv desc limit 10
2: アラートの作成
event.errorMessageクィック解析クエリーが検索欄に設定されると、「新規アラームに保存」ボタンをクリックして、アラートを作成します。
今回は以下のように設定します。
アラート名: login_failed_too_much
ダッシュボードに追加: 作成, security_monitoring
チャート名: login_failed_too_much
検索期間: 15分(相対)
検索間隔: 5分
トリガー条件: pv>5
(詳細設定)通知のトリガーしきい値: 1
(詳細設定)通知間隔: 間隔なし
通知リスト: 通知
送信内容: Test alarm Message !
「送信」ボタンをクリックすると、アラートが作成されると同時に、ダッシュボードsecurity_monitoringとログストアinternal-alert-history(名前固定)も作成されます。
また、アラームの管理画面にて、作成したアラームの設定変更とかできます。該当のアラームをクリックすると、下記のようなアラート履歴統計ダッシュボードが表示されます。
テストしてみる
test_userというRAMアカウントを利用して、短期間に間違ったパスワードで何回かログイン認証してみます。
検索間隔は5分で設定していますので、前回のクエリー実行してから5分立つと、クエリーが再度実行されます。今回はアラートのトリガーの条件を満たしたので、monitor-jp@monitor.alibabacloud.com から以下の文面のメールが送信されました。
Custom Notificationに設定した「Test alarm Message !」が記載されています。
注意点
Log Serviceのメール通知機能を利用する際に、下記4つの注意点があります。
1: internal-alert-historyを直接削除できない
アラートが作成されると、internal-alert-historyというログストアも作成されますが、下記Logstoreリストのところから、rootアカウントであろうが、RAMアカウントであろうが、internal-alert-historyを削除しようとすると、「権限不足のため、操作が拒否されました」というエラーが表示されます。
プロジェクトごと削除すると、internal-alert-historyも削除されます。
2: トリガーされた時間は日本時間ではなく、中国時間表記になっている
受信したメールのTriggered Atに記載した時間2019-01-21 10:23:27は中国時間になっています。
また、「アラート履歴統計」ダッシュボードの「アラート履歴」の「実行日時」も中国時間になっています。
ダッシュボードはユーザーが作成できますので、中国時間表記問題を解決できますが、メールの文面はCustom Notification以外ユーザーが修正できないので、要注意です。
3: 送信内容が長すぎると、省略される
アラートを作成する際に、送信内容を設定できますが、下記のように内容が長すぎると、「 ... 」に変えられ、省略されてしまうので、どういった内容を送信するかの工夫が必要です。
4: アラーム通知の送信先はAlibaba Cloudアカウントに登録されているメールアドレスのみ
アラーム通知の送信先はAlibaba Cloudアカウント(rootアカウント)に登録されているメールアドレスになっており、現時点では通知先を追加することができません。登録するメールアドレスをメーリングリストにしたほうがいいかもしれません。
最後
改善すべきところはまだまだありますが、Log Serviceで関心のあるイベントが発生したら、メールで通知できるようになったので、便利になりました。システムのメトリクスをLog Serviceに格納すれば、簡単にシステムのイベントも通知が可能ですので、ご興味ある方はぜひ一度Log Serviceを触ってみてください。