Fivetran のログを収集する

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

このドキュメントでは、Webhook を使用してログを Google Security Operations に push するように Fivetran を構成する方法について説明します。

Fivetran は、さまざまなソースからデータ ウェアハウスへのデータ パイプラインを自動化するデータ統合プラットフォームです。Fivetran は、コネクタの同期イベント、変換イベント、接続ステータスの変更などの運用イベントを生成します。これらのイベントは、モニタリング、アラート、セキュリティ分析のために、アウトバウンド Webhook 経由で外部エンドポイントに送信できます。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • 管理者権限またはアカウント レベルの権限を持つ Fivetran アカウント
  • Google Cloud コンソールへのアクセス(API キーの作成用)
  • Business Critical プランまたは Enterprise プランの Fivetran アカウント(Webhook 機能用)

Google SecOps で Webhook フィードを作成する

フィードを作成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Fivetran Events)。
  5. [Source type] として [Webhook] を選択します。
  6. [ログタイプ] として [Fivetran] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • 分割区切り文字(省略可): 空のままにします(各 Webhook リクエストには単一の JSON イベントが含まれます)。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

秘密鍵を生成して保存する

フィードを作成したら、認証用のシークレット キーを生成する必要があります。

  1. フィードの詳細ページで、[シークレット キーを生成] をクリックします。
  2. ダイアログに秘密鍵が表示されます。
  3. 秘密鍵をコピーして安全に保存します。

