Microsoft Defender for Storage でのマルウェアのアップロード時スキャンでは、BLOB がアップロードまたは変更されたときに自動的にスキャンされ、悪意のあるコンテンツをすばやく検出できます。 このクラウドベースの SaaS ベース ソリューションは、Microsoft Defender ウイルス対策を使用して包括的なマルウェア スキャンを実行し、追加のインフラストラクチャやメンテナンスを必要とせずにストレージ アカウントのセキュリティの維持を確保します。
アップロード時のスキャンをストレージ アカウントに統合すると、次のことができるようになります。
- 悪意のあるアップロードを防ぐ: マルウェアがアップロード時点でストレージ環境に侵入するのを防ぎます。
- セキュリティ管理を簡素化する: エージェントをデプロイしたり管理したりすることなく、自動スキャンを利用できます。
- コンプライアンスを強化する: アップロードされたすべてのデータのマルウェアを確実にスキャンして、規制要件を満たします。
悪意のあるファイルがクラウド ストレージ サービスを通じて組織内に侵入して拡散するおそれがあるため、マルウェアのアップロードはクラウド ストレージにとって最大の脅威となります。 Microsoft Defender for Storage には、包括的なマルウェア対策機能を使用してこのリスクを軽減する組み込みのソリューションが用意されています。
アップロード時のマルウェア スキャンの一般的なユース ケース
Web アプリケーション: 税関連アプリ、履歴書アップロード サイト、領収書アップロードなどの Web アプリケーションでユーザー作成コンテンツのアップロードをセキュリティで保護します。
コンテンツ配布: 一般的なマルウェア配布ポイントになり得るコンテンツ ハブまたは CDN (コンテンツ配信ネットワーク) を通じて大規模に共有される画像や動画などの資産を保護します。
コンプライアンス要件:NIST、SWIFT、HIPAA、DORA などの規制基準を満たすには、信頼されていないコンテンツ (特に規制対象の業界向け) をスキャンします。
サードパーティの統合: セキュリティ リスクを防ぐために、ビジネス パートナーや契約業者のコンテンツなどのサードパーティのデータがスキャンされていることを確認します。
コラボレーション プラットフォーム: 共有コンテンツをスキャンして、チームや組織間の安全なコラボレーションを確保します。
データ パイプライン: 複数のデータ ソースからのマルウェアの侵入を防ぎ、ETL (抽出、変換、読み込み) プロセスでデータ整合性を維持します。
機械学習トレーニング データ: データセットにユーザー作成コンテンツが含まれている場合は特に、データ セットがクリーンで安全であることを確保し、トレーニング データの品質を保護します。
Note
マルウェアのスキャン期間は、ファイル サイズ、ファイルの種類、サービスの読み込み、ストレージ アカウントの読み取り待機時間など、さまざまなメトリックによって異なる場合があります。 マルウェアスキャンの結果に依存するアプリケーションは、スキャン時間の潜在的な変動を考慮する必要があります。
アップロード時マルウェア スキャンを有効にする
Prerequisites
- アクセス許可: サブスクリプションまたはストレージ アカウントの所有者または共同作成者ロール、または必要なアクセス許可を持つ特定のロール。
- Defender for Storage: サブスクリプションまたは個々のストレージ アカウントで有効にする必要があります。
個々のストレージ アカウントの詳細な制御を維持しながら、サブスクリプション全体でマルウェア スキャンを有効にして構成するには、次のいずれかの方法を使用します。
- Azure 組み込みポリシーの使用 = Terraform、Bicep、ARM テンプレートなど、コードとしてのインフラストラクチャ テンプレートをプログラムで使用する
- Azure ポータルの使用
- PowerShell の使用
- REST API で直接使用する
マルウェア スキャンが有効になっている場合、Event Grid システム トピック リソースはストレージ アカウントと同じリソース グループに自動的に作成されます。 これは、マルウェア スキャン サービスが BLOB アップロード トリガーをリッスンするために使用されます。
詳細な手順については、「Microsoft Defender for Storage のデプロイ」を参照してください。
アップロード時のマルウェア スキャンのコスト管理
マルウェア スキャンは、スキャンされる GB ごとに課金されます。 コストの予測可能性を提供するために、マルウェア スキャンでは、ストレージ アカウントあたりの 1 か月でスキャンされる GB の量に上限を設定できます。
カプセル化メカニズムにより、ストレージ アカウントごとに、測定される月単位のスキャン制限がギガバイト (GB) 単位で設定されます。 これは、効果的なコスト管理メジャーとして機能します。 1 か月以内にストレージ アカウントの定義済みのスキャン制限に達すると、スキャン操作は自動的に停止します。 この停止は、しきい値に達すると、最大 20 GB の偏差で発生します。 この時点を超えてファイルのマルウェアはスキャンされません。 上限は毎月末の午前 0 時 (UTC) にリセットされます。 上限を更新すると、通常、有効になるまでに最大 1 時間かかります。
既定では、特定の上限メカニズムが定義されていない場合、10 TB (10,000 GB) の制限が確立されます。
Tip
キャッピング メカニズムは、個々のストレージ アカウントに対して、またはサブスクリプション全体に対して (サブスクリプションのすべてのストレージ アカウントに、サブスクリプション レベルで定義されている上限が割り当てられます) 設定できます。
カスタマイズ可能なアップロード時マルウェア スキャン フィルター
アップロード時マルウェア スキャンでは、カスタマイズ可能なフィルターがサポートされ、ユーザーは BLOB パスのプレフィックス、サフィックス、BLOB サイズに基づいて除外ルールを設定できます。 ログや一時ファイルなどの特定の BLOB パスと種類を除外することで、不要なスキャンを回避し、コストを削減できます。
フィルターは、Azure portal のストレージ アカウントの [Microsoft Defender for Cloud Settings] タブで、または REST API を使用して構成できます。
重要なポイント:
除外ベースのフィルター: 最大 24 個のフィルター値を使用して、マルウェアスキャンから BLOB を除外できます。
OR ロジック: 指定された条件のいずれかを満たす BLOB は除外されます。
フィルターの種類:
プレフィックス付きの BLOB (またはコンテナー) を除外する: プレフィックスのコンマ区切りのリストを定義します。
形式:
container-name/blob-name(コンテナー名で始まります。ストレージ アカウント名は含めないでください)。コンテナー全体を除外するには、末尾の
/を含まないコンテナー名のプレフィックスを使用します。1 つのコンテナーを除外するには、同様のプレフィックスを持つ他のコンテナーを除外しないように、コンテナー名の後に末尾のスラッシュ
/を追加します。
サフィックス付きの BLOB を除外する: サフィックスのコンマ区切りのリストを定義します。
サフィックスは、BLOB 名の末尾にのみ一致します。
ファイル拡張子または BLOB 名の末尾にのみ使用する必要があります。
[次の値より大きい BLOB を除外する]: BLOB をスキャンする最大サイズをバイト単位で指定します。 この値より大きい BLOB はスキャンから除外されます。
マルウェアスキャンのしくみ
アップロード時マルウェア スキャンのフロー
アップロード時スキャンは、BlobCreated で指定されているように、BlobRenamedまたは イベントが発生する操作によってトリガーされます。 記録される操作には次のようなものがあります。
- 新しい BLOB のアップロード: 新しい BLOB がコンテナーに追加されたとき
- 既存の BLOB の上書き: 既存の BLOB が新しいコンテンツに置き換えられたとき
-
BLOB への変更の完了:
PutBlockListやFlushWithCloseなどの BLOB に変更をコミットする操作
Note
Azure Data Lake Storage Gen2 の AppendFile や Azure BlockBlob の PutBlock などの増分操作では、マルウェア スキャンは個別にトリガーされません。 マルウェア スキャンは、PutBlockList や FlushWithClose などのコミット操作によってこれらの追加が完了した場合にのみ発生します。 コミットごとに新しいスキャンを開始できます。増分更新によって同じデータが複数回スキャンされた場合、コストが増加する可能性があります。
スキャン プロセス
-
イベント検出:
BlobCreatedまたはBlobRenamedイベントが発生すると、マルウェア スキャン サービスによって変更が検出されます。 - BLOB の取得: サービスは、ストレージ アカウントと同じリージョン内の BLOB コンテンツを安全に読み取ります。
- メモリ内スキャン: Microsoft Defender ウイルス対策と最新のマルウェア定義を使用して、コンテンツがメモリ内でスキャンされます。
- 結果の生成: スキャン結果が生成され、結果に基づいて適切なアクションが実行されます。
- コンテンツの破棄: スキャンされたコンテンツは保持されず、スキャンの直後に削除されます。
アップロード時のマルウェア スキャンのスループットと容量
アップロード時のマルウェア スキャンには、大規模な運用全体のパフォーマンスと効率を確保するために、特定のスループットと容量の制限があります。 これらの制限は、1 分あたりに処理できるデータの量を制御し、保護とシステム負荷のバランスを確保するのに役立ちます。
- スキャン スループット レート制限: アップロード時のマルウェア スキャンでは、ストレージ アカウントごとに毎分 50 GB まで処理できます。 BLOB のアップロード率がこのしきい値を一時的に超えた場合、システムはファイルをキューに入れてスキャンを試みます。 ただし、アップロード率が一貫して制限を超えている場合は、一部の BLOB がスキャンされない可能性があります。
オンデマンド スキャンとの共通点
次のセクションは、オンデマンド とアップロード時の両方のマルウェア スキャンに適用されます。
- 追加コスト Azure Storage の読み取り操作、BLOB インデックス作成、Event Grid 通知など。
- スキャン結果の表示と使用: BLOB インデックス タグ、Defender for Cloud セキュリティ アラート、Event Grid イベント、Log Analytics などのメソッド。
- マルウェアの修復の自動化: スキャン結果に基づいてファイルのブロック、削除、移動などのアクションを自動化します。
- サポートされるコンテンツと制限: サポートされているファイルの種類、サイズ、暗号化、リージョン制限について説明します。
- アクセスとデータ プライバシー: プライバシーに関する考慮事項など、サービスによるデータ アクセスと処理の方法の詳細。
- 偽陽性と偽陰性の処理: レビュー用のファイルを送信して抑制ルールを作成する手順。
- BLOB スキャンと IOPS への影響: スキャンによってさらに読み取り操作がトリガーされ、BLOB インデックス タグが更新されるしくみについて説明します。
これらのトピックの詳細については、「マルウェア スキャンの概要」ページを参照してください。
ベスト プラクティスとヒント
- コスト管理の上限をストレージ アカウント (特にアップロード トラフィックの多いアカウント) に設定して、コストを効果的に管理および最適化する。
- Log Analytics を使用して、コンプライアンスと監査の目的でスキャン履歴を追跡する。
- ユースケースでマルウェア対策が必要な場合は、組み込みのソフト削除機能による悪意のある BLOB の処理を使用するか、Event Grid と Logic Apps を利用して自動的な対策(例えば、隔離や削除など)を設定することを検討してください。 詳細なセットアップ ガイダンスについては、 マルウェア スキャンでの修復の設定に関するページを参照してください。
Tip
Microsoft のハンズオン ラボを通じて、Defender for Storage のマルウェア スキャン機能を確認することをお勧めします。 セットアップ、テスト、応答の構成に関する詳細なガイドについては、Ninja トレーニング の手順に従ってください。