Defender for Storage でのマルウェア スキャン

Defender for Storage のマルウェア スキャンは、Microsoft Defender Antivirus 機能を使用して、アップロードされたコンテンツに対してほぼリアルタイムでマルウェアのフルスキャンを実行し、悪意のあるコンテンツから Azure Blob Storage を保護します。 信頼されていないコンテンツを処理するためのセキュリティとコンプライアンスの要件を満たすように設計されています。

マルウェア スキャン機能は、大規模な簡易セットアップができるエージェントレス SaaS ソリューションであり、メンテナンスが不要で、大規模な応答の自動化をサポートしています。

マルウェア スキャンによって悪意のあるコードからデータを保護する方法を示す図。

マルウェアのアップロードはクラウド ストレージの最大の脅威

クラウド ストレージにアップロードされたコンテンツはマルウェアである可能性があります。 ストレージ アカウントは、組織へのマルウェア エントリ ポイントとマルウェア配布ポイントになる可能性があります。 この脅威から組織を保護するには、クラウド ストレージ内のコンテンツにアクセスする前にマルウェアをスキャンする必要があります。

Defender for Storage のマルウェア スキャンで悪意のあるコンテンツからストレージ アカウントを保護

  • メンテナンス不要で大規模に簡単に有効にできる組み込みの SaaS ソリューション。
  • Microsoft Defender ウイルス対策 (MDAV) を使用した包括的なマルウェア対策機能で、ポリモーフィック型およびメタモーフィック型マルウェアをキャッチします。
  • すべてのファイルの種類がスキャンされ (zip ファイルなどのアーカイブを含む)、すべてのスキャンについて結果が返されます。 ファイル サイズの上限は 2 GB です。
  • 大規模な対応をサポートします。BLOB のインデックス タグや Event Grid イベントに基づいて疑わしいファイルを削除または検疫します。
  • マルウェア スキャンで悪意のあるファイルが特定されると、詳細な Microsoft Defenders for Cloud セキュリティ アラートが生成されます。
  • すべてのスキャン結果をログに記録するオプションなど、ストレージにアップロードされた信頼されていないコンテンツをスキャンするためのセキュリティとコンプライアンスの要件を満たせるように設計されています。

一般的なユースケースとシナリオ

以下に、Defender for Storage でのマルウェア スキャンでよく見られるユースケースとシナリオの一部を示します。

  • Web アプリケーション: 多くのクラウド Web アプリケーションでは、ユーザーがコンテンツをストレージにアップロードできます。 これにより、税金アプリ、履歴書アップロード用の人事サイト、領収書アップロードなどのアプリケーションに向けた、メンテナンスが少なくて済むスケーラブルなストレージが実現されます。

  • コンテンツ保護: ビデオや写真などの資産は、内部と外部の両方の関係者に対して大規模な共有や配布が行われることがよくあります。 CDN (Content Delivery Network) やコンテンツ ハブは、典型的なマルウェア配布機会です。

  • コンプライアンス要件: NIST、SWIFT、GDPR などのコンプライアンス標準に準拠するリソースは、マルウェア スキャンを含む堅牢なセキュリティ実践を必要としています。 これは、規制のある業界や地域で事業を行う組織にとって非常に重要です。

  • サードパーティーとの統合: ビジネス パートナー、開発者、請負業者など、サードパーティーのデータはさまざまなソースから提供され、それらすべてで堅牢なセキュリティが実践されているとは限りません。 マルウェアのスキャンは、こうしたデータによってシステムにセキュリティ リスクが持ち込まれないようにする助けになります。

  • 共同作業のプラットフォーム: チームはファイル共有と同様にクラウド ストレージを使用して、複数のチームや組織にわたり、コンテンツを継続的に共有し、共同作業を行います。 マルウェアをスキャンすると、安全に共同作業できるようになります。

  • データ パイプライン: ETL (抽出、転送、読み込み) プロセスを通過するデータは、複数のソースから到着する場合があり、マルウェアが含まれている可能性があります。 マルウェアのスキャンは、これらのパイプラインの整合性を確保するのに役立ちます。

  • 機械学習のトレーニング データ: トレーニング データの品質とセキュリティは、効果的な機械学習モデルの実現のために欠かせません。 これらのデータ セットがクリーンで安全であると確認することは、ユーザーが生成したコンテンツや外部ソースからのデータが含まれている場合は特に重要です。

    ユーザー生成コンテンツと外部ソースのデータを示すアニメーション GIF。

Note

