Defender for Storage では、悪意のあるファイルを処理するさまざまな方法がサポートされています。 シナリオに合った修復オプションを選択します。
- 組み込みの修復機能
- 悪意のあるファイルを移動または削除するための自動化されたワークフロー
- クリーン ファイルを別の宛先に移動または取り込むための自動化されたワークフロー
マルウェア スキャンでは、次のスキャン結果オプションを使用して自動修復を構築します。
- Defender for Cloud のセキュリティ アラート
- Event Grid のイベント
- BLOB インデックス タグ
ヒント
Defender for Storage でマルウェア スキャンを調べるには、ハンズオン ラボを試してください。 Ninja トレーニング モジュールでは、次の手順を実行できます。
- マルウェア スキャンを設定する
- 機能をエンド ツー エンドでテストする
- 修復応答を設定する
このラボは、Microsoft Defender for Cloud トレーニング シリーズの一部であり、セキュリティ機能に関する実用的な経験を提供します。
マルウェア検出の修復オプション
悪意のある BLOB に対する組み込みの自動マルウェア修復
Defender for Storage Malware Protection には、悪意のある BLOB の修復プロセスを簡略化および自動化する機能が組み込まれているため、マルウェア配布のリスクを軽減できます。 Defender for Storage は、アップロード時またはオンデマンドのマルウェア スキャン中に悪意のある BLOB を検出すると、論理的な削除を自動的に開始して BLOB を安全に検疫し、さらに分析できるように回復可能な状態に保ちます。
ストレージ アカウントで BLOB の論理的な削除を有効に していない場合、Defender for Storage は、悪意のある BLOB の論理的な削除機能を有効にしたときに有効にしようとします。 この機能により、セットアップ手順が減り、セキュリティの応答性がすぐに向上します。
活用事例
次の方法でマルウェアの配布を自動的に修復します。
- アクセスを防ぐために BLOB を論理的に削除する
- 調査と復旧のために BLOB を保持する
- 外部自動化または手動の手順の必要性を排除する
セキュリティ管理者または SOC アナリストが最小限の手動作業でストレージをクリーンに保つ
複雑なワークフローなしで組織が脅威を迅速に修正できるようにする
機能に関するメモ
悪意のある BLOB の論理的な削除は、悪意のある BLOB に対してのみ機能します。 既定ではオフになっています。
サブスクリプションまたはストレージ アカウント レベルで、悪意のある BLOB のソフト削除を有効にすることができます。
BLOB をソフト削除した場合、その BLOB は同じ BLOB コンテナーに残ります。 保持期間内に BLOB を復元できます。 詳細については、「BLOB の論理的な削除」を参照してください。
ストレージ アカウントで BLOB のバージョニングを有効にした場合、ソフト削除された BLOB を復元する方法については、BLOB のソフト削除の管理と復元に関するページを参照してください。
ソフト削除機能を悪意のある BLOB に対して有効にした場合、保持期間は既定で7日に設定されますが、1日から365日の範囲で変更できます。 ストレージ アカウントの設定で、既定の保持期間を変更できます。
ストレージ アカウントの論理的な削除プロパティの設定を有効にした後でオフにした場合、悪意のある BLOB は削除されません。 この場合、Defender for Storage は論理的な削除を再度有効にせず、アラートを作成します。
構成が間違っているか、アクセス許可がないため、削除が失敗する可能性があります。 アラートには、エラーの理由が表示されます。
保有期間中にソフト削除された BLOB を格納すると、アクティブなデータと同じコストがかかります。 詳細については、「BLOB の論理的な削除」を参照してください。
BLOB を復元すると、Azure によって書き込みトランザクションとしてカウントされます。 詳細については、「 各 REST 操作を価格にマップする」を参照してください。
悪意のあるBLOBに対するカスタム対策の設定
修復を自動化するには、次のオプションを使用します。
ABAC (属性ベースのアクセス制御) を使用して、未スキャンのファイルや悪意のあるファイルへのアクセスをブロックする
Microsoft Entra 属性ベースのアクセス制御 (ABAC) 承認を使用すると、悪意のあるファイルや未スキャンのファイルへのアクセスをブロックできます。 スキャン結果に基づいて BLOB への条件付きアクセスを設定し、アプリケーションとユーザーがクリーンなスキャンされたファイルにのみアクセスできるようにすることができます。
それを設定するには、次のビデオ内の説明に従います。
悪意のある BLOB の削除または移動
コードまたはワークフローの自動化を使用して、悪意のあるファイルを削除または移動して検疫します。
削除や移動のために環境を準備する
悪意のあるファイルを削除する - 自動削除を設定する前に、ストレージ アカウントで 論理的な削除 を有効にします。 これにより、誤検知がある場合や、セキュリティ専門家が悪意のあるファイルを調査したい場合に、ファイルを "削除解除" できます。
悪意のあるファイルを検疫に移動 する - "検疫" と見なされる専用のストレージ コンテナーまたはストレージ アカウントにファイルを移動します。 セキュリティ管理者や SOC アナリストなどの特定のユーザーのみが、この専用コンテナーまたはストレージ アカウントにアクセスするアクセス許可を与える必要がある場合があります。
- Microsoft Entra ID を使用して BLOB ストレージへのアクセスを制御することをお勧めします。 専用の検疫ストレージ コンテナーへのアクセスを制御するには、Microsoft Entra ロールベースのアクセス制御 (RBAC) を使用してコンテナーレベルのロールの割り当てを使用できます。 ストレージ アカウント レベルのアクセス許可を持つユーザーは、引き続き "検疫" コンテナーにアクセスできる場合があります。 アクセス許可を編集してコンテナーレベルにすることも、別の方法を選択して、悪意のあるファイルを専用のストレージ アカウントに移動することもできます。
- 保護されたストレージ アカウントの SAS (Shared Access Signature) トークンなど、他の方法を使用する必要がある場合は、悪意のあるファイルを別のストレージ アカウント (検疫) に移動します。 次に、検疫されたストレージ アカウントにアクセスするためのアクセス許可を 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 オブジェクト:
correlationId: 同じスキャンに関連する複数のイベントを関連付けるために使用できる一意の識別子。
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": "aaaa0000-bb11-2222-33cc-444444dddddd",
"subject": "storageAccounts/<storage_account_name>/containers/app-logs-storage/blobs/EICAR - simulating malware.txt",
"data": {
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"blobUri": "https://<storage_account_name>.blob.core.windows.net/app-logs-storage/EICAR - simulating malware.txt",
"eTag": "0x000000000000000",
"scanFinishedTimeUtc": "2023-05-04T11:31:54.0481279Z",
"scanResultType": "Malicious",
"scanResultDetails": {
"malwareNamesFound": [
"DOS/EICAR_Test_File"
],
"sha256": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
}
},
"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: アプリで処理の前に "インデックス タグ" をチェックする
ストレージ アカウントを使用するすべてのアプリケーションを更新します。 各アプリケーションで各ファイルのスキャン結果をチェックし、BLOB インデックス タグ スキャン結果に脅威が検出されなかった場合は、アプリケーションで BLOB を読み取ります。
オプション 2: Event Grid イベントでアプリケーションを Webhook に接続する
Event Grid イベントでアプリケーションを Webhook に接続し、それらのイベントを使用して、 脅威が検出されない ファイルの関連プロセスをトリガーします。 Webhook イベント配信の使用とエンドポイントの検証の詳細について確認してください。
中間ストレージ アカウントを DMZ として使用する
信頼されていないコンテンツ (DMZ) の中間ストレージ アカウントを設定し、DMZ に直接アップロード トラフィックを送信します。 信頼されていないストレージ アカウントで、マルウェア スキャンを有効にし、Event Grid と Function App を接続して、"脅威は見つかりませんでした" という結果でスキャンされた BLOB のみを宛先ストレージ アカウントに移動します。
次のステップ
Microsoft Defender for Storage での マルウェア スキャンの結果について学習する方法について 説明します。