Tech Stack
採用技術/ Tech Stack
この仕組みを構成する主な技術と、それぞれの役割です。ロゴのない技術要素はテキストで表しています。
検査エンジンScan Engine
AV
ClamAV
オープンソース(GPLv2)のアンチウイルスエンジン。常駐デーモン
clamd にストリームを流して検査します。公式サイト(新しいタブで開きます)cvd
cvdupdate
ClamAV 公式の定義取得ツール。CDN 作法を守って定義を取得し、ミラー更新ジョブに同梱しています。
EICAR
EICAR
アンチウイルスの標準テストファイル(無害)。月次の自己確認で「検出できること」を検証します。
実行基盤Runtime
Go
matsuba-scanner の実装言語。clamd の起動・監視、検査、振り分けを担います。Docker
ClamAV と scanner を 1 つのコンテナに同梱。公式の ClamAV イメージをベースにしています。
Run
Cloud Run
コンテナを常駐実行する基盤。検査サービスは最小インスタンスを設定して常時起動させ、待ち時間を抑えます。
イベント連携Eventing
Arc
Eventarc
未検査バケットへのファイル到着を検知し、検査サービスへ配送します。
P/S
Pub/Sub
検査結果(検査済み/感染)を下流の処理へ配送するメッセージ基盤。
Cron
Cloud Scheduler
シグネチャ更新(6 時間ごと)や EICAR 月次テストなどの定期起動。
OIDC
OIDC
Eventarc / Pub/Sub からの呼び出しが正当な送信元かを、署名トークンで検証します。
保管とデータStorage & Data
GCS
Cloud Storage
未検査・検査済み・隔離・シグネチャミラーの各バケット。役割ごとに経路を分けています。
PostgreSQL / RLS
スキャン状態や隔離台帳を記録。RLS(行単位のアクセス制御)で「検査済み以外は見せない」を DB 層で強制します。
URL
署名付き URL
時間を区切ってファイルの受け渡しを許可する短命の URL。隔離ファイルの取り出しは短時間だけ有効。
技術の正式名と稼働中のサービス名(
matsuba-scanner など)の説明は、用語集にまとめています。