Area 1 のログを収集する

以下でサポートされています。

このドキュメントでは、AWS S3 を使用して Area 1 Email Security(Cloudflare 提供)のログを Google Security Operations に取り込む方法について説明します。パーサーは JSON 形式のログを処理します。ネストされた JSON 構造から関連するフィールドを抽出し、統合データモデル(UDM)にマッピングして、地理情報やセキュリティの詳細(添付ファイルのハッシュや処分など)でデータを拡充します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
  • Area 1 Email Security(Cloudflare 提供)への特権アクセス

AWS IAM と S3 バケットを構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. AWS コンソールにログインします。
  3. [S3] > [バケットを作成] に移動します。
  4. バケットの名前を入力します(例: area1-security-logs)。
  5. 他のデフォルトはそのままにします(必要に応じて暗号化とバージョン管理を構成します)。
  6. [作成] をクリックします。
  7. バケットの名前リージョンを後で参照できるように保存します。
  8. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  9. 作成した [ユーザー] を選択します。
  10. [セキュリティ認証情報] タブを選択します。
  11. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  12. [ユースケース] として [サードパーティ サービス] を選択します。
  13. [次へ] をクリックします。
  14. (省略可)説明タグを追加します。
  15. [アクセスキーを作成] をクリックします。
  16. [CSV ファイルをダウンロード] をクリックし、[アクセスキー] と [シークレット アクセスキー] を保存して、今後の参照に備えます。
  17. [完了] をクリックします。
  18. [権限] タブを選択します。
  19. [権限ポリシー] で、[権限を追加] をクリックします。
  20. [ポリシーを直接アタッチする] を選択します。
  21. AmazonS3FullAccess ポリシーを検索します。
  22. ポリシーを選択します。
  23. [次へ] をクリックします。
  24. [権限を追加] をクリックします。

Area 1 API 認証情報を取得する

  1. Area 1 Security(Cloudflare)ダッシュボードにログインします。
  2. [設定] > [API アクセス] に移動します。
  3. API キー(トークン)を生成します。
  4. トークンをコピーして、安全な場所に保存します。

必要な Python パッケージを構成する

  1. ログ収集ホスト(AWS VM など)にログインし、次のコマンドを実行して AWS 認証情報を構成します。

    pip install boto3 requests
    aws configure
    

エリア 1 のログ取得スクリプトを作成する

  1. sudo vi area1_to_s3.py と入力して次のファイルを作成し、次のコードをコピーします。

    • 以下を調整します。
    #!/usr/bin/env python3
    import os
    import requests
    import boto3
    import datetime
    import json
    
    # Configuration
    AREA1_API_TOKEN = os.environ.get("AREA1_API_TOKEN")  # Load securely from env
    AWS_PROFILE = os.environ.get("AWS_PROFILE", None)    # Optional, for named profiles
    S3_BUCKET_NAME = "area1-security-logs"
    LOG_TYPE = "events"
    
    # Time range
    end_time = datetime.datetime.utcnow()
    start_time = end_time - datetime.timedelta(days=1)
    
    def fetch_area1_logs():
        url = f"https://api.area1security.com/v1/{LOG_TYPE}"
        headers = {
            "Authorization": f"Bearer {AREA1_API_TOKEN}",
            "Accept": "application/json"
        }
        params = {
            "startDate": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
            "endDate": end_time.strftime("%Y-%m-%dT%H:%M:%SZ")
        }
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    
    def upload_to_s3(data):
        filename = f"area1_{LOG_TYPE}_{start_time.strftime('%Y%m%d')}.json"
    
        session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session()
        s3 = session.client("s3")
    
        s3.put_object(
            Bucket=S3_BUCKET_NAME,
            Key=f"logs/{filename}",
            Body=json.dumps(data).encode("utf-8"),
            ContentType="application/json"
        )
        print(f"[✓] Uploaded {filename} to s3://{S3_BUCKET_NAME}/logs/")
    
    if __name__ == "__main__":
        logs = fetch_area1_logs()
        upload_to_s3(logs)
    
  2. 保存して終了 vi: esc をクリックし、:wq と入力します。

環境変数を保存する

  1. /etc/area1.env(または /home/user/.area1.env)に環境変数を格納する安全なファイルを作成する

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. ファイルのセキュリティを確保します。

    chmod 600 /etc/area1.env
    

スクリプトを実行してテストする

  1. 次のスクリプトを実行します。

    python3 area1_to_s3.py
    
  2. 以下のように表示されます。

    Uploaded area1_events_20250701.json to s3://area1-security-logs/logs/
    

