マルウェア スキャンに対する応答の設定
悪意のあるファイルを移動または削除したり、クリーン ファイルを別の宛先に移動または取り込んだりするための自動応答を設定します。 シナリオ アーキテクチャに適合した優先される応答オプションを選択します。
マルウェア スキャンでは、次のスキャン結果オプションを使用して自動応答を作成できます。
- Defender for Cloud のセキュリティ アラート
- Event Grid のイベント
- BLOB インデックス タグ
ヒント
Microsoft のハンズオン ラボを通じて、Defender for Storage のマルウェア スキャン機能を確認することをお勧めします。 Ninja トレーニングの手順に従って、マルウェア スキャンのエンドツーエンドの設定とテストを行う方法 (スキャン結果に対する応答の構成など) に関する詳細なステップバイステップ ガイドを参照してください。 これは 'ラボ' プロジェクトの一環で、お客様が Microsoft Defender for Cloud を活用し、その機能に関するハンズオンの実践的なエクスペリエンスを提供するのに役立ちます。
応答を自動化するために使用できるいくつかの応答オプションを次に示します。
スキャンされていないファイルや悪意のあるファイルへのアクセスを ABAC (属性ベースのアクセス制御) を使用してブロックする
Microsoft Entra の属性ベースのアクセス制御 (ABAC) による認可を使用して、悪意のあるファイルやスキャンされていないファイルへのアクセスをブロックできます。 この機能では、スキャン結果に基づいて BLOB への条件付きアクセスを設定でき、アプリケーションとユーザーが、クリーンなスキャン済みファイルのみにアクセスできるようになります。
それを設定するには、次のビデオ内の説明に従います。
悪意のある BLOB の削除または移動
コードまたはワークフロー自動化を使用して、悪意のあるファイルを削除または移動して検疫することができます。
削除や移動のために環境を準備する
悪意のあるファイルを削除する - 自動削除を設定する前に、ストレージ アカウントで論理的な削除を有効にすることをお勧めします。 これにより、誤検知がある場合や、セキュリティ専門家が悪意のあるファイルを調査する場合に、ファイルの "削除の取り消し" ができます。
悪意のあるファイルを検疫に移動する - "検疫" と見なされる専用のストレージ コンテナーまたはストレージ アカウントにファイルを移動できます。 セキュリティ管理者や SOC アナリストなどの特定のユーザーのみが、この専用コンテナーまたはストレージ アカウントにアクセスするアクセス許可を与える必要がある場合があります。
- Microsoft Entra ID を使用して BLOB ストレージへのアクセスを制御することがベスト プラクティスと見なされます。 専用の検疫ストレージ コンテナーへのアクセスを制御するには、Microsoft Entra ロールベースのアクセス制御 (RBAC) を使用してコンテナーレベルのロールの割り当てを使用できます。 ストレージ アカウント レベルのアクセス許可を持つユーザーは、引き続き「検疫」コンテナーにアクセスできる場合があります。 アクセス許可を編集してコンテナーレベルにすることも、別の方法を選択して、悪意のあるファイルを専用のストレージ アカウントに移動することもできます。
- 保護されたストレージ アカウントで SAS (共有アクセス署名) トークンなどの他の方法を使用する必要がある場合は、悪意のあるファイルを別のストレージ アカウント (検疫) に移動することがベスト プラクティスです。 次に、検疫されたストレージ アカウントにアクセスするためだけの Microsoft Entra アクセス許可を付与することをお勧めします。
自動化の設定
オプション 1: Microsoft Defender for Cloud セキュリティ アラートに基づくロジック アプリ
ロジック アプリベースの応答は、応答を設定するための単純なコード不要のアプローチです。 ただし、応答時間は、イベントドリブンのコードベースのアプローチよりも遅くなります。
Azure portal を使用して DeleteBlobLogicApp Azure Resource Manager (ARM) テンプレートをデプロイします。
デプロイしたロジック アプリを選択します。
ロールの割り当てをそのロジック アプリに追加して、それでストレージ アカウントから BLOB を削除できるようにします。
サイド メニューにある [ID] に移動し、[Azure ロールの割り当て] を選択します。
ストレージ BLOB データ共同作成者ロールで、サブスクリプション レベルでロールの割り当てを追加します。
Microsoft Defender for Cloud アラート用にワークフロー自動化を作成します。
- Azure portal の Microsoft Defender for Cloud に移動します。
- サイド メニューの [ワークフローの自動化] に移動します。
- 次のように、新しいワークフローを追加します。[アラート名に含まれるもの] フィールドに、「ストレージ アカウントにアップロードされた悪意のあるファイル」と入力し、[アクション] セクションでご自分のロジック アプリを選択します。
- [作成] を選択します
オプション 2: Event Grid イベントに基づく関数アプリ
関数アプリは、低待機時間の応答時間で高パフォーマンスを提供します。
関数アプリを、保護されたストレージ アカウントと同じリソース グループに作成します。
関数アプリ ID に対するロールの割り当てを追加します。
サイド メニューにある [ID] に移動し、[システム割り当て] ID の状態が [オン] になっていることを確認し、[Azure ロールの割り当て] を選択します。
ストレージ BLOB データ共同作成者ロールで、サブスクリプション レベルかストレージ アカウント レベルでロールの割り当てを追加します。
Event Grid イベントを使用し、Azure 関数をエンドポイントの種類として接続します。
Azure 関数コードを作成するときは、事前作成された関数サンプル (MoveMaliciousBlobEventTrigger) を使用するか、独自のコードを作成して、BLOB を任意の場所にコピーし、ソースから削除することができます。
スキャン結果ごとに、次のスキーマに従ってイベントが送信されます。
イベントメッセージの構造
イベント メッセージには、JSON オブジェクトで、マルウェア スキャンの結果に関する詳細情報を提供するキーと値のペアが含まれています。 ここでは、イベントメッセージの各キーの内訳を説明します:
id: イベントの一意識別子。
サブジェクト: ストレージ アカウントでスキャンされた blob (ファイル) のリソース パスを記述する文字列。
データ: イベントに関する追加情報を含む JSON オブジェクト:
相関Id: 同じスキャンに関連する複数のイベントを関連付けるために使用できる一意識別子。
blobUri: ストレージ アカウントでスキャンされた blob (ファイル) の URI。
eTag: スキャンされた blob (ファイル) の ETag。
scanFinishedTimeUtc: スキャンが完了したときの UTC タイムスタンプ。
scanResultType: スキャンの結果 (たとえば、"悪意あり" や "脅威は見つかりませんでした")。
scanResultDetails: スキャン結果に関する詳細を含む JSON オブジェクト:
malwareNamesFound: スキャンされたファイルで見つかったマルウェア名の配列。
sha256: スキャンされたファイルのSHA-256ハッシュ。
eventType: イベントの種類を表す文字列、この場合は 「Microsoft.Security.MalwareScanningResult」 となる。
dataVersion:データスキーマのバージョン番号。
metadataVersion:メタデータスキーマのバージョン番号。
eventTime: イベントが生成されたときの UTC タイムスタンプ。
topic: イベントが属する Event Grid トピックのリソース パス。
イベントメッセージの一例です:
{
"id": "52d00da0-8f1a-4c3c-aa2c-24831967356b",
"subject": "storageAccounts/<storage_account_name>/containers/app-logs-storage/blobs/EICAR - simulating malware.txt",
"data": {
"correlationId": "52d00da0-8f1a-4c3c-aa2c-24831967356b",
"blobUri": "https://<storage_account_name>.blob.core.windows.net/app-logs-storage/EICAR - simulating malware.txt",
"eTag": "0x8DB4C9327B08CBF",
"scanFinishedTimeUtc": "2023-05-04T11:31:54.0481279Z",
"scanResultType": "Malicious",
"scanResultDetails": {
"malwareNamesFound": [
"DOS/EICAR_Test_File"
],
"sha256": "275A021BBFB6489E54D471899F7DB9D1663FC695EC2FE2A2C4538AABF651FD0F"
}
},
"eventType": "Microsoft.Security.MalwareScanningResult",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2023-05-04T11:31:54.048375Z",
"topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}
イベント メッセージの構造を理解しておくと、マルウェア スキャン結果に関する関連情報を抽出し、それに応じて処理できます。
アプリケーションとデータ フローでマルウェア スキャンのスキャン結果が認識されるようにする
マルウェア スキャンはほぼリアルタイムであり、通常は、アップロードの時点からスキャンの時点までに少し時間が空きます。 ストレージは非コンピューティングであるため、悪意のあるファイルがストレージ内で実行されるリスクはありません。 リスクは、ユーザーまたはアプリケーションが悪意のあるファイルにアクセスし、組織全体にそれらを拡散させることです。
アプリケーションとデータ フローでマルウェア スキャンのスキャン結果が認識されるようにし、ファイルがスキャンされその結果が使用され対処されるまでそのファイルに対するアクセスや処理を防ぐには、いくつか方法があります。
アプリケーションはスキャン結果に基づいてデータを取り込む
オプション 1: アプリで処理の前に "インデックス タグ" をチェックする
データを取り込む方法の 1 つは、ストレージ アカウントにアクセスするすべてのアプリケーションの更新です。 各アプリケーションで各ファイルのスキャン結果をチェックし、BLOB インデックス タグ スキャン結果に脅威が検出されなかった場合は、アプリケーションで BLOB を読み取ります。
オプション 2: Event Grid イベントでアプリケーションを Webhook に接続する
Event Grid イベントでアプリケーションを Webhook に接続し、それらのイベントを使用して、脅威が検出されなかったスキャン結果のファイルの関連プロセスをトリガーできます。 Webhook イベント配信の使用とエンドポイントの検証の詳細について確認してください。
中間ストレージ アカウントを DMZ として使用する
信頼されていないコンテンツ用の中間ストレージ アカウント (DMZ) を設定し、トラフィックを DMZ に直接アップロードできます。 信頼されていないストレージ アカウントで、マルウェア スキャンを有効にし、Event Grid と Function App を接続して、"脅威が検出されない" 結果でスキャンされた BLOB のみを宛先ストレージ アカウントに移動します。
次のステップ
Microsoft Defender for Storage でのマルウェア スキャンの結果を理解する方法について説明します。