マルウェア スキャンは、ほぼリアルタイムのサービスです。 スキャン時間は、スキャンされるファイルのサイズやファイルの種類に加え、サービスやストレージ アカウントに対する負荷によって変動する可能性があります。 Microsoft では、全体的なスキャン時間の短縮に絶えず取り組んでいますが、サービスに基づいてユーザー エクスペリエンスを設計する際には、スキャン時間の変動を考慮に入れる必要があります。

前提条件

マルウェア スキャンを有効にして構成するには、所有者ロール (サブスクリプション所有者やストレージ アカウント所有者など) または必要なデータ アクションを備える特定のロールが必要です。 必要なアクセス許可に関する詳細を確認してください。

個々のストレージ アカウントに対して機能の構成の詳細な制御を維持しながら、サブスクリプションの大規模なマルウェア スキャンを有効にして構成できます。 Malware Scanning を有効にして構成する方法はいくつかあります: Azure 組み込みポリシー を使用する方法 (推奨される方法)、TerraformBicepARM テンプレートなどのInfrastructure as Code テンプレートをプログラムで使用する方法、Azure portal を使用する方法、REST API で直接使用する方法などです。

マルウェア スキャンのしくみ

アップロード時マルウェア スキャン

アップロード時トリガー

マルウェア スキャンは、「Event Grid ソースとしての Azure Blob Storage」のページで指定されているように、保護されたストレージ アカウントにおいて、BlobCreated イベントを発生させる操作によってトリガーされます。 これらの操作には、新しい BLOB の初期アップロード、既存の BLOB の上書き、特定の操作による BLOB への変更の最終処理が含まれます。 最終処理には、複数のブロックからブロック BLOB をアセンブルする PutBlockList や、Azure Data Lake Storage Gen2 の BLOB に追加されたデータをコミットする FlushWithClose が含まれる場合があります。

Note

Azure Data Lake Storage Gen2 での AppendFile や、Azure BlockBlob での PutBlock などの増分操作では、即時の最終処理なしでデータを追加できますが、それら自体でマルウェア スキャンはトリガーされません。 マルウェア スキャンは、これらの追加が正式にコミットされた場合にのみ開始されます。つまり、FlushWithClose がコミットされ、AppendFile 操作が最終処理されてスキャンがトリガーされ、PutBlockList で BlockBlob 内のブロックがコミットされて、スキャンが開始されます。 この違いを理解することは、スキャンのコストを効果的に管理するために重要です。それは、コミットするたびに新たなスキャンが行われる可能性があり、増分更新されるデータの複数回のスキャンによってコストが増えることがあり得るからです。

スキャン リージョンとデータ保持

Microsoft Defender ウイルス対策テクノロジを使用するマルウェア スキャン サービスでは、BLOB が読み取られます。 マルウェア スキャンでは、コンテンツが "メモリ内" でスキャンされ、スキャンされたファイルはスキャン直後に削除されます。 そのコンテンツは保持されません。 スキャンは、ストレージ アカウントと同じリージョン内で行われます。 場合によっては、ファイルが疑わしく、より多くのデータが必要なときに、マルウェア スキャンによって、スキャンしているリージョン外のファイル メタデータ (SHA-256 ハッシュなど、顧客データに分類されるメタデータを含む) が Microsoft Defender for Endpoint と共有されることがあります。

顧客データへのアクセス

Malware Scanningサービスは、お客様のデータをマルウェアに感染させないようにスキャンするため、お客様のデータにアクセスすることがあります。 サービスの有効化時に、StorageDataScanner という新しいデータ スキャナー リソースが Azure サブスクリプションに作成されます。 このリソースには、マルウェア スキャンと機密データ検出を目的としてデータにアクセスして変更するために、Storage Blob Data Owner ロール割り当てが付与されます。

プライベート エンドポイントは標準でサポートされています。

Defender for Storage でのマルウェア スキャンは、データ プライバシーを維持しながらプライベート エンドポイントを使用するストレージ アカウントでサポートされています。

プライベート エンドポイントは、Azure ストレージ サービスへのセキュリティで保護された接続を提供し、パブリック インターネットへの露出をなくすので、ベスト プラクティスと見なされます。

マルウェア スキャンの設定