フィード エンドポイントの URL を取得する

  1. フィードの [詳細] タブに移動します。
  2. [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
  3. URL の形式は次のとおりです。

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    または

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 次の手順で使用するため、この URL を保存します。

  5. [完了] をクリックします。

Google Cloud API キーを作成する

Google SecOps では、認証に API キーが必要です。Google Cloud コンソールで制限付き API キーを作成します。

API キーを作成する

  1. Google Cloud コンソールの [認証情報] ページに移動します。
  2. プロジェクト(Google SecOps インスタンスに関連付けられているプロジェクト)を選択します。
  3. [認証情報を作成> API キー] をクリックします。API キーが作成され、ダイアログに表示されます。
  4. [API キーを編集] をクリックして、キーを制限します。

API キーを制限する

  1. [API キー] 設定ページで、次の操作を行います。
    • 名前: わかりやすい名前を入力します(例: Google SecOps Webhook API Key)。
  2. [API の制限] で次の操作を行います。
    1. [キーを制限] を選択します。
    2. [API を選択] リストで、[Google SecOps API](または [Chronicle API])を検索して選択します。
  3. [保存] をクリックします。
  4. ページ上部の [API キー] フィールドから API キーの値をコピーします。
  5. API キーを安全に保存します。

Fivetran Webhook を構成する

Webhook URL を作成する

  • Google SecOps エンドポイント URL と API キーを組み合わせます。

    <ENDPOINT_URL>?key=<API_KEY>
    

    例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Fivetran REST API を使用して Webhook を作成する

Fivetran ウェブフックは REST API を介して構成されます。アカウント単位の Webhook(すべてのグループ)またはグループ単位の Webhook(特定の宛先グループ)を作成できます。

Fivetran API 認証情報を取得する

  1. Fivetran アカウントにログインします。
  2. 右上にあるユーザー名をクリックします。
  3. [アカウント設定] > [API 構成] に移動します。
  4. API キーがない場合:
    1. [API キーを生成] をクリックします。
    2. API キーAPI シークレットをコピーして安全に保存します。

アカウント単位の Webhook を作成する

このメソッドを使用すると、アカウント内のすべてのグループのすべてのコネクタからイベントを受信できます。

  1. ターミナルまたは API クライアントを開きます。
  2. 次の curl コマンドを使用して Webhook を作成します。

    curl -X POST https://api.fivetran.com/v1/webhooks/account \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure",
                "create_connector",
                "pause_connector",
                "resume_connector",
                "edit_connector",
                "delete_connector",
                "force_update_connector",
                "resync_connector",
                "resync_table"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. 次の値を置き換えます。

    • API_KEY: Fivetran API キー
    • API_SECRET: Fivetran API シークレット
    • YOUR_SECOPS_API_KEY: 先ほど作成した Google Cloud API キー
    • YOUR_SECOPS_SECRET_KEY: フィード作成時の Google SecOps 秘密鍵
  4. レスポンスに webhook ID が含まれます。

    {
        "code": "Success",
        "message": "Operation performed.",
        "data": {
            "id": "webhook_abc123",
            "type": "account",
            "url": "https://malachiteingestion-pa.googleapis.com/...",
            "events": ["sync_start", "sync_end", ...],
            "active": true,
            "secret": "******",
            "created_at": "2025-01-15T10:30:00Z",
            "created_by": "user_id"
        }
    }
    
  5. 後で参照できるように、Webhook ID を保存します。

グループレベルの Webhook を作成する(省略可)

このメソッドを使用して、特定の宛先グループのコネクタからイベントを受信します。

  1. グループ ID を取得します。

    1. Fivetran にログインします。
    2. モニタリングする宛先グループに移動します。
    3. グループ ID は URL(https://fivetran.com/dashboard/groups/GROUP_ID)にあります。
  2. 次の curl コマンドを使用して Webhook を作成します。

    curl -X POST https://api.fivetran.com/v1/webhooks/group/GROUP_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{
            "url": "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_SECOPS_API_KEY",
            "events": [
                "sync_start",
                "sync_end",
                "transformation_start",
                "transformation_succeeded",
                "transformation_failed",
                "connection_successful",
                "connection_failure"
            ],
            "active": true,
            "secret": "YOUR_SECOPS_SECRET_KEY"
        }'
    
  3. GROUP_ID は、宛先グループ ID に置き換えます。

利用可能な Webhook イベント

モニタリングするイベントを選択します。

イベント 説明
sync_start コネクタの同期を開始しました
sync_end コネクタの同期が完了しました
transformation_start 変換が開始されました
transformation_succeeded 変換が正常に完了しました
transformation_failed 変換に失敗しました
connection_successful 接続テストに成功しました
connection_failure 接続テストに失敗しました
create_connector 新しいコネクタが作成されました
pause_connector コネクタが一時停止されました
resume_connector コネクタが再開されました
edit_connector コネクタ構成が編集されました
delete_connector コネクタを削除しました
force_update_connector コネクタの強制更新がトリガーされました
resync_connector コネクタの再同期がトリガーされた
resync_table テーブルの再同期がトリガーされた

Webhook をテストする

  1. Fivetran API を使用して Webhook をテストします。

    curl -X POST https://api.fivetran.com/v1/webhooks/WEBHOOK_ID/test \
        -u "API_KEY:API_SECRET" \
        -H "Accept: application/json"
    
  2. WEBHOOK_ID は、作成レスポンスの Webhook ID に置き換えます。

  3. Fivetran はテストイベントを Google SecOps に送信します。

  4. Google SecOps でイベントを確認します。

    1. [SIEM 設定] > [フィード] に移動します。
    2. Fivetran フィードをクリックします。
    3. [ログ] タブに移動します。
    4. テストイベントが受信されたことを確認します。

Webhook ペイロード形式

  • Fivetran は、次の JSON 形式で Webhook イベントを送信します。

    {
        "event": "sync_end",
        "created": "2025-01-15T10:30:00.386Z",
        "connector_type": "salesforce",
        "connector_id": "mystified_presiding",
        "connector_name": "Salesforce Production",
        "sync_id": "abc123-def456-ghi789",
        "destination_group_id": "deck_enjoy",
        "data": {
            "status": "SUCCESSFUL"
        }
    }
    

Webhook 認証

Fivetran は、提供されたシークレットを使用して HMAC SHA-256 で Webhook ペイロードに署名します。署名は X-Fivetran-Signature-256 ヘッダーで送信されます。

Google SecOps は、フィードの作成時に構成された秘密鍵を使用して署名を自動的に検証します。

Webhook の再試行の動作

Fivetran は、失敗した Webhook を自動的に再試行します。

再試行 Time After Initial Attempt(初回試行後の時間)
最初の試行 0 分
1 回目の再試行 6 分
2 回目の再試行 27 分
3 回目の再試行 1 時間 45 分
4 回目の再試行 6 時間 25 分
5 回目の再試行 23 時間 13 分
  • Fivetran は最大 24 時間再試行します。
  • Webhook のタイムアウトは 10 秒です。
  • Webhook は、3 日間連続して失敗すると自動的に無効になります。

Webhook を管理

すべての Webhook を一覧表示する

  • bash curl -X GET https://api.fivetran.com/v1/webhooks \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

Webhook の詳細を取得する

  • bash curl -X GET https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

Webhook の更新

  • bash curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "active": true, "events": ["sync_start", "sync_end"] }'

Webhook を削除する

  • bash curl -X DELETE https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \ -u "API_KEY:API_SECRET" \ -H "Accept: application/json"

認証方法のリファレンス

Google SecOps ウェブフック フィードは、複数の認証方法をサポートしています。ベンダーがサポートしている方法を選択します。

Fivetran は、アウトバウンド Webhook のカスタム HTTP ヘッダーをサポートしていません。クエリ パラメータを使用して認証情報を渡します。

  • URL 形式:

    <ENDPOINT_URL>?key=<API_KEY>
    

    例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

    認証:

    • URL クエリ パラメータの API キー
    • X-Fivetran-Signature-256 ヘッダーの HMAC 署名で検証された秘密鍵

方法 2: カスタム ヘッダー(Fivetran ではサポートされていません)

