Rokad
すべてのドキュメント
dhalドキュメント

可観測性とライフサイクル

リダクション、OpenTelemetry、署名付き Webhook、実行状態、終了処理を設定します。

リポジトリを見る
dhalドキュメント
9ページ中7ページ

セキュリティイベントにはルート、ID、IP、ルール情報が含まれる場合があります。機密データとして扱ってください。

リダクション

json
{
  "observability": {
    "redaction": {
      "enabled": true,
      "ip": "mask",
      "identity": "hash",
      "userAgent": "full"
    }
  }
}

IP と ID には nonemaskhashomit を利用できます。User-Agent は full または omit です。

相関 ID、ログ、イベント

json
{
  "observability": {
    "correlation": {
      "headers": ["x-request-id", "x-correlation-id", "traceparent"]
    },
    "logs": { "enabled": true, "format": "json" },
    "events": { "enabled": true }
  }
}

アプリケーションリスナーのエラーはリクエスト判断から分離され、ランタイムスナップショットに記録されます。

OpenTelemetry

bash
npm install @opentelemetry/api
json
{
  "observability": {
    "otel": {
      "enabled": true,
      "serviceName": "orders-api",
      "emitAllowedRequests": false
    }
  }
}

Dhal はホストアプリケーションの OpenTelemetry Provider を使用します。

署名付き Webhook

json
{
  "observability": {
    "webhooks": {
      "enabled": true,
      "urls": ["https://security.example.com/dhal/events"],
      "timeoutMs": 750,
      "emitAllowedRequests": false,
      "signing": {
        "enabled": true,
        "secretEnv": "DHAL_WEBHOOK_SECRET",
        "signatureHeader": "x-dhal-signature",
        "timestampHeader": "x-dhal-timestamp",
        "idHeader": "x-dhal-event-id"
      }
    }
  }
}

受信側はタイムスタンプ、イベント ID、HMAC 署名を検証し、古いイベントとリプレイを拒否し、受理後にのみ 2xx を返してください。キューは上限付きで、非 2xx は失敗として扱われます。

実行状態と終了

ts
const snapshot = protection.getRuntimeSnapshot();

blockedwouldBlockinternalErrorsoverBudget、リスナーエラー、保留・失敗・破棄された配信を監視します。

ts
async function shutdown() {
  await protection.close(5_000);
  process.exit(0);
}

flush() はエンジンを閉じずにテレメトリを排出します。close() は新しい検査を停止し、テレメトリを排出してリスナーを削除します。