マルウェア スキャンが有効になっている場合、環境内で以下のアクションが自動的に行われます。

  • マルウェア スキャンを有効にしたストレージ アカウントごとに、そのストレージ アカウントの同じリソース グループ内に Event Grid システム トピック リソースが作成されます。これは、BLOB アップロード トリガーをリッスンするためにマルウェア スキャン サービスによって使用されます。 このリソースを削除すると、マルウェア スキャン機能が動作しなくなります。

  • データをスキャンするには、マルウェア スキャン サービスがデータにアクセスする必要があります。 サービスの有効化時に、StorageDataScanner という新しいデータ スキャナー リソースが Azure サブスクリプション内に作成され、システム割り当てマネージド ID が割り当てられます。 このリソースには、マルウェア スキャンと機密データ検出の目的でデータへのアクセスが許可される、ストレージ BLOB データ所有者ロールの割り当てが行われています。

ストレージ アカウントの [ネットワーク構成] が [選択した仮想ネットワークと IP アドレスからのパブリック ネットワーク アクセスを有効にする] に設定されている場合は、ストレージ アカウントの [ネットワーク構成] の下の [リソース インスタンス] セクションに StorageDataScanner リソースが追加されて、データをスキャンするためのアクセスが許可されます。

サブスクリプション レベルでマルウェア スキャンを有効にしようとしている場合は、StorageAccounts/securityOperators/DefenderForStorageSecurityOperator という新しいセキュリティ オペレーター リソースが Azure サブスクリプション内に作成され、それにシステム マネージド ID が割り当てられます。 このリソースは、既存のストレージアカウントでDefender for Storage and Malware Scanningの設定を有効にして修復し、サブスクリプションで作成された新しいストレージアカウントが有効になっているかを確認するために使用されます。 このリソースには、マルウェア スキャンを有効にするために必要な特定のアクセス許可を含むロールが割り当てられています。

Note

マルウェア スキャンが正常に機能するためには、特定のリソース、ID、ネットワーク設定が必要です。 これらのいずれかを変更または削除すると、マルウェア スキャンは機能を停止します。 正常な動作に戻すには、電源を切り、再度、電源を入れます。

スキャン結果の提供

マルウェア スキャンの結果は、4 つの方法で入手できます。 セットアップ後、ストレージ アカウントにアップロードされ、スキャンされたすべてのファイルの BLOB インデックス タグとして、およびファイルが悪意があると識別された場合に、Microsoft Defender for Cloud セキュリティ アラートとして、スキャン結果が表示されます。

Event GridLog Analytics など、スキャン結果の使用方法を追加で構成することもできます。これらの方法のために、さらに構成が必要です。 次のセクションでは、さまざまなスキャン結果方法について説明します。

マルウェア スキャン結果の表示および使用のフローを示す図。

スキャン結果

BLOB インデックス タグ

BLOB インデックス タグは、BLOB のメタデータ フィールドです。 それらによって、キーと値のタグ属性を使用して、ストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。 スキャン結果は簡潔で、BLOB メタデータ内にマルウェア スキャンのスキャン結果とマルウェア スキャンのスキャン時間 (UTC) が示されます。 その他の結果の種類 (アラート、イベント、ログ) では、マルウェアの種類とファイル アップロード操作に関する詳細情報が提供されます。

BLOB インデックス タグの例を示すスクリーンショット。

BLOB インデックス タグは、アプリケーションでワークフローを自動化するために使用できますが、改ざん防止機能はありません。 応答の設定に関する詳細を参照してください。

Note

インデックス タグへのアクセスにはアクセス許可が必要です。 詳細については、「BLOB インデックス タグを取得、設定、および更新する」を参照してください。

Defender for Cloud のセキュリティ アラート

悪意のあるファイルが検出されると、Microsoft Defender for Cloud によって、Microsoft Defender for Cloud セキュリティ アラートが生成されます。 アラートを表示するには、Microsoft Defender for Cloud セキュリティ アラートに移動します。 セキュリティ アラートには、ファイルの詳細とコンテキスト、マルウェアの種類、推奨される調査と修復の手順が含まれます。 修復にこれらのアラートを使用するには、次のことができます。

  1. Azure portal で [Microsoft Defender for Cloud]>[セキュリティ アラート] と移動して、セキュリティ アラートを表示します。
  2. これらのアラートに基づいて、自動化を構成します。
  3. SIEM にセキュリティ アラートをエクスポートします。 Microsoft Sentinel コネクタを使用して Microsoft Sentinel (Microsoft の SIEM) に、または任意の他の SIEM にセキュリティ アラートを継続的にエクスポートできます。

セキュリティ アラートへの応答に関する詳細を確認してください。

Event Grid イベント

