この記事は「ウィルゲート Advent Calendar 2024」の 14日目の記事です。
弊社ではAWS S3へのファイルアップロードのウィルススキャンに関してClamAVを導入していました。
あれから4年が経過し、ClamAVからAmazon GuardDutyのS3 Malware Protectionに移行しようとインフラチームで持ち上がりその際に調査した事に関して書いていきたいと思います。
背景と目的
背景
過去セキュリティリスクの対策として、lambdaとec2を利用したClamAVでのウイルスチェックの仕組みを導入してきました。アップロードファイルのサイズによってはlambdaの制約によりチェックできないものもあったためec2とlambdaの二通りの構成になっていました。また、ClamAVでのチェックはPythonのコードで管理されており、定期的にEOLの対応をインフラチームで対応してきました。
目的
lambdaとec2での二重管理をやめ、できるだけマネージドサービスに頼る形で、Pythonコードでの管理やEOL対応をなくし管理コストを減らします。
構成図比較
まずは簡単な構成図ですが、比べてみました。
ClamAV

S3 Malware Protection

S3 Malware Protectionの方はEC2、Lambda、SQSがなくなってスッキリした形になりました。
GuardDuty部分の詳細に関してはS3 Malware Protection automation workflowが参考になるとの事でした。 aws.github.io
ワークフロー部分のみ下記に切り抜いておきます。

ウィルススキャン後の仕様に関して
タグ
ClamAV
通常時
感染時

S3 Malware Protection
通常時
感染時
![]()
ClamAVに関してはタグを自由に設定できましたが、S3 Malware Protectionに関してはタグが変更できませんでした。
コスト
ClamAVに関しては
- EC2
の費用が固定で発生し
- Lambda
- SQS
- +α が別途発生します。
S3 Malware Protectionに関しては
- スキャンコスト
- オブジェクトタグの使用コスト
- S3 API コール
が発生。この中でS3 API コールに関してはClamAVでも発生しているので比較時には考慮しません。
スキャンコストとオブジェクトタグの使用コストの詳細は以下
スキャンコスト
オブジェクトタグ

スキャンにかかる時間
上は10M、100M、1G、10Gのファイルで比較した結果です。
ClamAVはCronで回しているので上記のような結果になっています。
まとめ
調査結果から、コストと速度の観点、EC2ではなくマネージドで管理することによる人的コストを考慮し、ClamAVからS3 Malware Protectionへウィルススキャンを移行することを前提に設計レビューをする事になりました。
約4年間ClamAVにはお世話になりました。
当時、ウィルゲートに転職をしてから初めてテックブログを書いた思い出深いシステムですが最後まで面倒を見て終わらせたいと思います。 実際の構築作業に関してはまた執筆するかもしれません。
「ウィルゲート Advent Calendar 2024」、翌日は「GitHub に学ぶエンジニアのリモートワークでのコミュニケーション」です。 お楽しみに!