設定惡意程式碼掃描的回應
設定自動回應以移動或移除惡意檔案,或將乾淨的檔案移動/內嵌至另一個目的地。 選取適合您案例結構的偏好回應選項。
使用惡意程式碼掃描,您可以使用下列掃描結果選項來建立自動化回應:
- 適用於雲端的 Defender 安全性警示
- 事件方格的事件
- Blob 索引標籤
提示
我們邀請您透過實作教室,探索適用於儲存體的 Defender 中的惡意程式碼掃描功能。 請遵照忍者訓練 (英文) 指示,以取得有關如何設定和測試惡意程式碼掃描端對端的詳細逐步指南,包含設定掃描結果的回應。 這是「實驗室」專案的一部分,可協助客戶熟悉適用於雲端的 Microsoft Defender,並提供其功能的實際操作體驗。
以下是一些可用來自動化回應的回應選項:
使用 ABAC 封鎖未掃描或惡意檔案的存取 (屬性型存取控制)
您可以使用 Microsoft Entra 屬性型存取控制 (ABAC) 授權,封鎖對惡意和未掃描檔案的存取。 它可讓您根據掃描結果設定 Blob 的條件式存取,並讓應用程式和使用者只存取經過掃描的乾淨檔案。
請遵照下列影片進行設定。
刪除或移動惡意 Blob
您可以使用程式碼或工作流程自動化來刪除惡意檔案或將其移至隔離。
準備環境以進行刪除或移動
刪除惡意檔案 - 在設定自動刪除之前,建議在儲存體帳戶上啟用虛刪除。 如果發生誤判或安全性專業人員想要調查惡意檔案,則可「取消刪除檔案」。
將惡意檔案移至隔離 - 您可以將檔案移至被視為「隔離」的專用儲存體容器或儲存體帳戶。 您可能只希望特定使用者 (例如安全性系統管理員或 SOC 分析師) 具有存取此專用容器或儲存體帳戶的權限。
- 使用 Microsoft Entra ID 來控制 Blob 儲存體的存取是最佳做法。 若要控制專用隔離儲存體容器的存取,您可以使用 Microsoft Entra 角色型存取控制 (RBAC) 容器層級角色指派。 具有儲存體帳戶層級權限的使用者仍可存取「隔離」容器。 您可以將其權限編輯為容器層級,也可以選擇不同的方法並將惡意檔案移至專用儲存體帳戶。
- 如果您必須在受保護的儲存體帳戶上使用其他方法,例如 SAS (共用存取簽章) 權杖,則最佳做法是將惡意檔案移至另一個儲存體帳戶 (隔離)。 然後,最好只授予 Microsoft Entra 存取隔離儲存體帳戶的權限。
設定自動化
選項 1:基於適用於雲端的 Microsoft Defender 安全性警示的邏輯應用程式
邏輯應用程式型回應是一種簡易、無程式碼的回應設定方法。 不過,回應時間會比事件驅動的程式碼型方法慢。
使用 Azure 入口網站部署 DeleteBlobLogicApp Azure Resource Manager (ARM) 範本。
選取您部署的邏輯應用程式。
將角色指派新增至邏輯應用程式,以允許它從儲存體帳戶刪除 Blob:
選項 2:根據 [事件方格] 事件的函式應用程式
函式應用程式提供低延遲回應時間的高效能。
在與受保護儲存體帳戶相同的資源群組中建立函式應用程式。
新增函式應用程式身分識別的角色指派。
移至側邊功能表中的 [身分識別]、確定 [系統指派] 的身分識別狀態為 [開啟],然後選取 [Azure 角色指派]。
使用 [儲存體 Blob 資料參與者] 角色,在訂用帳戶層級中新增角色指派。
取用 [事件方格] 事件,並將 Azure 函式連線為端點類型。
撰寫 Azure 函式程式碼時,您可以使用預先建立的函式範例 - MoveMaliciousBlobEventTrigger,或撰寫您自己的程式碼,以將 Blob 複製到其他地方,然後從來源中刪除它。
針對每個掃描結果,系統會根據下列結構描述傳送事件。
事件訊息結構
事件訊息是一種 JSON 物件,其中包含機碼值組,可提供惡意程式碼掃描結果的詳細資訊。 以下是事件訊息中每個機碼的細節:
id:事件的唯一識別碼。
subject:字串,描述儲存體帳戶中掃描的 Blob (檔案) 的資源路徑。
data:包含事件其他資訊的 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:事件所屬 [事件方格] 主題的資源路徑。
以下是事件訊息的範例:
{
"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:應用程式在處理前檢查「索引標記」
取得擷取資料的其中一種方法是更新存取儲存體帳戶的所有應用程式。 每個應用程式都會檢查每個檔案的掃描結果,如果 blob [索引標記] 掃描結果是 [找不到威脅],則應用程式會讀取該 blob。
選項 2:將應用程式連線至 [事件方格] 事件中的 Webhook
您可以將應用程式連線至 [事件方格] 事件中的 Webhook,並使用這些事件來觸發掃描結果為 [找不到威脅] 的檔案的相關處理序。 深入了解如何使用 Webhook 事件傳送和驗證端點。
使用中繼儲存體帳戶作為 DMZ
您可以為不受信任的內容 (DMZ) 設定中繼儲存體帳戶,並將上傳流量導至 DMZ。 在未受信任的儲存體帳戶上,啟用惡意程式碼掃描,並連線 [事件方格] 和 [函式應用程式],以僅將掃描結果為「未發現威脅」的 Blob 移至目標儲存體帳戶。
下一步
了解如何在適用於儲存體的 Microsoft Defender 中了解惡意軟體掃描結果 (部分機器翻譯)。