Nastavení automatizované nápravy pro detekci malwaru

Defender for Storage podporuje různé způsoby zpracování škodlivých souborů. Vyberte možnost nápravy, která odpovídá vašemu scénáři:

  • Integrované možnosti nápravy
  • Automatizované pracovní postupy pro přesun nebo odebrání škodlivých souborů
  • Automatizované pracovní postupy pro přesun nebo ingestování čistých souborů do jiného cíle

Pomocí kontroly malwaru můžete automatizovanou nápravu sestavit pomocí těchto možností výsledků kontroly:

  • Výstrahy zabezpečení v programu Defender for Cloud
  • Události služby Event Grid
  • Značky blobového indexu

Tip

Pokud chcete prozkoumat kontrolu malwaru v Defenderu for Storage, vyzkoušejte praktické cvičení. Modul pro trénování Ninja poskytuje podrobné pokyny pro:

  • Nastavení kontroly malwaru
  • Otestujte funkci od začátku do konce
  • Nastavení nápravných odpovědí

Toto cvičení je součástí školicí řady Microsoft Defenderu pro cloud a poskytuje praktické zkušenosti s funkcemi zabezpečení.

Možnosti nápravy po detekci malwaru

Automatická integrovaná náprava malwaru pro škodlivé bloky dat

Defender for Storage Malware Protection má integrovanou funkci, která zjednodušuje a automatizuje proces nápravy škodlivých objektů blob, takže snížíte riziko distribuce malwaru. Když Defender for Storage zjistí škodlivý objekt blob během kontroly malwaru při nahrávání nebo na vyžádání, automaticky spustí měkké odstranění, aby byl objekt blob bezpečně umístěn do karantény a bylo možné ho obnovit pro další analýzu.

Pokud jste nepovolili měkké odstranění objektů blob v účtu úložiště, Defender for Storage ho povolí, když zapnete funkci měkkého odstranění škodlivých objektů blob. Funkce soft delete škodlivých blobů snižuje kroky nastavení a okamžitě zlepšuje bezpečnostní reakci.

Snímek obrazovky se stránkou upřesňujícího nastavení v programu Microsoft Defender for Storage

Případy použití

  • Automatická náprava distribuce malwaru pomocí:

    • Měkké odstranění blobu k zamezení přístupu
    • Uchování blobu pro účely vyšetřování a obnovení
    • Odebrání potřeby externí automatizace nebo ručních kroků
  • Umožnit správcům zabezpečení nebo analytikům SOC udržovat úložiště čisté s minimálním ručním úsilím

  • Umožnit organizacím rychle opravit hrozby bez složitých pracovních postupů

Poznámky k funkcím

  • Měkké odstranění škodlivých blob objektů funguje jenom pro škodlivé blob objekty. Ve výchozím nastavení je vypnutý.

  • Funkci jemného odstranění škodlivých blobů můžete zapnout na úrovni předplatného nebo účtu úložiště.

  • Při měkkém odstranění blobu zůstane ve stejném kontejneru blobů. Objekt blob můžete obnovit během doby uchovávání. Další informace naleznete v tématu Měkké smazání pro objekty blob.

  • Pokud ve svém účtu úložiště zapnete správu verzí objektů blob, přečtěte si téma Správa a obnovení obnovitelného odstranění objektů blob a zjistěte, jak obnovit obnovitelně odstraněný objekt blob.

  • Objekty blob, které byly detekovány jako škodlivé a měkce smazány, budou vždy označeny značkami indexu. Pokud jste zvolili neukládat výsledky skenování do indexových značek, budou tyto značky odstraněny po obnovení měkkého smazání objektu blob.

  • Výchozí doba uchovávání je sedm dnů, pokud zapnete funkci obnovitelného odstranění škodlivých objektů blob, ale můžete ji změnit (rozsah: 1–365 dnů). Výchozí dobu uchovávání můžete změnit v nastavení účtu úložiště.

  • Pokud po zapnutí zrušíte nastavení vlastnosti měkkého odstranění v účtu úložiště, škodlivé blob objekty se neodstraní. V tomto případě Defender for Storage nezapne opětovné softwarové odstranění a vytvoří výstrahu.

  • Odstranění může selhat kvůli chybné konfiguraci nebo chybějícím oprávněním. Výstraha zobrazuje důvod selhání.

  • Uložení softwarově odstraněného objektu blob během doby uchovávání stojí stejně jako aktivní data. Další informace naleznete v tématu Měkké smazání pro objekty blob.

  • Pokud objekt blob obnovíte, Azure ho počítá jako transakci zápisu. Další informace najdete v tématu Mapování jednotlivých operací REST na cenu.