Event Grid は、イベント ドリブンの自動化に役立ちます。 これは、応答の自動化に使用できるイベントの形式で、最短の待ち時間で結果を取得する最速の方法です。

Event Grid カスタム トピックのイベントは、複数のエンドポイントタイプで使用できます。 マルウェア スキャンのシナリオで最も役立つものは次のとおりです。

  • 関数アプリ (以前の Azure 関数) - サーバーレス関数を使用して、移動、削除、検疫などの自動応答用コードを実行します。
  • Webhook - アプリケーションを接続する場合。
  • Event Hubs と Service Bus キュー - ダウンストリーム コンシューマーに通知する場合。

自動化のためにすべてのスキャン結果が Event Grid トピック に自動的に送信されるよう にMalware Scanningを設定する方法について説明します。

ログ分析

コンプライアンスの証拠やスキャン結果の調査のために、スキャン結果をログに記録したい場合があります。 Log Analytics ワークスペースの宛先を設定することで、すべてのスキャン結果を、クエリを簡単に実行できる一元化されたログ リポジトリに格納できます。 結果を表示するには、Log Analytics の宛先ワークスペースに移動し、StorageMalwareScanningResults テーブルを検索します。

詳細については、「マルウェア スキャンのログ記録を設定する」を参照してください。

ヒント

Microsoft のハンズオン ラボを通じて、Defender for Storage のマルウェア スキャン機能を確認することをお勧めします。 Ninja トレーニングの手順に従って、マルウェア スキャンのエンドツーエンドの設定とテストを行う方法 (スキャン結果に対する応答の構成など) に関する詳細なステップバイステップ ガイドを参照してください。 これは 'ラボ' プロジェクトの一環で、お客様が Microsoft Defender for Cloud を活用し、その機能に関するハンズオンの実践的なエクスペリエンスを提供するのに役立ちます。

コスト管理

マルウェア スキャンは、スキャンされる GB ごとに課金されます。 コストの予測可能性を提供するために、マルウェア スキャンでは、ストレージ アカウントあたりの 1 か月でスキャンされる GB の量に上限を設定できます。

重要

Defender for Storage でのマルウェア スキャンは、最初の 30 日間の試用版には無料で含まれていません。また、Defender for Cloud の価格ページで利用可能な価格スキームに従って、最初の日から課金されます。

"上限" メカニズムは、ストレージ アカウントごとに月間のスキャン上限をギガバイト (GB) 単位で設定するように設計されており、効果的なコスト管理として機能します。 ストレージ アカウントに対して 1 か月間のスキャン上限が事前定義されている場合は、このしきい値に達すると (偏差は 20 GB まで) スキャン操作が自動的に停止され、ファイルに対してマルウェアのスキャンが実行されなくなります。 上限は毎月末の午前 0 時 (UTC) にリセットされます。 上限を更新すると、通常、有効になるまでに最大 1 時間かかります。

既定では、特定のキャッピング メカニズムが定義されていない場合は上限が 5 TB (5,000 GB) に設定されます。

ヒント

キャッピング メカニズムは、個々のストレージ アカウントに対して、またはサブスクリプション全体に対して (サブスクリプションのすべてのストレージ アカウントに、サブスクリプション レベルで定義されている上限が割り当てられます) 設定できます。

キャッピング メカニズムを構成するには、これらの手順に従います。

マルウェア スキャンの追加コスト

マルウェア スキャンでは、その基盤として他の Azure サービスが使用されます。 つまり、マルウェア スキャンを有効にすると、それに必要な Azure サービスに対しても課金されます。 これらのサービスには、Azure Storage の読み取り操作、Azure Storage BLOB のインデックス作成、Azure Event Grid の通知が含まれます。

可能性のある擬陽性と擬陰性の処理

マルウェアの疑いがあるが検出されていない (擬陰性) ファイルや誤って検出された (擬陽性) ものがある場合は、サンプル送信ポータル経由で、分析のために送信していただくことができます。 ソースとして "Microsoft Defender for Storage" を選択します。

Defender for Cloud を使用すると、擬陽性アラートを抑制できます。 マルウェア名またはファイル ハッシュを使用して抑制ルールを制限してください。

マルウェア スキャンでは、悪意がある場合でも、アップロードされた BLOB へのアクセスを自動的にブロックしたり、アクセス許可を変更したりすることはありません。

制限事項

