Contents
1. 前提条件と必要権限
| 項目 | 必要な権限/設定 |
|---|---|
| ESET Protect コンソール | 管理者(Administrator)または Security Analyst 権限。カスタム Webhook が利用可能なバージョンかを公式ドキュメントで確認すること。 |
| Slack ワークスペース | Workspace Admin または App Management 権限(Settings → Manage apps へアクセスできること)。 |
| ネットワーク | アウトバウンド HTTPS(TCP/443)への通信がファイアウォールで許可されていること。 |
| ブラウザ | 最新の Chrome / Edge / Firefox 推奨。コンソールの UI が正しく表示されます。 |
上記を事前にチェックしておくと、後続手順で「権限不足」や「通信ブロック」によるエラーが発生しにくくなります。
2. Slack の Incoming Webhook 作成手順
2‑1. アプリの作成(From scratch)
- Slack 管理画面 → Apps → Create New App → From scratch を選択。
- アプリ名例:
ESET-Protect-Notifier、インストール先ワークスペースを指定し Create App。
2‑2. 必要なスコープの付与
| スコープ | 用途 |
|---|---|
chat:write |
Webhook がチャンネルへメッセージを書き込むために必須。 |
手順
1. 左サイドバーの OAuth & Permissions を開く。
2. Scopes for Bot Token の Add an OAuth Scope に chat:write を入力し追加。
3. 変更後、Install App to Workspace をクリックして再インストール(スコープが有効化されます)。
2‑3. Incoming Webhooks の有効化と URL 取得
- Incoming Webhooks メニューで Activate Incoming Webhooks をオンにする。
- Add New Webhook to Workspace → 通知先チャンネル(例:
#security-alerts)を選択し Allow。 - 表示された Webhook URL をコピー。
公式リファレンス: https://api.slack.com/messaging/webhooks
3. ESET Protect 側の通知設定
3‑1. 設定画面へのアクセス
Settings → Notification に移動し、Add Integration ボタンをクリック。
表示される一覧から Webhook を選択します。
3‑2. Webhook URL の登録
取得した Slack の Webhook URL を「Endpoint URL」欄に貼り付けます。
※URL の前後に余計な空白や改行が入らないよう注意してください。
3‑3. ペイロードテンプレートの作成
ESET Protect は変数置換機能を提供しています。以下は マルチライン情報とコードブロック を組み合わせた推奨テンプレートです。
|
1 2 3 4 |
{ "text": "*ESET Protect アラート*\n$description\n```$details```" } |
| 変数 | 内容 |
|---|---|
$description |
アラートの概要(1 行)例:ウイルス検出: Win32/PSW.Amatera.H |
$details |
発見日時、対象端末、ファイルパス、検知ログなど複数行で構成される詳細情報 |
ポイント
\nで改行を挿入しつつ、マルチラインテキストは コードブロック()で囲むことで Slack がレイアウトを崩さずに表示します。- JSON の構文エラーが起きないよう、変数展開後の文字列は必ず JSON Lint 等で検証してください。
3‑4. 設定保存とテスト送信
- Save をクリックして設定を確定。
- 同画面右下にある Test Notification ボタンで手動送信し、Slack にメッセージが届くか確認します。
4. 改行保持テクニック
4‑1. \n エスケープだけでも機能するケース
|
1 2 3 4 |
{ "text": "*Alert:* $description\n$details" } |
$detailsに改行文字(\n)が含まれていれば、Slack はそのまま表示します。- ただし連続した空白行は自動的に除去される点に注意。
4‑2. コードブロックで確実に保持
|
1 2 3 4 |
{ "text": "*ESET Protect アラート*\n$description\n```$details```" } |
(バッククオート3つ)で囲むと等幅フォントになるだけでなく、エスケープ処理が二重になるリスクを回避できます。- 大量のログやスタックトレースなど、整形が重要な情報に最適です。
5. テストとトラブルシューティング
| チェック項目 | 方法 | 想定結果 |
|---|---|---|
| Slack 側受信 | Test Notification 実行 → Slack の対象チャンネルを確認 | メッセージが即時表示 |
| ESET ログ | System Log → Notifications を開く |
HTTP ステータスコード(200 が正常)とレスポンス本文が記録 |
| ネットワーク | ファイアウォールのアウトバウンド 443 許可を再確認 | 通信が遮断されていないこと |
5‑1. よくあるエラーと対処法
| ステータス / エラーメッセージ | 原因 | 対策 |
|---|---|---|
| 403 Forbidden | chat:write が未付与、またはアプリが再インストールされていない |
OAuth & Permissions にスコープを追加し、Install App to Workspace を再実行 |
| Invalid webhook URL | コピー漏れ・余分な空白・URL の有効期限切れ | Slack から Webhook URL を再取得して正確に貼り付け |
| 429 Too Many Requests | 短時間に大量送信(テスト連打) | 1 分間に 20 件以下に抑える、リトライ時は指数バックオフを実装 |
| JSON parsing error | カンマ抜け・クォート不整合 | JSON Lint 等で構文検証、変数展開後の文字列も必ず確認 |
6. セキュリティ・運用ベストプラクティス
- Webhook URL の管理
- 環境変数やシークレットストア(例:HashiCorp Vault, Azure Key Vault)に格納し、平文でコードやドキュメントに残さない。
- 最小権限の原則
chat:write以外の不要なスコープは付与しない。将来的に機能拡張が必要になった場合のみ追加する。- 送信レート制御
- ESET Protect の「Notification throttling」設定で同一アラートの連続送信回数を上限(例:5 分以内 1 回)に抑える。
- 監査ログの保持
- Slack 側は Workspace Settings → Message Retention を確認し、重要なセキュリティ通知が自動削除されないよう設定する。
- 定期的なバージョンチェック
- ESET Protect のアップデートで Webhook フィールドや変数名が変更されることがあります。公式リリースノートを月次で確認し、テンプレートを必要に応じて更新してください。
7. FAQ
| 質問 | 回答 |
|---|---|
| Webhook の有効期限はありますか? | Slack 側の Webhook URL は基本的に永久です。ただし、アプリがアンインストールされたり、ワークスペース設定で「Revoke all tokens」した場合は無効化されます。 |
| 複数の ESET Protect コンソールから同一チャンネルへ送信できますか? | 可能です。ただし Slack のレートリミットに注意してください。必要に応じてチャネルごとに別々の Webhook を作成すると管理が楽になります。 |
| JSON に日本語を直接書くことはできますか? | UTF‑8 エンコードで問題なく送信できます。文字化け防止のため、エディタや環境変数も UTF‑8 で統一してください。 |
| テスト時に実際のインシデント情報が流出しないようにしたい | テンプレート内の変数をダミーデータ(例:$description = "テストアラート")に置き換えてから Test Notification を実行できます。 |
8. 参考リンク(公式)
| 内容 | URL |
|---|---|
| ESET Protect 管理者ガイド(Webhook 設定章) | https://help.eset.com/protect/en-US/administration/webhooks.html |
| Slack API – Incoming Webhooks ドキュメント | https://api.slack.com/messaging/webhooks |
| Slack API – OAuth Scopes 解説 | https://api.slack.com/scopes/chat:write |
まとめ
- 権限とネットワーク を事前に確認 → エラー回避。
- Slack の Incoming Webhook を作成し、
chat:writeスコープを必ず付与。 - ESET Protect コンソール で Webhook URL と改行保持用テンプレートを設定。
- テスト送信とログ確認 で動作検証 → 必要に応じてトラブルシューティング。
- セキュリティベストプラクティス を守り、運用上のリスクを最小化。
この手順通りに実装すれば、ESET Protect の重要アラートが即座に Slack に届き、インシデント対応速度を大幅に向上させることができます。