Contents
1. 前提条件と必要な権限
| 必要な権限 | 操作内容 |
|---|---|
| ESET Protect 管理コンソール の Administrator(以上) | 「配布」→「Webhook」の設定画面へアクセス |
| Slack ワークスペース の Owner / Admin | Incoming Webhook の有効化と URL 発行 |
| ネットワーク管理者 | HTTPS (ポート 443) のアウトバウンド許可、プロキシ/ファイアウォール設定の確認 |
ポイント
- ESET Protect 側は Administrator ロール以上でないと Webhook 設定画面に入れません。
- Slack の Incoming Webhook はワークスペース単位で作成するため、必ず Owner か Admin 権限で操作してください。
- Webhook はhttps://hooks.slack.com/...へ POST します。社内プロキシやファイアウォールが外部 TLS 通信を遮断しているとエラーになるので、事前にネットワークチームへ確認しましょう。
2. Slack 側で Incoming Webhook を作成する
2‑1. App ディレクトリから「Incoming Webhooks」を追加
- Slack の管理画面 に Admin アカウントでログイン。
- 左メニューの 「Apps」 → 右上検索ボックスに
Incoming Webhooksと入力し、表示されたカードの 「Add to Slack」 をクリック。 - 表示される設定画面で **「Activate Incoming Webhooks」スイッチ」を ON にする。
詳細は公式ドキュメント → https://api.slack.com/messaging/webhooks
2‑2. 通知先チャンネルを選択し、Webhook URL を取得
| 手順 | 操作 |
|---|---|
| 1 | 「Add New Webhook to Workspace」ボタンをクリック |
| 2 | ドロップダウンから通知したいチャンネル(例:#security-alerts)を選択し、Allow を押す |
| 3 | 生成された URL(形: https://hooks.slack.com/services/…)を Copy ボタンで取得 |
注意
- Webhook はチャンネル単位で発行されます。誤ったチャンネルに送信すると情報が漏れるリスクがありますので、必ず正しいチャンネルを選んでください。
3. ESET Protect 側で Webhook 設定を行う
3‑1. 設定画面へアクセス
- ESET Protect コンソール に Administrator 権限でログイン。
- 左メニューの 「配布」 → 「Webhook」 を選択。
※ UI バージョンが異なる場合は、左側メニューが「Distribution」→「Webhooks」と表記になることがあります。
3‑2. 必要項目を入力
| 項目 | 設定例 |
|---|---|
| URL | 先ほどコピーした Slack Webhook URL |
| HTTP ヘッダー | Content-Type: application/json |
| JSON ペイロード(シンプル版) | json { "text": "*ESET Alert*\nDescription:\n${description}\nDetails:\n${details}" } |
| JSON ペイロード(Block Kit 例) | 詳細は下部の「マルチライン変数の改行保持テクニック」参照 |
${description}と${details}は ESET Protect が提供するマルチライン変数です。- 変数表記は すべて
${variable}の形で統一してください(※旧表記$variableは使用しない)。
公式設定手順 → https://help.eset.com/protect_cloud/ja-JP/admin_ntf_distribution.html
4. マルチライン変数の改行保持テクニック
Slack の text フィールドはプレーンテキストとして扱うと改行が失われます。以下のいずれかの方法で改行を確実に残すことができます。
4‑1. \n エスケープ方式(最もシンプル)
|
1 2 3 4 |
{ "text": "*ESET Alert*\nDescription:\n${description}\nDetails:\n${details}" } |
${description}・${details}に含まれる改行は自動的に\nに変換され、Slack 上でそのまま表示されます。
4‑2. コードブロックで視覚的に強調
|
1 2 3 4 |
{ "text": "*ESET Alert*\n```\nDescription:\n${description}\nDetails:\n${details}\n```" } |
(バッククオート3つ)で囲むと、等幅フォントのコードブロックとして表示され、改行が必ず保持されます。
4‑3. Block Kit の mrkdwn セクション(拡張性抜群)
|
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "*ESET Alert*\n*Description:*\n${description}\n*Details:*\n${details}" } } ] } |
mrkdwnは Slack のマークダウン形式で、\nが改行として解釈されます。太字やリスト、リンクなども同時に利用可能です。
おすすめ:本番運用では Block Kit を使うとレイアウトが自由になるため、可読性・拡張性ともに最適です。
5. テスト通知の送信と結果確認
5‑1. 「テスト送信」ボタンの位置(UI バージョン別)
| UI バージョン | ボタン表示場所 |
|---|---|
| v2024.2 以前 | 右上に 「Test Send」(日本語化で「テスト送信」)ボタン |
| v2024.3 以降 | 画面右側パネルの下部に 「テスト送信」 ボタン |
※ バージョンが異なる場合は、画面上部または右サイドバーに類似のラベルが表示されます。
5‑2. 手順
- ESET Protect の「配布」→「Webhook」画面で 「テスト送信」 ボタンをクリック。
- Slack の対象チャンネルにメッセージが届くか確認。
| 確認項目 | 合否基準 |
|---|---|
| メッセージが届く | チャンネルに新規メッセージが表示されること |
| タイトル・テキストが正しい | *ESET Alert* が太字で出力されていること |
${description} の改行保持 |
改行位置がそのまま表示され、行間が崩れないこと |
${details} をコードブロック使用時 |
で囲んだ領域が等幅フォントで正しく表示されること |
| エラーログの有無 | ESET Protect コンソールにエラーが記録されていないこと |
テスト結果が期待通りであれば、本番運用へ移行できます。
6. 主なエラー例と対策
| エラー | 原因 | 対策 |
|---|---|---|
| 改行消失 | text フィールドに直接変数を入れた |
上記「\n エスケープ」「コードブロック」または Block Kit を使用 |
| Webhook URL が無効 | コピーミス・余計な空白文字 | Copy ボタンで取得し、貼り付け前にスペースがないか確認 |
| ファイアウォールでブロック | outbound HTTPS (443) が遮断 | ネットワーク管理者に hooks.slack.com へのアクセス許可を依頼 |
| 認証トークン不足 | Slack の組織ポリシーで外部 POST が制限 | Workspace Admin → 「App Management」→「Permissions」 を確認し、例外設定 |
| JSON 構文エラー | カンマ欠落・クオート不一致 | JSON Linter(例: https://jsonlint.com)で事前検証 |
7. セキュリティベストプラクティス
- IP アドレス制限
-
ファイアウォール側で、ESET Protect が稼働するサーバーの IP 範囲だけ
hooks.slack.comへアクセスできるように限定。 -
シークレット管理
-
Webhook URL は機密情報です。環境変数や秘密管理ツール(HashiCorp Vault、AWS Secrets Manager 等)で安全に保管し、設定画面に平文で記載しない。
-
最小権限の原則
-
Incoming Webhook の作成時は、通知対象チャンネルだけを書き込めるように限定。不要なパブリックチャンネルを選ばない。
-
監査ログの有効化
-
ESET Protect と Slack 両方で送信・受信履歴を保持し、異常時に速やかに原因追跡できる体制を整備。
-
定期的な URL ローテーション
- 侵害リスク低減のため、半年ごとに新しい Webhook を発行し、古いものは即座に無効化する運用ポリシーを検討。
8. まとめ
- 権限・ネットワーク要件 を満たしたうえで作業を開始。
- Slack の公式 Incoming Webhook ドキュメント に従い、正しいチャンネルへ URL を取得。
- ESET Protect の設定画面 で
${description}・${details}を統一表記(${variable})し、改行保持のために\nエスケープ/コードブロック/Block Kit のいずれかを採用。 - テスト送信ボタン(UI バージョン別画像参照)で動作確認 → 合格なら本番へ。
- エラー対策・ベストプラクティス を実装し、セキュリティと可観測性を確保。
これらの手順とポイントに沿って設定すれば、ESET Protect のアラートが Slack にリアルタイムで届き、インシデント対応を迅速に行えるようになります。

