Mail.Ru Cloudでのウイルス対策の登場





皆さん、こんにちは。私の名前はユーリ・ラザレフです。私はMail.Ru Cloudのシステム管理者です。 最近、リポジトリにアップロードされたすべてのファイルの自動アンチウイルススキャンを実装しました。 現在、すべてのコンテンツはKaspersky Anti-Virusによってチェックされます。KasperskyAnti-Virusの製品は、Mail.Ru Mailのウイルス保護にすでに使用されています。 さらに、クラウドにアップロードされたファイルは、昨年のリリース以来スキャンされています。 同じ高速を維持しながら、負荷の高いサービスにこのようなテストを実装することは、かなり難しいタスクです。



類推として、平屋と高層ビルの建設プロセスを比較できます。 1階建ての家は、深い知識と素晴らしい経験のない人でも建てることができ、この建設は少なくとも立ちはだかるでしょう。 超高層ビルでは、すべてがはるかに複雑です。そのような建物の設計は、土壌の支持力、風荷重、および他の多くの要因に関して真剣に計算する必要があります。 また、クラウドサービスでのアンチウイルススキャンの構成は、ホームコンピューターや企業ネットワークとはまったく異なります。



クラウドのアーキテクチャについて詳しく知りたい場合は、Habréに関する以前の記事を読むことができます。 これにより、ファイルを保存してクラウドにアップロードするプロセスがどのように進行するかを理解できます。 そして、ここでは、サービスの品質やファイルのダウンロードとチェックの速度を損なうことなく、負荷の高いシステムでペタバイト単位のウイルスデータをチェックする方法を説明します。



新しいファイル

クラウドには重複排除があります。つまり、特定のコンテンツを含むファイルは1つのインスタンスにのみ存在します(実際には、バックアップコピーがあるため、2つに存在します)。 200人が同じファイルをアップロードした場合、200の同一のファイルはストレージにありません。 単純に、これらすべてのユーザーに1つのファイルのコピーが与えられます。 なんで? まず、ディスクスペースをより効率的に使用できるようになり、その結果、ユーザーに情報用の空きストレージスペースを提供できます。 さらに、ファイルをチェックするための電力を節約します。 現在、重複排除により、ストレージの負荷を約15%削減できます。



スキャンは数回実行されます。ファイルがクラウドに入るとすぐに、更新されたウイルス対策データベースを使用して以降。 結局のところ、ファイルは、ダウンロード時にウイルス対策ソフトにまだ知られていない新しいウイルスに感染する可能性が常にあります。 そのため、チェックは継続的に実行されます。 ファイルが感染している場合、サービスはダウンロードを許可せず、ファイルへのリンクも作成しません。



このタスク専用の別のサーバー上のファイルをスキャンします。 さらに、Kaspersky APIを使用してファイルをスキャンできるユーティリティを作成しました。 事実、ボックス化されたバージョンのウイルス対策ソフトウェアをサーバーに配置して、すべてのファイルをチェックするように指示することはできません。 この場合、高性能などの現象を完全に忘れることができます。 ウイルス対策製品は、クラウドシステムで使用するために特別に設計されたツールではなく、統合する必要があります。 また、負荷の高いシステムでのウイルス対策スキャンプロセス自体は、厳密に管理する必要があります。 上記のユーティリティがこの役割を引き受けました。 ファイルのチェックの順序を決定するだけでなく、負荷を最適化します。 簡単な方法で説明する場合:リポジトリからファイル全体をダウンロードして検証のために送信する必要はありません。 ユーティリティはファイルの先頭を取得し、リポジトリから特定のピースをダウンロードします。 次に、カスペルスキーはこのファイルのタイプを分析します。 原則として、ファイルの本文全体をチェックすることは意味がありません。 ファイルの種類に応じて、ウイルス対策SDKがスキャン戦略を決定します。 次に私たちのユーティリティへのリクエストが来ます、彼らは私にこの作品をくれと言って、必要な情報はリポジトリからダウンロードされます。 その結果、SDKはファイルがチェックされたと判断すると、スキャン自体の事実、実行時間、およびウイルス対策データベースのバージョンに関するマークを受け取ります。 したがって、管理ユーティリティを使用すると、スキャン時間が大幅に短縮され、ネットワークとドライブ自体の負荷が軽減されます。