Cron を使用して自動化する

  1. sudo vi /usr/local/bin/run_area1.sh を実行して Cron のラッパー スクリプトを作成し、次のコードをコピーします。

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. ファイルを実行可能にします。

    chmod +x /usr/local/bin/run_area1.sh
    
  3. 毎日午前 1 時(UTC)に実行するように設定します。

    crontab -e
    0 1 * * * /usr/local/bin/run_area1.sh >> /var/log/area1_to_s3.log 2>&1
    

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを構成する手順は次のとおりです。

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Area1 Logs)。
  5. [ソースタイプ] として [Amazon S3] を選択します。
  6. [ログタイプ] として [Area1 Security] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • リージョン: Amazon S3 バケットが配置されているリージョン。
    • S3 URI: バケット URI(形式は s3://<your-log-bucket-name> にする必要があります)。次の内容を置き換えます。
      • your-log-bucket-name: バケットの名前。
    • URI is a: [サブディレクトリを含むディレクトリ] を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • アクセスキー ID: s3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレット キー。
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

コンテンツ ハブからフィードを設定する

次のフィールドに値を指定します。

  • リージョン: Amazon S3 バケットが配置されているリージョン。

    • S3 URI: バケット URI(形式は s3://<your-log-bucket-name> にする必要があります)。次の内容を置き換えます。
      • your-log-bucket-name: バケットの名前。
    • URI is a: [サブディレクトリを含むディレクトリ] を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • アクセスキー ID: s3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: s3 バケットにアクセスできるユーザーのシークレット キー。§

詳細オプション

  • フィード名: フィードを識別する事前入力された値。
  • ソースタイプ: Google SecOps にログを収集するために使用される方法。
  • アセットの名前空間: フィードに関連付けられた名前空間。
  • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
alert_id security_result.rule_id 値は alert_id フィールドから取得されます。
alert_reasons security_result.description 値は alert_reasons フィールドから取得されます。
attachments.att_size security_result.about.file.size 値は attachments.att_size フィールドから取得され、符号なし整数に変換されます。
attachments.disposition security_result.about.user.attribute.labels.value 値は attachments.disposition フィールドから取得されます。
attachments.extension security_result.about.file.mime_type 値は attachments.extension フィールドから取得されます。
attachments.md5 security_result.about.file.md5 値は attachments.md5 フィールドから取得されます。
attachments.name security_result.about.file.full_path 値は attachments.name フィールドから取得されます。
attachments.sha1 security_result.about.file.sha1 値は attachments.sha1 フィールドから取得されます。
attachments.sha256 security_result.about.file.sha256 値は attachments.sha256 フィールドから取得されます。
attachments.ssdeep security_result.about.file.ssdeep 値は attachments.ssdeep フィールドから取得されます。
delivery_mode security_result.detection_fields.value 値は delivery_mode フィールドから取得されます。
envelope_from principal.user.email_addresses、network.email.from 値は envelope_from フィールドから取得されます。
envelope_to network.email.to、target.user.email_addresses 値は envelope_to フィールドから取得されます。
final_disposition security_result.category_details 値は final_disposition フィールドから取得されます。
message_id metadata.product_log_id 値は、'<' と '>' の文字を削除した後の message_id フィールドから取得されます。
replyto network.email.bounce_address 値は replyto フィールドから取得されます。
smtp_helo_server_ip principal.ip 値は smtp_helo_server_ip フィールドから取得されます。
smtp_helo_server_ip_as_name principal.location.name 値は smtp_helo_server_ip_as_name フィールドから取得されます。
smtp_helo_server_ip_as_number principal.asset_id 値は smtp_helo_server_ip_as_number フィールドから取得され、asset_id: が先頭に追加されます。
smtp_helo_server_ip_geo principal.location.country_or_region、principal.location.state、principal.location.city 値は、Grok パターンを使用して smtp_helo_server_ip_geo フィールドから抽出されます。
smtp_helo_server_name principal.administrative_domain 値は smtp_helo_server_name フィールドから取得されます。
ソース metadata.vendor_name 値は source フィールドから取得されます。フィールドが空の場合、値は area1security に設定されます。
件名 network.email.subject 値は subject フィールドから取得されます。
時間 metadata.event_timestamp 値は time フィールドから取得され、タイムスタンプに変換されます。
metadata.event_type 値は EMAIL_TRANSACTION に設定されています。
metadata.product_name 値は AREA1 に設定されています。
metadata.log_type 値は AREA1 に設定されています。
security_result.about.user.attribute.labels.key 値は disposition に設定されています。
security_result.category 値は SOFTWARE_MALICIOUS に設定されています。
security_result.detection_fields.key 値は delivery_mode に設定されています。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。