サポートされていない機能とサービス

  • サポートされていないストレージ アカウント: レガシの v1 ストレージ アカウントは、マルウェア スキャンではサポートされていません。

  • サポートされていないサービス: Azure Files は、マルウェア スキャンではサポートされていません。

  • サポートされていないクライアント: ネットワーク ファイル システム (NFS) 3.0 プロトコルでアップロードされた BLOB は、アップロード時にマルウェアをスキャンしません。

  • サポートされていないリージョン: Jio インド西部、韓国南部、南アフリカ西部。

  • Defender for Storage でサポートされているが、マルウェア スキャンではサポートされていないリージョン。 Defender for Storage の可用性についての詳細

  • サポートされていない BLOB の種類: 追加 BLOB とページ BLOB は、マルウェア スキャンではサポートされていません。

  • サポートされていない暗号化: クライアント側の暗号化された blob は、サービスによるスキャン前に暗号化を解除できないため、サポートされていません。 ただし、カスタマーマネージドキー(CMK)により保存時に暗号化されたデータはサポートされています。

  • サポートされていないインデックスタグの結果:インデックスタグのスキャン結果は、階層的な名前空間が有効なストレージアカウント( Azure Data Lake Storage Gen2 )ではサポートされていません。

  • Event Grid: パブリック ネットワーク アクセスが有効になっていない Event Grid トピック (プライベート エンドポイント接続など) は、Defender for Storage でのマルウェア スキャンではサポートされていません。

スループット容量と blobサイズの制限

  • スキャン スループット レート制限: マルウェア スキャンでは、ストレージ アカウントごとに毎分 2 GB まで処理できます。 ファイル アップロードの速度がストレージ アカウントのこのしきい値を瞬間的に超えた場合は、レート制限を超えてファイルのスキャンが試みられます。 ファイル アップロードの速度がこのしきい値を絶えず超えている場合、一部の BLOB がスキャンされません。
  • BLOB スキャンの制限: マルウェア スキャンでは、ストレージ アカウントごとに 1 分あたり最大 2,000 個のファイルを処理できます。 ファイル アップロードの速度がストレージ アカウントのこのしきい値を瞬間的に超えた場合は、レート制限を超えてファイルのスキャンが試みられます。 ファイル アップロードの速度がこのしきい値を絶えず超えている場合、一部の BLOB がスキャンされません。
  • BLOB サイズの制限: スキャンする BLOB の最大サイズ制限は 2 GB です。 制限より大きい BLOB はスキャンされません。

Blob のアップロードとインデックス タグの更新

ストレージ アカウントに BLOB をアップロードすると、マルウェア スキャンによって追加の読み取り操作が開始され、そのインデックス タグが更新されます。 ほとんどの場合、これらの操作で大きな負荷は生じません。

アクセスとストレージの IOPS への影響

スキャン プロセスにもかかわらず、アップロードされたデータへのアクセスは影響を受けず、ストレージのIOPS(Input/Output Operations Per Second)への影響も最小限です。

Microsoft Defender for Endpoint と比較した制限事項

Defender for Storage では、マルウェアをスキャンするために、Defender for Endpoint と同じマルウェア対策エンジンと最新の署名を利用しています。 ただし、Azure Storage にアップロードされたファイルには、マルウェア対策エンジンが依存する特定のメタデータが含まれていません。 メタデータが欠如している場合、Defender for Endpoint での検出と比較して、Azure Storage での検出ミス ("偽陰性" と呼ばれます) の割合が高まることにつながります。

以下に示すのは、いくつかの不足しているメタデータの例です。

  • Web のマーク (MOTW): MOTW は、インターネットからダウンロードされたファイルを追跡する Windows のセキュリティ機能です。 ただし、ファイルが Azure Storage にアップロードされる際、このメタデータは保持されません。

  • ファイル パス コンテキスト: 標準オペレーティング システムでは、ファイル パスが脅威検出のための追加のコンテキストを提供します。 たとえば、システムの保存先 (C:\Windows\System32 など) を変更しようとしているファイルは、不審であるというフラグが立てられ、さらなる分析の対象となります。 Azure Storage では、BLOB 内の特定のファイル パスのコンテキストを、これと同じ方法で利用することはできません。

  • ビヘイビアー データ: Defender for Storage は、ファイルを実行せずに、その内容を分析します。 ファイルを調査し実行をエミュレートして、マルウェアをチェックできます。 ただし、このアプローチでは、実行中にのみ悪意のある性質が判明するような、特定の種類のマルウェアが検出されない場合があります。

次のステップ

マルウェア スキャン結果の応答を設定する方法の詳細をご確認ください。