Fivetran のアウトバウンド Webhook は、カスタム HTTP ヘッダーをサポートしていません。代わりに方法 1 を使用してください。

Webhook の上限とベスト プラクティス

リクエストに関する上限

上限
最大リクエスト サイズ 4 MB
最大 QPS(秒間クエリ数) 15,000
リクエストのタイムアウト 10 秒(Fivetran)/ 30 秒(Google SecOps)
再試行の動作 指数バックオフによる自動再試行

ベスト プラクティス

  • HTTP リクエストを最小限に抑えるために、必要なイベントのみをサブスクライブします。
  • Fivetran ダッシュボードで Webhook の配信ステータスをモニタリングします。
  • Webhook の無効化に関するアラートを設定します。
  • 一元化されたモニタリングには、アカウント単位の Webhook を使用します。
  • 特定の宛先のモニタリングには、グループレベルの Webhook を使用します。
  • イベント サブスクリプションを定期的に確認して更新します。

トラブルシューティング

Webhook の作成に失敗する

エラー: Webhook の作成中に HTTP 400 Bad Request が発生します。

原因: Google SecOps エンドポイントに到達できないか、2xx 以外のステータスが返されます。

ソリューション:

  1. Google SecOps エンドポイントの URL が正しいことを確認します。
  2. API キーが有効で、Google SecOps API へのアクセス権があることを確認します。
  3. エンドポイントを手動でテストします。

    curl -X POST "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{"test": "event"}'
    
  4. "active": false を使用してウェブフックを作成し、初期検証をスキップしてから、後で有効にします。

Webhook が無効になっている

原因: Webhook が 3 日以上連続して失敗しました。

ソリューション:

  1. Google SecOps フィードが有効で正常であることを確認します。
  2. Google SecOps フィードログでエラーを確認します。
  3. API キーとシークレット キーがまだ有効であることを確認します。
  4. Webhook を再度有効にします。

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"active": true}'
    

イベントが Google SecOps に表示されない

原因: イベントは送信されているが、取り込まれていない。

ソリューション:

  1. Google SecOps で、[SIEM 設定] > [フィード] に移動します。
  2. Fivetran フィードをクリックします。
  3. [ログ] タブに移動します。
  4. 取り込みエラーを確認します。
  5. ログタイプが [Fivetran] に設定されていることを確認します。
  6. シークレット キーが Webhook で構成されているキーと一致していることを確認します。

HMAC 署名の検証が失敗する

原因: シークレット キーが一致しません。

ソリューション:

  1. Google SecOps フィードのシークレット キーが、Webhook の作成で使用されたものと一致することを確認します。
  2. 必要に応じて、Google SecOps のシークレット キーを再生成します。
  3. 新しいシークレットで Fivetran Webhook を更新します。

    curl -X PATCH https://api.fivetran.com/v1/webhooks/WEBHOOK_ID \
        -u "API_KEY:API_SECRET" \
        -H "Content-Type: application/json" \
        -d '{"secret": "NEW_SECOPS_SECRET_KEY"}'
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
jsonPayload.connector_id additional.connector_id 値を直接コピー
jsonPayload.connector_type additional.connector_type 値を直接コピー
jsonPayload.data.executionTime additional.executionTime 文字列に変換しました
insertId additional.insertId 値が空でない場合はコピーされます
labels.levelName additional.levelName 値が空でない場合はコピーされます
labels.levelValue additional.levelValue 値が空でない場合はコピーされます
jsonPayload.data.number additional.number 文字列に変換しました
jsonPayload.data.query additional.query 値を直接コピー
resource.type additional.type 値が空でない場合はコピーされます
metadata.event_type has_principal_user == 「true」かつ has_target == 「true」の場合は「RESOURCE_READ」、has_principal_user == 「true」の場合は「USER_COMMUNICATION」、has_principal == 「true」の場合は「STATUS_UPDATE」、それ以外の場合は「GENERIC_EVENT」に設定
jsonPayload.event metadata.product_event_type 値を直接コピー
jsonPayload.sync_id metadata.product_log_id 値を直接コピー
jsonPayload.connector_name principal.asset.hostname 値を直接コピー
jsonPayload.connector_name principal.hostname 値を直接コピー
resource.labels.email_id principal.user.email_addresses 「^.+@.+$」と一致する場合は統合されます
resource.labels.project_id principal.user.product_object_id 値が空でない場合はコピーされます
resource.labels.unique_id principal.user.userid 値が ["", "null", " "] に含まれていない場合はコピーされます
重要度 security_result.severity 「INFO」と一致する場合は「INFORMATIONAL」に設定します。
logName target.resource.name 値が空でない場合はコピーされます
target.resource.type 「DATABASE」に設定
metadata.product_name 「FIVETRAN」に設定します。
metadata.vendor_name 「FIVETRAN」に設定します。

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