コンテンツにスキップ

Nodejs (ESM)

このガイドでは、アプリケーションへの Zen Firewall by Aikido のインストールとセットアップの手順を説明します。以下の手順に従ってアプリケーションを保護してください。

問題や不具合が発生した場合は、遠慮なくサポートチャットまたは Github issues でご連絡ください。

アプリケーションの起動コマンドを変更し、Zen Firewall を含めます。

Terminal window
node -r @aikidosec/firewall/instrument your-app.js

代わりに、NODE_OPTIONS 環境変数に Zen Firewall を含めるよう設定することもできます。

Terminal window
export NODE_OPTIONS='-r @aikidosec/firewall/instrument'

--require / -r を使って Zen Firewall をプリロードする場合、計装フックはアプリケーションコードより前に実行されます。つまり、dotenv のようなパッケージによって読み込まれる環境変数は、Zen の起動時点ではまだ利用できません。

計装中に AIKIDO_TOKEN などの環境変数を確実に利用できるようにするには、Node.js のネイティブな --env-file フラグを使用します。

Terminal window
node --env-file=.env -r @aikidosec/firewall/instrument your-app.js

ESM アプリケーションで Zen と Sentry を併用するには、Node.js v24.11.1 / v25.1.0 以降を使用する必要があります。Sentry の ESM 向け手順に従って Sentry をセットアップしてください。その後、Sentry を読み込む前に --require / -r を使って Zen を必ずプリロードしてください。

Terminal window
node -r @aikidosec/firewall/instrument --import ./instrument.mjs your-app.js

Zen は ESM パッケージの ESM サブ依存関係を保護できません。例えば、ESM パッケージ foo が同じく ESM パッケージであるサブ依存関係 bar をインポートしている場合、Zen は bar 内のコードを保護できません。これは、V8 エンジンが内部の ESM パッケージの評価を Node.js が監視することを(まだ)許可していないためです。未解決の issue: Adding an evaluation hook for v8::Module