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

はじめに

Dhal v1.1をインストールし、ガイド付き導入でNode.jsアプリケーションを安全に保護します。

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

Dhalは、Node.js向けのアプリケーションネイティブWAFとリクエストセキュリティ層です。バージョン1.1は、Express、Fastify、NestJS、Koa、Node.js上のHono、node:httpサーバーに対応します。

DhalはCDN、エッジ、ネットワーク、認証、認可、入力検証を補完します。大規模DDoS対策やインフラセキュリティを置き換えるものではありません。

要件

  • Node.js 20以降
  • npm互換の最新パッケージマネージャー
  • 複数インスタンスで同じルートを保護する場合はRedisまたはValkey

インストール

bash
npm install @rokadhq/dhal

npmパッケージは@rokadhq/dhal、CLIコマンドはdhal、既定の設定ファイルはdhal.jsonです。

推奨: ガイド付き導入

アプリケーションのルートでdhal addを実行します。

bash
npx dhal add

既定では読み取り専用です。フレームワークとパッケージマネージャーを検出し、監視モード設定をプレビューし、レビュー可能な統合モジュールと正確な登録手順を提示します。

内容を確認した後、提案されたファイルを作成します。

bash
npx dhal add --write

Dhalは既存のアプリケーションコードを自動変更しません。--forceを指定しない限り既存の出力ファイルも上書きしません。

node:httpアプリケーションは明示的に指定できます。

bash
npx dhal add --framework node-http --write

手動設定

汎用の初期設定を直接作成することもできます。

bash
npx dhal init

生成された設定はmonitorモードで開始し、トラフィックを拒否せずにブロック候補を記録します。

フレームワーク入口

Express

ts
import { dhal } from "@rokadhq/dhal/express";
app.use(express.json({ limit: "1mb" }));
app.use(dhal({ configPath: "dhal.json" }));

Fastify

ts
import { dhalFastify } from "@rokadhq/dhal/fastify";
await app.register(dhalFastify({ configPath: "dhal.json" }));

NestJS

ts
import { installDhalNest } from "@rokadhq/dhal/nest";
const app = await NestFactory.create(AppModule);
await installDhalNest(app, { configPath: "dhal.json" });
await app.listen(3000);

Nestアプリ作成後、app.listen()の前にDhalを導入します。アダプターはExpressまたはFastifyを自動検出します。

Koa

ts
import { dhalKoa } from "@rokadhq/dhal/koa";
app.use(dhalKoa({ configPath: "dhal.json" }));

Dhalは、検査後にのみ実行すべきルートやミドルウェアより前に登録します。

Node.js上のHono

ts
import { dhalHono } from "@rokadhq/dhal/hono";
app.use("*", dhalHono({ configPath: "dhal.json" }));

Honoアダプターは標準Web RequestResponseを使用し、Node.jsランタイムでサポートされます。

node:http

ts
import { createNodeHttpDhal } from "@rokadhq/dhal/node-http";
const protection = createNodeHttpDhal({ configPath: "dhal.json" });

ライフサイクルやIDの完全な例は、フレームワーク統合の章を参照してください。

適用前の検証と修復

bash
npx dhal test-config
npx dhal migrate --check
npx dhal doctor
npx dhal doctor --fix --dry-run
npx dhal readiness --production

doctor --fixは保守的な機械修復だけを実行します。不足する監視モード設定の作成や互換設定のバックアップ付き移行が可能ですが、ブロック、プロキシ信頼、Redis、テレメトリ、外部レピュテーションを自動有効化しません。

安全な導入手順:

  1. 全体をmonitorモードでデプロイします。
  2. 既知の正常トラフィックを再生し、wouldBlockイベントを確認します。
  3. 高リスクの選択ルートだけでblockを有効にします。
  4. レイテンシ、誤検知、依存サービスの可用性を確認します。
  5. 適用範囲を段階的に広げます。

動作モード

モード動作
off検査を無効にします。
monitorリクエストを許可し、ブロック候補を記録します。
block適用中の制御に一致するリクエストを拒否します。
strict内部セキュリティ評価が失敗した場合もブロックします。

ルートプロファイルはグローバルモードを上書きでき、段階的な適用が可能です。