Nastavení vlastní nápravy pro škodlivé bloby

Můžete automatizovat nápravu blokováním přístupu k neproskenovaným nebo škodlivým souborům, mazáním nebo přesunem škodlivých blobů, nebo směrováním čistých souborů na základě výsledků skenu:

Blokování přístupu k neskenovaným nebo škodlivým souborům pomocí ABAC (řízení přístupu na základě atributů)

Pomocí autorizace řízení přístupu na základě atributu Microsoft Entra (ABAC) můžete blokovat přístup ke škodlivým a neskenovaným souborům. Podmíněný přístup k objektům blob můžete nastavit na základě výsledků kontroly a povolit aplikacím a uživatelům přístup pouze k naskenovaným souborům, které jsou čisté.

Pro nastavení autorizace ABAC pro přístup k blobům na základě výsledků skenování postupujte podle instrukcí v ABAC nastavovacím návodu pro kontrolu přístupu ke blob založeném na skenování (video).

Odstranění nebo přesunutí škodlivého bloku

Pomocí kódu nebo automatizace pracovního postupu odstraňte nebo přesuňte škodlivé soubory do karantény.

Příprava prostředí na odstranění nebo přesun

  • Odstraňte škodlivý soubor – Před nastavením automatizovaného odstranění povolte obnovitelné odstranění v účtu úložiště. Umožňuje vám "zrušit odstranění" souborů, pokud existují falešně pozitivní výsledky nebo v případech, kdy odborníci na zabezpečení chtějí prošetřit škodlivé soubory.

  • Přesuňte škodlivý soubor do karantény – Přesuňte soubory do vyhrazeného kontejneru úložiště nebo účtu úložiště, které se považují za karanténu. Můžete chtít, aby k tomuto vyhrazenému kontejneru nebo účtu úložiště měli oprávnění jenom někteří uživatelé, jako je správce zabezpečení nebo analytik SOC.

Nastavení automatizace

Možnost 1: Aplikace logiky založená na programu Microsoft Defender for Cloud Security Alerts

Odpovědi založené na Logic App jsou jednoduchý, no-code přístup k nastavení automatizovaných reakcí na nápravu. Doba odezvy je však pomalejší než u event-driven Function App založené na událostech Event Grid.

  1. Nasaďte šablonu DeleteBlobLogicApp Azure Resource Manageru (ARM) pomocí webu Azure Portal.

  2. Vyberte aplikaci logiky, kterou jste nasadili.

  3. Pro účely odstranění blobů z vašeho účtu úložiště, přidejte do aplikace Logic App přiřazení role:

    1. V boční nabídce přejděte na Identita a vyberte přiřazení rolí Azure.

      Snímek obrazovky, který ukazuje, jak nastavit přiřazení role pro automatizaci pracovního postupu pro reakci na výsledky kontroly

    2. Přidejte přiřazení role na úrovni předplatného s rolí Storage Blob Data Contributor.

    3. Vytvořte automatizaci pracovních postupů pro upozornění Microsoft Defenderu pro cloud:

      1. Na webu Azure Portal přejděte do Programu Microsoft Defender for Cloud .
      2. V boční nabídce přejděte do automatizace pracovního postupu.
      3. Přidejte nový pracovní postup: V poli Název upozornění obsahuje vyplňte škodlivý soubor nahraný do úložiště a zvolte Logic App v části Akce.
      4. Vyberte Vytvořit.

      Snímek obrazovky, který ukazuje, jak nastavit automatizaci pracovního postupu pro reakci na výsledky kontroly

Možnost 2: Aplikace funkcí založená na událostech Event Gridu

Aplikace funkcí poskytuje vysoký výkon s nízkou latencí doby odezvy.

Krok 1: Vytvoření vlastního tématu Event Gridu

