Defender for Storage でのマルウェア スキャン
Defender for Storage のマルウェア スキャンは、Microsoft Defender ウイルス対策の機能を使って、アップロードされたコンテンツの完全なマルウェア スキャンを準リアルタイムで実行するので、有害なコンテンツから 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) やコンテンツ ハブは、典型的なマルウェア配布機会です。
- コンプライアンス要件: National Institute of Standards and Technology、国際銀行間金融通信協会、一般データ保護規則などのコンプライアンス基準に準拠するリソースには、マルウェア スキャンを含む堅牢なセキュリティ プラクティスが必要です。 これは、規制のある業界や地域で事業を行う組織にとって非常に重要です。
- サードパーティーとの統合: ビジネス パートナー、開発者、請負業者など、サードパーティーのデータはさまざまなソースから提供され、それらすべてで堅牢なセキュリティが実践されているとは限りません。 マルウェアのスキャンは、こうしたデータによってシステムにセキュリティ リスクが持ち込まれないようにする助けになります。
- 共同作業のプラットフォーム: チームはファイル共有と同様にクラウド ストレージを使用して、複数のチームや組織にわたり、コンテンツを継続的に共有し、共同作業を行います。 マルウェアをスキャンすると、安全に共同作業できるようになります。
- データ パイプライン: ETL (抽出、転送、読み込み) プロセスを通過するデータは、複数のソースから到着する場合があり、マルウェアが含まれている可能性があります。 マルウェアのスキャンは、これらのパイプラインの整合性を確保するのに役立ちます。
- 機械学習のトレーニング データ: トレーニング データの品質とセキュリティは、効果的な機械学習モデルの実現のために欠かせません。 これらのデータ セットがクリーンで安全であると確認することは、ユーザーが生成したコンテンツや外部ソースからのデータが含まれている場合は特に重要です。
マルウェア スキャンは、準リアルタイムのサービスです。 スキャン時間は、スキャンされるファイルのサイズやファイルの種類に加え、サービスやストレージ アカウントに対する負荷によって変動する可能性があります。 Microsoft では、全体的なスキャン時間の短縮に絶えず取り組んでいますが、サービスに基づいてユーザー エクスペリエンスを設計する際には、スキャン時間の変動を考慮に入れる必要があります。
前提条件
マルウェア スキャンを有効にして構成するには、所有者ロール (サブスクリプション所有者やストレージ アカウント所有者など) または必要なデータ アクションを備える特定のロールが必要です。 必要なアクセス許可に関する詳細を確認してください。
個々のストレージ アカウントに対して機能の構成の詳細な制御を維持しながら、サブスクリプションの大規模なマルウェア スキャンを有効にして構成できます。 マルウェア スキャンを有効にして構成するには、いくつかの方法があります: Azure 組み込みポリシー (推奨される方法)、コードとしてのインフラストラクチャ テンプレートを使用するプログラム (Terraform、Bicep、Azure Resource Manager (ARM) テンプレートなど)、Azure portal の使用、REST API で直接。
マルウェア スキャンのしくみ
アップロード時マルウェア スキャン
アップロード時トリガー
BLOB が、保護されたストレージ アカウントにアップロードされると、マルウェア スキャンがトリガーされます。 すべてのアップロード方法でスキャンがトリガーされます。 BLOB の変更はアップロード操作であるため、変更されたコンテンツは更新後にスキャンされます。
スキャン リージョンとデータ保持
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の設定を有効にして修復し、サブスクリプションで作成された新しいストレージアカウントが有効になっているかを確認するために使用されます。 このリソースには、マルウェア スキャンを有効にするために必要な特定のアクセス許可を含むロールが割り当てられています。
マルウェア スキャンが正常に機能するためには、特定のリソース、ID、ネットワーク設定が必要です。 これらのいずれかを変更または削除すると、マルウェア スキャンは機能を停止します。 正常な動作に戻すには、電源を切り、再度、電源を入れます。
スキャン結果の提供
マルウェア スキャンの結果は、4 つの方法で入手できます。 セットアップ後、ストレージ アカウントにアップロードされ、スキャンされたすべてのファイルの BLOB インデックス タグとして、およびファイルが悪意があると識別された場合に、Microsoft Defender for Cloud セキュリティ アラートとして、スキャン結果が表示されます。
Event Grid や Log Analytics など、スキャン結果の使用方法を追加で構成することもできます。これらの方法のために、さらに構成が必要です。 次のセクションでは、さまざまなスキャン結果方法について説明します。
スキャン結果
BLOB インデックス タグ
BLOB インデックス タグは、BLOB のメタデータ フィールドです。 それらによって、キーと値のタグ属性を使用して、ストレージ アカウント内のデータが分類されます。 これらのタグには自動的にインデックスが付けられ、検索可能な多次元インデックスとして公開されるため、データを簡単に見つけることができます。 スキャン結果は簡潔で、BLOB メタデータ内のマルウェア スキャンのスキャン結果とマルウェア スキャンのスキャン日時 (協定世界時: UTC) が表示されます。 その他の結果の種類 (アラート、イベント、ログ) では、マルウェアの種類とファイルのアップロード操作に関するさらに詳しい情報が提供されます。
BLOB インデックス タグは、アプリケーションでワークフローを自動化するために使用できますが、改ざん防止機能はありません。
Defender for Cloud のセキュリティ アラート
悪意のあるファイルが検出されると、Microsoft Defender for Cloud によって、Microsoft Defender for Cloud セキュリティ アラートが生成されます。 アラートを表示するには、Microsoft Defender for Cloud セキュリティ アラートに移動します。 セキュリティ アラートには、ファイルの詳細とコンテキスト、マルウェアの種類、推奨される調査と修復の手順が含まれます。 修復にこれらのアラートを使用するには、次のことができます。
- Azure portal で [Microsoft Defender for Cloud]>[セキュリティ アラート] に移動して、セキュリティ アラートを表示します。
- これらのアラートに基づいて、自動化を構成します。
- セキュリティ情報管理 (SIEM) にセキュリティ アラートをエクスポートします。 Microsoft Sentinel コネクタを使用して Microsoft Sentinel (Microsoft の SIEM) に、または任意の他の SIEM にセキュリティ アラートを継続的にエクスポートできます。
Event Grid イベント
Event Grid は、イベント ドリブンの自動化に役立ちます。 これは、応答の自動化に使用できるイベントの形式で、最短の待ち時間で結果を取得する最速の方法です。
Event Grid カスタム トピックのイベントは、複数のエンドポイントタイプで使用できます。 マルウェア スキャンのシナリオで最も役立つものは次のとおりです。
- 関数アプリ (以前の Azure 関数) - サーバーレス関数を使用して、移動、削除、検疫などの自動応答用コードを実行します。
- Webhook - アプリケーションを接続する場合。
- Event Hubs と Service Bus キュー - ダウンストリーム コンシューマーに通知する場合。
ログ分析
コンプライアンスの証拠やスキャン結果の調査のために、スキャン結果をログに記録したい場合があります。 Log Analytics ワークスペースの宛先を設定することで、すべてのスキャン結果を、クエリを簡単に実行できる一元化されたログ リポジトリに格納できます。 結果を表示するには、Log Analytics の宛先ワークスペースに移動し、StorageMalwareScanningResults
テーブルを検索します。
コスト管理
マルウェア スキャンは、スキャンされる 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 は、マルウェア スキャンではサポートされていません。
- サポートされていないリージョン: 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 をアップロードすると、マルウェア スキャンによって追加の読み取り操作が開始され、そのインデックス タグが更新されます。 ほとんどの場合、これらの操作で大きな負荷は生じません。
アクセスとストレージの 1 秒あたりの入出力操作 (IOPS) への影響
スキャン プロセスが行われていても、アップロードされたデータへのアクセスは影響を受けず、ストレージ IOPS への影響は最小限です。