💭
FileZen と VOTIRO の OSS 代替を目指す!Rust で極速のファイル受け渡し&ストリーミング無害化(CDR)エンジン「禊
🛑 はじめに:日本の IT 現場を苦しめる「ファイルの壁」
日本の自治体や金融機関、医療機関では、総務省のガイドラインに基づく**「三層分離(ネットワーク分離)」**が徹底されています。
しかし、インターネット系から業務内網へファイルを「受け渡す」際、以下のような痛みに直面したことはありませんか?
- FileZen などのアプライアンスが高価すぎる、またはハードウェアに縛られる。
- VOTIRO などの無害化(CDR)エンジンが、GB 級の大ファイルや複雑な PDF を処理する際にメモリをバカ食いし、システムがフリーズ(OOM)する。
- 既存のレガシーな Java/PHP システムを改修するコストやリスクが高すぎる。
これらを解決するために、Rust の圧倒的な性能を活かした OSS エンジン 「Misogi(禊)」 を開発し、かなりコードが形になってきたので共有します。
🦀 Project Misogi(禊)とは?
Misogi は、Rust で書かれた、Headless(API ファースト)の極速・安全なファイル受け渡し&ストリーミング無害化エンジンです。
💡 技術的な破壊点(ここが極上)
-
0コピーのストリーミング解析 (
nom庫の活用)
PDF や ZIP などの大ファイルをメモリに丸ごと載せるのではなく、ストリーム(Chunk)の状態でリアルタイムにバイトコードを解析・無害化(PDF の JavaScript 除去など)します。これにより、メモリ使用量は常に数十MB以下に抑えられます。 -
同ポートでの Axum (HTTP/REST) と Tonic (gRPC) のマルチプレクシング
日本の政企ネットワークでは、ファイアウォールのポートを1つ開けるだけでも数ヶ月の承認がかかります。そのため、1つのポートで両方のプロトコルを同時に待ち受ける設計にしました。 -
レガシーに優しい「CLI 1秒統合」
一番こだわったのは**「既存のレガシーシステムを1行も書き換えない」**ことです。同梱のmisogi-cliを使えば、シェルスクリプトやバッチファイルから1行叩くだけで、無害化と受け渡しが完了します。
# 既存の Java や PHP システムからバッチで呼び出すだけ
misogi-cli --addr 10.0.0.1:8080 --file ./shorui.pdf --approver boss_id
Discussion