Před připojením aplikace Function App nastavte vlastní téma služby Event Grid pro příjem výsledků skenování.

  1. Na portálu Azure vyhledejte témata Event Gridu a vyberte Vytvořit.
  2. Nastavte oblast do stejné oblasti jako váš účet úložiště. Doručování mezi oblastmi se nepodporuje u událostí kontroly malwaru.
  3. Jako typ schématu vyberte schéma Event Gridu .
  4. V části Sítě povolte přístup z veřejných IP adres. Témata dostupná pouze přes privátní koncový bod nemohou přijímat události z Defender for Storage.
  5. Po vytvoření tématu zkopírujte koncový bod tématu a přístupový klíč – budete je potřebovat ke konfiguraci Defender pro úložiště.

Chcete-li nastavit, aby Defender for Storage odesílal výsledky skenování do vlastního tématu Event Gridu, které jste vytvořili, podívejte se na Nastavení Event Grid pro skenování malwaru.

Krok 2: Vytvoření a konfigurace aplikace funkcí
  1. Vytvořte Function App ve stejné skupině prostředků jako chráněný účet úložiště.

  2. Přidejte identitě aplikace Function App přiřazení role.

    1. V boční nabídce přejděte na Identita, ujistěte se, že je stav identity přiřazený systémem zapnutý, a vyberte přiřazení rolí Azure.
    2. Přidejte přiřazení role na úrovni předplatného nebo účtu úložiště s rolí Přispěvatel dat objektů blob služby Storage .
  3. V tématu Event Gridu vyberte + Odběr událostí, nastavte typ koncového bodu na Azure Funkce a jako koncový bod vyberte svou aplikaci Funkcí.

Krok 3: Volba šablony aplikace funkcí

Vyberte šablonu, která odpovídá cíli nápravy:

Goal Template
Přesuňte škodlivé bloby do karantény MoveMaliciousBlobEventTrigger
Automatické odstraňování škodlivých objektů blob Použijte šablonu přesunutí jako základ; po kontrole nahraďte logiku kopírování a odstranění přímým voláním scanResultType == "Malicious". Nejprve povolte měkké odstranění, aby bylo možné obnovení v případě falešně pozitivních nálezů.
Odeslání upozornění nebo oznámení Přidejte volání HTTP do koncového bodu upozornění (například webhook Teams, PagerDuty nebo ServiceNow) při scanResultType == "Malicious". Podrobnosti najdete v článku o výstupní vazbě HTTP služby Azure Functions.

Alternativně použijte operace kopírování blobů v Azure Storage k zkopírování blobu jinam a pak blob smažte ze zdroje.

Pro každý výsledek kontroly se událost odešle podle následujícího schématu.

Struktura zpráv události

Zpráva události je objekt JSON, který obsahuje páry klíč-hodnota, které poskytují podrobné informace o výsledku kontroly malwaru. Tady je rozpis jednotlivých klíčů ve zprávě události:

  • ID: Jedinečný identifikátor události.

  • subject: Řetězec, který popisuje cestu k naskenovanému blobu (souboru) v účtu úložiště.

  • data: Objekt JSON, který obsahuje další informace o události:

    • correlationId: Jedinečný identifikátor, který můžete použít ke korelaci více událostí souvisejících se stejnou kontrolou.

    • blobUri: Identifikátor URI naskenovaného objektu blob (souboru) v účtu úložiště.

    • eTag: ETag skenovaného objektu blob (souboru).

      • scanFinishedTimeUtc: Časové razítko UTC označující moment dokončení kontroly.

      • scanResultType: Výsledek kontroly, například škodlivénebo žádné hrozby.

      • scanResultDetails: Objekt JSON obsahující podrobnosti o výsledku kontroly:

        1. malwareNamesFound: Pole názvů malwaru nalezených v naskenovaném souboru.

        2. sha256: Hodnota hash SHA-256 naskenovaného souboru.

  • eventType: Řetězec, který označuje typ události, v tomto případě Microsoft.Security.MalwareScanningResult.

  • dataVersion: Číslo verze schématu dat.

  • metadataVersion: Číslo verze schématu metadat.

  • eventTime: Časové razítko UTC, kdy byla událost vygenerována.

  • téma: Cesta ke zdroji tématu Event Grid, ke kterému událost patří.