現時点では、クラウドユーザーのファイルを含む20,000以上のディスクがあります。 そして、検証は継続中です。 巨大なビデオファイルなど、さまざまなデータがストレージに格納されます。 ストレージからそれらを引き出し、ネットワーク上でそれらを駆動することは、リソースの非常に最適でない浪費になります。 しかし、上記のメカニズムのおかげで、数十台のサーバーでアンチウイルススキャンを確立することができました。 現在、1日あたり約800万のファイル、約50テラバイトがチェックされています。 これは、システムのピークパフォーマンスとはほど遠いものであり、さらに、さらなるスケーリングの可能性を示しました。



キューを確認

そのため、重複排除の使用によりストレージのコストと負荷を削減し、管理ユーティリティを使用したウイルス対策スキャンの速度を大幅に向上させます。 しかし、これでは、このような大量のデータを迅速に処理するには不十分です。 そのため、検証キューという別のツールを使用しました。 これは、下からデータが追加されるファイルのリストではなく、別のサービスです。 キュー自体は別のサーバーにあり、 Tarantool DBMSの制御下で実行されます。 これは、Mail.Ru Groupの従業員の独自開発であり、その機能の1つは非常に高いパフォーマンスです。 これがDBMSを選択する際の決定要因となり、その起源ではありません。 まず、新しいファイルがクラウドにアップロードされます。 サービスローダーはそれらをそこに置きます。 また、最後のスキャンからの経過時間が最も長いファイルがキューに追加されます。 検証キューを補充する2番目のサービスでは、追加される古いファイルの最大数に制限があるため、新しいファイルのチェックプロセスが遅くなることはありません。 各サーバーは、これらの処理サービスのいくつかを同時に実行します。 現在、ほとんどのダウンロードされたファイルのスキャン時間をさらに短縮するために、さまざまな種類とサイズのファイルをさまざまなキューに分散しようとしています。







古いファイル

Mail.Ru Cloudの起動後しばらくして自動検証が実装されたという事実により、検証が必要な約14ペタバイトのデータが蓄積されました。 さらに、もちろん、それらは同じマシン上にあるのではなく、いくつかのデータセンターに散在しています。 これらのサーバーはすべてアクティブであるため、状況は複雑でした。つまり、ファイルをチェックするタスクをサーバーにロードすることは不可能でした。 ファイルが保存されているサーバーが、ストレージのハードウェアリソースをロードする分析タスクでビジーになる場合、ネットワーク上のファイルの転送など、すべての操作の速度が大幅に低下する可能性があります。 この場合、サービス品質が低下します。



このようなデータ量を徐々にチェックすることも非現実的であり、時間がかかりすぎます。 したがって、できるだけ早く監査を実施するために追加のリソースを使用することが決定されました。 この目的のために、60台のサーバーの一時的なクラスターが組み立てられました。 彼らは以前にダウンロードしたすべてのデータを約3週間でチェックしました。



また、どのブロックされたマルウェアが最も一般的かを計算しました。







結論と今後の計画

そのため、管理ユーティリティ、スキャンキュー、およびTarantool DBMSの統合使用のおかげで、比較的少ないリソースを使用して、ほぼリアルタイムで高性能のウイルス対策スキャンを実現することができました。

傾向は、時間とともに、ますます多くのユーザー情報がクラウドに保存されることです。 そのため、ウイルス対策スキャンは、ユーザーデバイスだけでなく、データが保存されるオンラインサービスの不可欠な部分になりつつあります。



クラウドの検証メカニズムは、引き続き大幅にアップグレードされます。 たとえば、比重を導入する予定です。 このパラメーターのおかげで、ユーザーが最も要求するファイルが最も頻繁にチェックされます。 検証には多くのリソースと時間がかかるため、大きなファイルは別のキューに割り当てられます。 さまざまなファイルに対してこのようなキューを整理することは興味深いタスクであり、次の投稿のいずれかで説明します。



All Articles