Slack

Slack WebhookでESET Protectのアラートを改行保持してリアルタイム通知

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

Slack Incoming Webhook の作成と権限設定

手順概要

  1. Slack 管理画面AppsCreate New AppFrom scratch
  2. アプリ名例: ESET‑Protect‑Notifier
  3. OAuth & Permissions で以下のスコープを追加
  4. chat:write(チャンネルへの投稿)
  5. 左メニューの Incoming WebhooksON にし、Add New Webhook to Workspace → 通知したいチャンネル(例:#security‑alerts)を選択。生成された URL をコピーして安全に保管する。

重要 Webhook URL は機密情報です。環境変数 (SLACK_WEBHOOK_URL) や Azure Key Vault、AWS Secrets Manager などのシークレット管理サービスで扱いましょう。

権限のポイント

  • chat:write が無いと HTTP 401 エラーが返ります。
  • 必要最低限のチャンネルだけに限定すれば、権限乱用リスクを低減できます。

ESET Protect 側テンプレートでマルチライン変数を扱うコツ

ESET Protect の通知テンプレートでは以下の変数が標準で利用可能です。

変数 内容
$description アラート概要(複数行)
$details 詳細情報・ログ(複数行)

改行が失われる原因

JSON にそのまま埋め込むと、実際の LF (\n) がエスケープされずに空白として処理されます。Slack の mrkdwn では \n(バックスラッシュ+n)を文字列中に入れることで改行が再現できます。

テンプレート作成手順

  1. コンソール → 通知 → テンプレート に移動
  2. 「新規作成」→「Webhook」タイプでテンプレート名(例:Slack‑Alert)を入力
  3. JSON エディタに下記ベース構造を貼り付け、変数位置を調整

  1. 保存テスト送信 でプレビューを確認し、期待通りに改行が表示されるかチェックします。

Slack で改行を残すメッセージフォーマット

1. mrkdwn の \n エスケープ(最もシンプル)

ESET Protect 側で $description.replace("\n", "\\n") が利用できない場合は、テンプレートエディタの「置換」機能や外部スクリプトで事前に \n に変換してください。

2. Preformatted block(コードブロック)

長文・ログをそのまま表示したいときはバッククオート3つで囲みます。

3. Block Kit の組み合わせ例

用途 推奨構成
タイトル+概要(短文) section + mrkdwn、\n エスケープ
複数行テキスト・ログ section + preformatted block
区切り線で視認性向上 divider
画像やボタンなどリッチ要素 image, actions

JSON ペイロード例と curl / PowerShell によるテスト送信

完全サンプル(改行保持済み)

  • \n が mrkdwn の改行、バッククオートで囲むと $details 内のインデントや改行がそのまま表示されます。

curl による送信

PowerShell による送信

デバッグヒント
失敗した場合は -v(curl)や -Debug(PowerShell)オプションで HTTP ステータスとレスポンス本文を確認してください。


Microsoft Sentinel データコネクタでの高度連携(出典付き)

Microsoft Sentinel は ESET Protect の検知情報を 公式データコネクタ 経由で自動的に取り込めます。これにより、Slack だけでなく SIEM 全体で統合監視が可能です。

設定項目 内容
コネクタ名 ESET Protect Platform
必要情報 API キー、エンドポイント https://api.eset.com/v1/events
手順概要 Azure ポータル → SentinelData connectors+ Add connector → 「ESET Protect Platform」→ API キーとエンドポイントを入力し Connect

出典: Microsoft Docs – ESET Protect platform data connector(2026‑04‑06 更新)[^1]

連携のメリット

  • アラートが Sentinel のワークブックや自動化プレイブックで即時利用可能
  • 複数データソースを横断した相関分析ができ、インシデントの根本原因特定が高速化

よくあるエラーと対処法

エラーコード / メッセージ 原因 推奨対策
Invalid webhook URL URL のコピー漏れ、前後に空白 再取得し、環境変数やシークレットで管理。trim() で余分な空白を除去
rate_limited (429) 短時間に多数送信 1 秒 ≤ 1 件のレートに抑える。指数バックオフ実装(例: Retry-After ヘッダー確認)
JSON parse error カンマ抜け、クオート未エスケープなど構文ミス jq -e . payload.json や VS Code の JSON バリデータで事前検証
改行が消える $description/$details をそのまま埋め込んだ 前述の \n エスケープまたは preformatted block に切り替え
missing_scope アプリに chat:write が未付与 OAuth & Permissions でスコープ追加後、再インストール

トラブルシューティング手順
1. HTTP ステータスとレスポンス本文を取得。
2. エラー文字列で公式ドキュメント検索(Slack API, Sentinel コネクタ)。
3. 必要に応じてシークレットや環境変数の再設定、JSON 構文チェックを実施。


ベストプラクティス & まとめ

実装上のベストプラクティス

項目 内容
機密情報管理 Webhook URL・API キーは環境変数/シークレットマネージャで保管。コードにハードコーディングしない
テンプレートのテスト 本番導入前に必ず「保存 → テスト送信」→ Slack で表示確認
JSON バリデーション CI パイプラインに jqjsonlint を組み込み、プルリクエスト時に検証
レート制御 1 秒あたり最大 1 件送信を目安に、バックオフロジック実装
監査ログの活用 Sentinel コネクタで取り込んだイベントは Azure Monitor に保存し、長期保管と検索が可能

記事の要点

  • Slack Incoming Webhookchat:write 権限だけで完結。取得した URL を安全に管理すれば即利用可能です。
  • ESET Protect のマルチライン変数$description, $details)はそのままだと改行が失われるため、テンプレート側で \n エスケープまたはコードブロックで包む必要があります。
  • 改行保持の主な手段は mrkdwn の \n と **preformatted block()** です。用途に合わせてsection,divider,image,actions` を組み合わせると可読性が向上します。
  • curl / PowerShell によるテスト送信で JSON の構文を検証し、エラーは HTTP ステータスとレスポンス本文から速やかに切り分けます。
  • Microsoft Sentinel データコネクタ(公式ドキュメント[^1])を併用すれば、Slack だけでなく SIEM 全体で ESET Protect の情報を統合的に監視できます。

以上の手順とポイントを押さえれば、ESET Protect の脅威検知を Slack にリアルタイムで共有しつつ、必要に応じて Sentinel へも自動インジェストできる堅牢なインシデント対応フローが構築できます。


参考文献

[^1]: Microsoft Docs, ESET Protect platform data connector, 2026‑04‑06. https://learn.microsoft.com/azure/sentinel/data-connectors/eset-protect (閲覧日: 2026‑04‑19)

スポンサードリンク

-Slack