Tady je příklad zprávy události:

{
  "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>"
}

Když pochopíte strukturu zprávy události, můžete extrahovat relevantní informace o výsledku kontroly malwaru a odpovídajícím způsobem ji zpracovat.

Ukázkové payloady pro testování

Pomocí těchto ukázkových payloadů otestujte logiku obsluhy událostí před připojením k živým výsledkům skenování.

Nenašly se žádné hrozby:

{
  "id": "bbbb1111-cc22-3333-44dd-555555eeeeee",
  "subject": "storageAccounts/<storage_account_name>/containers/uploads/blobs/clean-document.pdf",
  "data": {
    "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/uploads/clean-document.pdf",
    "eTag": "0x111111111111111",
    "scanFinishedTimeUtc": "2023-05-04T11:32:00.0000000Z",
    "scanResultType": "No threats found",
    "scanResultDetails": {
      "malwareNamesFound": [],
      "sha256": "BB22CC33DD44EE55FF66AA77BB88CC99DD00EE11"
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:32:00.0000000Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}

Neprohledáno (příliš velký blob):

{
  "id": "cccc2222-dd33-4444-55ee-666666ffffff",
  "subject": "storageAccounts/<storage_account_name>/containers/uploads/blobs/large-archive.zip",
  "data": {
    "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/uploads/large-archive.zip",
    "eTag": "0x222222222222222",
    "scanFinishedTimeUtc": "2023-05-04T11:32:10.0000000Z",
    "scanResultType": "Not Scanned",
    "scanResultDetails": {
      "notScannedReason": "SAM259206: Not scanned - blob exceeded the maximum allowed size of 50 GB."
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:32:10.0000000Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}
Čtení kódů chyb SAM ze zpráv Event Gridu

Pokud Event Grid nemůže prohledat objekt blob, použije do pole typ neskenovaného výsledku notScannedReason a zahrne kód chyby SAM.

Pokud scanResultType je nastavená hodnota Not Scanned, zobrazí se kód chyby SAM jako součást data.scanResultDetails.notScannedReason hodnoty. Kód chyby je předpona před dvojtečkou (:).

Příklady:

"scanResultType": "Not Scanned",
"scanResultDetails": {
  "notScannedReason": "SAM259206: Not scanned - blob exceeded the maximum allowed size of 50 GB."
}

Zajištění povědomí o výsledcích kontroly malwaru v aplikacích a tocích dat

Kontrola malwaru se spouští téměř v reálném čase a obvykle existuje krátké časové období mezi nahráním souboru a jeho skenováním. Protože úložiště není výpočetní, škodlivé soubory se ve vašem úložišti nedají spustit. Riziko je, že uživatelé nebo aplikace používají škodlivé soubory a šíří je v celé organizaci.

Své aplikace a toky dat si můžete uvědomit o výsledcích kontroly malwaru. Tyto metody zajišťují, aby se soubory nepoužívaly ani nezpracovávaly, dokud:

  • Dokončení skenování
  • Výsledky kontroly jsou k dispozici.
  • Na základě výsledků provedete odpovídající akce.

Aplikace zpracovávají data na základě výsledku skenu.

Použijte tyto vzory k tomu, aby následné aplikace zpracovávaly blobs až poté, co skenování malwaru Defender for Storage hlásí čistý výsledek.

Možnost 1: Aplikace kontrolující „značku indexu“ před zpracováním

Aktualizujte všechny aplikace, které používají účet úložiště. Každá aplikace zkontroluje výsledek kontroly jednotlivých souborů a pokud je výsledek kontroly značky indexu objektů blobbez hrozeb, aplikace načte blob.

Možnost 2: Připojení aplikace k webhooku v událostech Event Gridu

Připojte aplikaci k webhooku v událostech Event Gridu a použijte tyto události k aktivaci relevantních procesů pro soubory bez hrozeb nalezených výsledků kontroly. Přečtěte si další informace o používání doručování událostí Webhooku a ověřování koncového bodu.

Použití zprostředkujícího účtu úložiště jako DMZ

Nastavte meziskladový účet pro nedůvěryhodný obsah (DMZ) a směrujte nahrávaný provoz do DMZ. V nedůvěryhodném účtu úložiště povolte kontrolu malwaru a připojte Event Grid a Function App, aby se do cílového účtu úložiště přesunuly pouze objekty blob, u kterých byl výsledek nebyly nalezeny žádné hrozby.

Diagram znázorňující, jak nastavit meziskladový účet jako DMZ.

Řešení potíží s doručováním událostí

Pokud události s výsledky skenování nepřicházejí do vašeho koncového bodu, použijte následující kontroly k identifikaci a vyřešení problému.

Události se nedoručí do aplikace Function App nebo webhooku.

Symptom Možná příčina Resolution
Po nahrání souboru nebyly přijaty žádné události. Téma Event Gridu není nakonfigurované pro účet úložiště Ověřte, že je vlastní téma Event Gridu nastavené v nastavení Microsoft Defender for Cloud účtu úložiště. Viz Nastavení Event Gridu pro kontrolu malwaru.
Po nahrání souboru nebyly přijaty žádné události. Odběr událostí se nevytvořil Ověřte, že pro vlastní téma existuje odběr událostí, jehož koncovým bodem je vaše Function App nebo webhook.
Události se doručí, ale aplikace Function App se nespustí. Čeká se na ověření koncového bodu odběru událostí Event Grid odešle ověřovací událost při vytváření odběru. Pokud koncový bod neodpovídá ověřovacím kódem, doručení se pozastaví. Viz doručování událostí webhooku.
Události se přestanou doručovat Koncový bod, který vrací chyby HTTP 4xx nebo 5xx Event Grid se opakovaně pokouší o doručení s exponenciálně se prodlužujícími intervaly po dobu až 24 hodin. Podrobnosti o chybách najdete v protokolech aplikace Function App v Application Insights nebo na kartě Monitorování .

Chyby oprávnění

  • Event Grid nemůže publikovat do vlastního tématu: Ověřte, že instanční objekt služby Microsoft Defender for Storage má ve vašem tématu služby Event Grid roli EventGrid Data Sender nebo že téma umožňuje anonymní publikování. Defender pro službu Storage používá k publikování událostí vlastní identitu služby.
  • Aplikace Function App nemůže odstranit ani přesunout objekty blob: Ověřte, že systémem přiřazená spravovaná identita aplikace Function App má ve zdrojovém účtu úložiště (a v cílovém účtu při přesunu do karantény) přiřazenou roli Přispěvatel k datům objektů blob úložiště. Zkontrolujte zamítavá přiřazení, která by mohla blokovat identitu.

Problémy se sítí a firewallem

  • Téma Event Gridu za privátním koncovým bodem: Defender pro službu Storage nemůže doručovat témata event Gridu, která přijímají pouze připojení privátního koncového bodu. Vlastní téma musí povolit přístup z veřejných IP adres.
  • Aplikace funkcí ve virtuální síti: Pokud aplikace funkcí běží ve virtuální síti s omezeními odchozích přenosů, ujistěte se, že se aplikace Funkcí může spojit s účtem úložiště a všemi dalšími službami, které potřebuje volat (například koncový bod oznámení).

Ověření předplatného

Když vytvoříte nebo aktualizujete odběr událostí, který používá koncový bod webhooku, služba Event Grid odešle událost ověření odběru. Váš endpoint musí vrátit validationCode z těla požadavku. Běžné důvody selhání ověření:

  • Koncový bod ještě není nasazen nebo při vytvoření předplatného nenaslouchá.
  • Koncový bod vrátí stavový kód HTTP, který není 200.
  • Koncový bod nereaguje zpět validationCode v textu odpovědi.

Pokud chcete znovu aktivovat ověřování, odstraňte a znovu vytvořte odběr událostí nebo použijte možnost Znovu ověřit na portálu Azure.

Ověření doručení události na portálu Azure

  1. Přejděte do vlastního tématu Event Gridu.
  2. Vyberte Metriky a zkontrolujte počet publikovaných událostí, odpovídajících událostí a neúspěšných doručení .
  3. Vyberte Odběry událostí a zkontrolujte stav předplatného.
  4. V případě neúspěšných doručení vyberte možnost Dead Letter (pokud je nakonfigurována) a zkontrolujte nedoručené události.

Další krok