Cloud One File Storage Securityの正常もしくは異常の検出結果を、EventBridge経由でメール通知する

Cloud One File Storage Securityの正常もしくは異常の検出結果を、EventBridge経由でメール通知する

Clock Icon2024.09.18

はじめに

本記事では、Cloud One File Storage Security(以降C1FSS)での検出結果を、Amazon EventBridge経由でメール通知する方法を紹介します。

C1FSSの導入と、正常ファイルと異常ファイルを別のS3バケットに隔離する仕組みは、AWS CloudFormationテンプレートとAWS Serverless Application Repository(SAM)が用意されているため、容易に構築できます。

arch-aws-flow-cm-hirai引用元

ファイルがスキャンされると、スキャン用S3バケット内のオブジェクトのタグに検出結果(正常または異常)が記録されます。その後、AWS Lambda関数が検出結果に基づいて、ファイルを適切なS3バケットに移動させます。
詳細な処理の流れは、以下のドキュメントにまとめられています。

https://cloudone.trendmicro.com/docs/jp/file-storage-security/arch-overview-aws/

本記事では、上記の構成に加えて、検出結果(正常または異常)をEventBridgeルール経由でメール通知する仕組みを手動で導入する方法を説明します。

構成は以下の通りです。スキャン用S3バケットでのスキャン後、検出結果に応じて正常用または異常用S3バケットにファイルが移動されると、EventBridgeルールがトリガーとなってメールで通知を行います。

cm-hirai-screenshot 2024-09-12 10.46.58

S3バケットがスキャン用のみの場合

なお、検出結果に関わらずファイルをスキャン用S3バケットに保管したままの場合、正常なファイルのみを通知するといった選択的な通知はできません。
これは、検出結果がオブジェクトのタグに出力されるものの、S3イベント通知のイベントにはタグの内容が含まれないためです。この制限は、Amazon EventBridgeだけでなく、Amazon SNS、Amazon SQS、AWS Lambdaに送信されるS3イベント通知にも適用されます。

ただし、タグによる判別を行わず、検出結果(正常または異常)に関わらず通知を行うことは可能です。

前提条件

EventBridgeルールを作成

正常ファイルと異常ファイルの通知用に、それぞれAmazon EventBridgeルールを作成します。

正常通知用ルール

正常通知用ルールのイベントパターンは以下の通りです。正常ファイル用S3バケット名を指定してください。

イベントパターン
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["cm-hirai-c1fss-normal"]
    }
  }
}

ターゲットはAmazon SNSトピックを設定します。
デフォルトの通知内容は分かりにくいため、以下の入力パスとテンプレートを使用して通知内容を整形します。

入力パス
{
  "awsRegion": "$.region",
  "bucketName": "$.detail.bucket.name",
  "eventName": "$.detail-type",
  "eventTime": "$.time",
  "objectKey": "$.detail.object.key"
}
入力テンプレート
"ファイルが正常ファイルと判定されました。"
"イベント名 : <eventName>"
"発生時間 : <eventTime>"
"リージョン名 : <awsRegion>"
"バケット名 : <bucketName>"
"オブジェクトキー名 : <objectKey>"

cm-hirai-screenshot 2024-09-11 11.20.04

本設定でトリガーとして使用するイベント名「Object Created」のサンプルイベントは以下の通りです。

{
  "version": "0",
  "id": "17793124-05d4-b198-2fde-7ededc63b103",
  "detail-type": "Object Created",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": ["arn:aws:s3:::example-bucket"],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "example-bucket"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e",
      "sequencer": "00617F08299329D189"
    },
    "request-id": "N4N7GDK58NMKJ12R",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "PutObject"
  }
}

なお、これらの設定はAWS CloudFormationテンプレートとしてエクスポートすることも可能です。

cm-hirai-screenshot 2024-09-11 10.07.19

異常通知用ルール

異常通知用ルールは、正常通知用ルールと比較して以下の点のみが異なります。他は同じ設定でルールを作成します。

  • ルール名
  • イベントパターン
    • 異常ファイル用S3バケット名を指定
  • 入力テンプレート
    • 異常ファイル検出用のメッセージに変更
イベントパターン
{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["cm-hirai-c1fss-quarantine"]
    }
  }
}
入力テンプレート
"ファイルが異常ファイルと判定されました。"
"イベント名 : <eventName>"
"発生時間 : <eventTime>"
"リージョン名 : <awsRegion>"
"バケット名 : <bucketName>"
"オブジェクトキー名 : <objectKey>"

ファイルアップロードしてみる

正常なファイル

スキャン用S3バケットに任意の正常ファイルをアップロードします。

ファイルアップロード後、数秒以内にメール通知が届きました。

cm-hirai-screenshot 2024-09-11 11.06.23

異常なファイル

EICARテストファイル(ウイルススキャンのテスト用ファイル)をAWS CloudShellを使用してスキャン用S3バケットにアップロードします。

$ curl -O https://secure.eicar.org/eicar.com
$ aws s3 cp eicar.com s3://cm-hirai-c1fss

アップロード後、以下の内容でメール通知が届きました。

cm-hirai-screenshot 2024-09-11 11.01.50

代替通知方法や拡張可能性

以下の構成の通り、Amazon EventBridgeルールを使用せず、S3から直接Amazon SNSで通知することも可能です。

cm-hirai-screenshot 2024-09-11 13.26.04

しかし、以下の画像のように、通知内容がJSON形式となり分かりにくいため、本記事ではAmazon EventBridgeルールを利用して通知内容を整形しています。

cm-hirai-screenshot 2024-09-11 13.23.39

本記事ではメール通知を例に説明しましたが、スキャン後に以下のような処理を行いたい場合は、Amazon EventBridgeを使用せずにイベント通知で直接設定することが可能です。

  1. Amazon SQS経由でAmazon EC2インスタンスによる処理
  2. AWS Lambda関数による直接処理
  3. Amazon SNS経由でAWS Step Functionsによる処理

cm-hirai-screenshot 2024-09-11 13.26.30

参考

https://cloudone.trendmicro.com/docs/jp/file-storage-security/scan-tag-overview/

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/ev-events.html
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/notification-content-structure.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.