Cloud One のアラートを拡張してみる
はじめに
キャンプにはまってしまい、休みはキャンプギアをひたすら自作し続けるサーバーワークスの小椋です。
AWS のマネージドサービスと Cloud One Endpoint & Workload Security (以下、C1WS)を利用したアラート項目の拡張について 記載させて頂きます。
※本内容は、Cloud One の後継となる Vision One でも同様にご利用頂ける内容となっております。
- Cloud One のアラートを拡張してみる
Cloud One Endpoint & Workload Security のアラート発報の仕組み
事前定義アラートについて
Trend Micro 社が事前に定めたアラートです。
システム設定内から確認とチューニングが可能であり、担当者にアラート発報することが可能です。
しかしながらイベントとしてログに記録されるものの、アラートとしては通知されないものがあります。 例えば、ウィルススキャンの失敗があげられます。
Amazon SNS へのイベント転送について
C1WS には「イベントの転送」という機能が備わっており、Amazon SNS に対しイベントを転送することが可能です。 事前定義アラートでは不足を感じる時、イベントを転送し通知といった事が可能なため、非常に有用な機能となっています。
イベントの転送を使って、Amazon SNS 経由でイベントをメール通知してみる
構成図
今回の検証を簡単に図にします。

1.Amazon SNS の設定
1.1 トピックの作成
Amazon SNS の画面から、下記を参考にトピックを作成します。 今回はタイプと名前だけ指定します。

1.2 サブスクリプションの作成
トピックの画面から、「サブスクリプションの作成」をクリックし、プロトコルを「E メール」にします。 エンドポイントに、送信先メールアドレスを入力し「サブスクリプションの作成」をクリックします。

「サブスクリプションの作成」をクリックすると、AWSから指定メールアドレスにサブスクリプションの確認メールが届きます。 「Confirm subscription」をクリックし、承認します。
You have chosen to subscribe to the topic: arn:aws:sns:ap-northeast-1:<アカウントID>:C1WS-Test
To confirm this subscription, click or visit the link below (If this was in error no action is necessary): Confirm subscription
Please do not reply directly to this email. If you wish to remove yourself from receiving all future SNS subscription confirmation requests please send an email to sns-opt-out
2.IAM ユーザーの作成
C1WS から Amazon SNS にイベントを連携するための認証情報を作成します。
2-1.IAM ユーザー用のポリシー作成
以下を参考に IAM ユーザーのポリシーを作成します。
参考:TrendMicro公式ドキュメント:Amazon SNSを設定する
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Effect": "Allow", "Resource": "<Amazon SNSトピックのARN>" } ] }
2-2.IAM ユーザーの作成
IAM ユーザーを作成します。マネージメントコンソールのアクセスは不要です。

項番「2.1」で作成したポリシーを付与します。
今回は直接付与します。

C1WS がアクセスできるように、アクセスキーを払い出します。

3.Cloud One Endpoint & Workload Security に認証情報を設定
C1WSにログインし、認証情報と送信先のSNSトピックを指定します。
- アクセスキーと秘密鍵:項番「2-2」で作成した認証情報を入力
- SNS トピック ARN:項番「1.1」で作成した ARN を入力
完了後、保存をクリックします。
※「資格情報のテストと通知の送信」をクリックすることで、テストメールを送信できます。

4.Amazon SNSに転送するイベントの設定
「転送するイベントの種類」からメール通知したいイベント種別を選択し、保存する事で今後新たに記録されたイベントログはメール通知可能になります。
しかしながら、すべてのイベントを通知してしまうと運用が難しく、受信BOXのひっ迫につながります。
JSONで必要なイベントのみ転送するため、「JSON SNS設定の編集...」をクリックします。

以下を参考に、フィルタリングを実施します。
設定完了後、開発機や検証機でメールが飛ぶか確認して作業は設定は完了です。
参考:TrendMicro 公式ドキュメント:JSON 形式での SNS 設定
参考:TrendMicro 公式ドキュメント:システムイベント
{ "Version": "2014-09-24", "Statement": [ { "Topic": "arn:aws:sns:ap-northeast-1:<アカウントID>:<Amazon SNS トピック名>", "Condition": { "StringEquals": { "EventType": "SystemEvent", #転送したいイベント種別を記載 "TargetName": ["ServerA", "ServerB", "ServerC"] #イベントを転送したいサーバーを指定 }, "NumericEquals":{ "Number": [<SystemEventID A>, <SystemEventID B>, <SystemEventID C>] } #転送したいイベントIDを指定 } } ] }
試しに予約スキャンを手動キャンセルし、アラートを発報してみました。 無事、1528 のシステムイベントがメール通知されました。
[{"ActionBy":"システム","Debug":"","CloudOneAccountID":"XXX","EventType":"SystemEvent","LogDate":"YYYY-MM-DDT02:29:17.372Z","ManagerNodeName":"XXX","ManagerNodeID":XXX,"Number":1528,"Origin":0,"Severity":1,"TargetID":XXX,"TargetName":"ServerA","TargetType":"Host","TenantGUID":"XXX","TenantID":XXX,"TenantName":"XXX","Title":"Scheduled Malware Scan Cancellation Completed","UniqueID":"XXX","EventID":0,"Tags":"","OriginString":"Agent","Description":"Scheduled Malware Scan Cancellation Completed","SeverityString":"Info"}] -- If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe: https://sns.ap-northeast-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:ap-northeast-1:<アカウントID>:C1WS-Test:XXX&Endpoint=<メールアドレス> Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
まとめ
設定内容は非常に明確で、Amazon SNS にイベントを転送するための認証情報の作成、及び通知するための設定を行うだけです。
設定を行う上で、サービスに影響を与えることも無いので是非お試し頂きたい機能となります。
注意点として、Amazon SNS から送信する関係上、アラート通知メールのFromはAmazonになる点ご注意ください。
また、上記手法では C1WS から JSON の生イベントデータをアラートとして発報します。
事業部門など担当者が直接アラート通知を受け取る場合、文章を整形したいと思うことがあるかと思います。
その場合は、Amazon SNS で受け取り後、そのまま通知するのではなく一度 AWS Lambda にて JSON を整形、再度 Amazon SNS にてメールや Slack に通知といった対応を頂ければ幸いです。
この記事がどなたかのお役に立てれば幸いです。