Webhook 連携

Webhook でリアルタイムイベント通知を受信する


Webhook を利用すると、重要なイベント発生時にリアルタイムで通知を受け取り、お客様のシステムとの連携が可能になります。

Setup

  1. 設定 > 連携 > Webhook に移動
  2. Webhook の追加 をクリック
  3. Endpoint URL を入力
  4. Subscribe するイベントを選択
  5. 保存してテスト

Event Types

Event説明
threat.created新しい脅威が作成された
threat.updated脅威の status が更新された
threat.resolved脅威が解決された
scan.startedスキャンタスクが開始された
scan.completedスキャンタスクが完了した
beacon.triggeredBeacon がトリガーされた
token.accessedHoneytoken がアクセスされた

Request Format

POST /your-webhook-url
Content-Type: application/json
X-OpenBait-Signature: sha256=...
 
{
  "id": "evt_xxx",
  "type": "threat.created",
  "created_at": "2024-01-20T10:30:00Z",
  "data": {
    "threat": {
      "id": "thr_xxx",
      "domain": "examp1e.com",
      "type": "phishing",
      "severity": "high",
      "similarity": 0.95
    }
  }
}

Signature Verification

リクエストが OpenBait から送信されたものであることを確認するため、signature を検証してください:

const crypto = require('crypto')
 
function verifySignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex')
 
  return `sha256=${expected}` === signature
}
 
// Express example
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-openbait-signature']
  const isValid = verifySignature(
    JSON.stringify(req.body),
    signature,
    process.env.WEBHOOK_SECRET
  )
 
  if (!isValid) {
    return res.status(401).send('Invalid signature')
  }
 
  // Handle event
  const { type, data } = req.body
 
  switch (type) {
    case 'threat.created':
      handleNewThreat(data.threat)
      break
    // ...
  }
 
  res.status(200).send('OK')
})

Retry Policy

Webhook endpoint が 2xx 以外の status code を返した場合、以下のスケジュールでリトライします:

RetryDelay
1st1 min
2nd5 min
3rd30 min
4th2 hours

4 回のリトライ後も失敗した場合、そのイベントは failed としてマークされます。


    Webhook 連携 | OpenBait