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