本文へ移動

2026-07-01 時点の資料です。読みやすさのために、一部の文字の色を濃くしています。

Tech Stack

採用技術/ Tech Stack

この仕組みを構成する主な技術と、それぞれの役割です。ロゴのない技術要素はテキストで表しています。

01

検査エンジンScan Engine

AV
ClamAV
オープンソース(GPLv2)のアンチウイルスエンジン。常駐デーモン clamd にストリームを流して検査します。公式サイト(新しいタブで開きます)
cvd
cvdupdate
ClamAV 公式の定義取得ツール。CDN 作法を守って定義を取得し、ミラー更新ジョブに同梱しています。
EICAR
EICAR
アンチウイルスの標準テストファイル(無害)。月次の自己確認で「検出できること」を検証します。
02

実行基盤Runtime

Go
Go
matsuba-scanner の実装言語。clamd の起動・監視、検査、振り分けを担います。
Docker
Docker
ClamAV と scanner を 1 つのコンテナに同梱。公式の ClamAV イメージをベースにしています。
Run
Cloud Run
コンテナを常駐実行する基盤。検査サービスは最小インスタンスを設定して常時起動させ、待ち時間を抑えます。
03

イベント連携Eventing

Arc
Eventarc
未検査バケットへのファイル到着を検知し、検査サービスへ配送します。
P/S
Pub/Sub
検査結果(検査済み/感染)を下流の処理へ配送するメッセージ基盤。
Cron
Cloud Scheduler
シグネチャ更新(6 時間ごと)や EICAR 月次テストなどの定期起動。
OIDC
OIDC
Eventarc / Pub/Sub からの呼び出しが正当な送信元かを、署名トークンで検証します。
04

保管とデータStorage & Data

GCS
Cloud Storage
未検査・検査済み・隔離・シグネチャミラーの各バケット。役割ごとに経路を分けています。
PostgreSQL
PostgreSQL / RLS
スキャン状態や隔離台帳を記録。RLS(行単位のアクセス制御)で「検査済み以外は見せない」を DB 層で強制します。
URL
署名付き URL
時間を区切ってファイルの受け渡しを許可する短命の URL。隔離ファイルの取り出しは短時間だけ有効。
技術の正式名と稼働中のサービス名(matsuba-scanner など)の説明は、用語集にまとめています。