Skapa anpassade standarder och rekommendationer i Microsoft Defender för molnet

Säkerhetsrekommendationer i Microsoft Defender för molnet hjälpa dig att förbättra och förstärka din säkerhetsstatus. Rekommendationerna baseras på utvärderingar mot säkerhetsstandarder som definierats för Azure prenumerationer, Amazon Web Services-konton (AWS) och Google Cloud Platform-projekt (GCP) som har Defender för molnet aktiverat.

I den här artikeln beskrivs hur du:

  • Skapa anpassade rekommendationer för alla moln (Azure, AWS och GCP) med en KQL-fråga (Kusto Query Language).
  • Tilldela anpassade rekommendationer till en anpassad säkerhetsstandard.

Förutsättningar

Innan du skapar skräddarsydda rekommendationer eller standarder, se till att du uppfyller följande krav:

  • Du behöver ägarbehörigheter för prenumerationen för att skapa en ny säkerhetsstandard.
  • Du behöver behörigheter som säkerhetsadministratör för att skapa anpassade rekommendationer.
  • Om du vill skapa anpassade rekommendationer baserat på Kusto Query Language (KQL) måste du ha planen Defender CSPM (Cloud Security Posture Management) aktiverad. Alla kunder kan skapa anpassade rekommendationer baserat på Azure Policy.
  • Granska stödet i Azure-moln för anpassade rekommendationer.

Vi rekommenderar att du tittar på det här avsnittet av Defender för molnet i fältet för att lära dig mer om anpassade rekommendationer och hur du skriver KQL-frågor.

Skapa en anpassad rekommendation

Skapa anpassade rekommendationer, inklusive steg för reparation, allvarlighetsgrad och de standarder som rekommendationen ska tilldelas till. Du lägger till rekommendationslogik med KQL. Du kan använda en enkel frågeredigerare med inbyggda frågemallar som du kan justera efter behov, eller så kan du skriva din KQL-fråga från grunden.

Så här skapar du en anpassad rekommendation:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet>Miljöinställningar> för den aktuella prenumerationen.

  3. Välj Säkerhetsprinciper>+ Skapa anpassad rekommendation.

    Skärmbild av sidan Microsoft Defender för molnet Säkerhetsprinciper med åtgärden Skapa anpassad rekommendation markerad.

  4. Ange information: Obligatoriskt: Namn, omfattning, allvarlighetsgrad och säkerhetsproblem. Valfritt: Beskrivning, Reparation.

  5. Klicka på Nästa.

  6. Ange en KQL-fråga eller välj Öppna frågeredigeraren.

    Skärmbild av det anpassade rekommendationsflödet med åtgärden Öppna frågeredigeraren som används för att starta KQL-redigeraren.

  7. Klicka på Nästa.

  8. Välj relevanta standarder för rekommendationen.

    Skärmbild av informationsfönstret Microsoft Defender för molnet Rekommendation med fält för namn, allvarlighetsgrad och tilldelade standarder.

  9. Klicka på Nästa.

  10. Välj de anpassade standarder som ska tilldelas.

  11. Välj Granska och skapa.

  12. Granska rekommendationens detaljer.

  13. Välj Skapa.

    Skärmbild av Microsoft Defender för molnet Granska och skapa sida som visar rekommendationssammanfattning före sändning.

Använda frågeredigeraren

Vi rekommenderar att du använder frågeredigeraren för att skapa en rekommendationsfråga. Du kan också använda de angivna frågemallarna och exemplen för att visa exempelfrågor och lära dig hur du skapar egna.

  • Med redigeraren kan du skapa och testa din fråga innan du börjar använda den.
  • Välj Så här får du hjälp med att strukturera frågan och ytterligare instruktioner och länkar.
  • Redigeraren innehåller inbyggda frågeexempel för rekommendationer som du kan använda för att skapa en egen fråga. Data visas i samma struktur som i API:et.
  1. Välj Ny fråga.

    Skärmbild av frågeredigeraren med Ny fråga vald för att börja skriva en rekommendationsfråga.

  2. Använd exempelfrågemallen med dess instruktioner eller välj ett exempel på en inbyggd rekommendationsfråga från den nedre delen av sidan för att komma igång.

  3. Välj Kör fråga för att testa frågan du skapade.

  4. När frågan är klar klipper du ut och klistrar in den från redigeraren i frågefönstret Rekommendation .

  5. Välj Nästa, välj de relevanta standarderna för rekommendationen, välj de anpassade standarder som ska tilldelas och välj sedan Granska och skapa.

  6. Gå igenom rekommendationsdetaljerna och välj Skapa.

Frågemallar och exempel

Frågeredigeraren innehåller inbyggda exempel, och mallarna i det här avsnittet visar hur du strukturerar vanliga säkerhetskontroller. Varje mall returnerar resurser i omfånget och markerar icke-kompatibla resurser som UNHEALTHY. I det här mallmönstret redigerar du bara condition uttrycket och håller HealthStatus raden oförändrad.

Anmärkning

Mallarna i det här avsnittet använder Azure resurstyper. För AWS- och GCP-resurser ändrar du Environment == 'Azure' till Environment == 'AWS' eller Environment == 'GCP' och uppdaterar Identifiers.Type för att matcha resurstypen i din miljö.

Identifiera virtuella datorer som saknar obligatoriska styrningstaggar, till exempel kostnadsställe- eller ägarinformation.

RawEntityMetadata
| where Environment == 'Azure' and Identifiers.Type =~ 'Microsoft.Compute/virtualMachines'
| extend condition = (isnull(Record.tags["CostCenter"]) or isnull(Record.tags["Owner"]))
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')
| project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Utdatakolumner:Id, Name, Environment, Identifiers, AdditionalData, , RecordHealthStatus

Utvärderingslogik: Datorer som saknar obligatoriska taggar har HealthStatus angetts till UNHEALTHY och visas som icke-kompatibla resultat. Datorer med båda taggarna har HealthStatus inställt på HEALTHY.

Krav för KQL-utdataschema

Innan du skriver frågan bör du förstå det obligatoriska utdataschemat. Så här tolkar Microsoft Defender för molnet dina resultat och mappar resultat till resurser.

Obligatoriska utdatakolumner:

Column Type Syfte
Id Sträng (krävs) Resursidentifierare som används av Defender för molnet för att referera till resursen.
Name Sträng (krävs) Mänskligt läsbart resursnamn som visas i resultaten.
Environment Sträng (krävs) Molnmiljö: Azure, AWS eller GCP.
Identifiers Dynamisk (krävs) Resurstypen och identifierare som vidarebefordras från källposten.
AdditionalData Dynamisk (krävs) Kompletterande resursmetadata som vidarebefordras från källposten.
Record Dynamisk (krävs) Fullständig resurspost som innehåller alla egenskaper.
HealthStatus Sträng (krävs) Utvärderingsresultat: UNHEALTHY (inkompatibel) eller HEALTHY (kompatibel).

Avsluta alltid frågan med: | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Bedömningsmappning:

Varje fråga måste ange ett HealthStatus värde för varje resurs. Använd följande mönster som kärnlogik för hälsoutvärdering i din anpassade rekommendationsfråga, och ersätt platshållarvillkoret med ditt eget test:

| extend condition = (your condition here)
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')

I det här mönstret redigerar du endast condition uttrycket. Behåll följande HealthStatus uttryck oförändrat i din sökning så att Defender för molnet kan klassificera matchande resurser som kompatibla eller icke-kompatibla:

| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')

Resurser där HealthStatus är UNHEALTHY visas som icke-kompatibla resultat i Defender för molnet. Resurser där HealthStatus är HEALTHY kompatibla och visas inte i resultat.

Important

Ställ alltid in HealthStatus på antingen 'UNHEALTHY' eller 'HEALTHY'. Returnera alla resurser som omfattas. Defender för molnet använder kolumnen HealthStatus för att fastställa efterlevnad. Att utelämna resurser från resultatuppsättningen behandlas som inga data, inte som felfria.

Vanliga fel och lösningar

  • Obligatoriska kolumner saknas: Om någon av de sju obligatoriska kolumnerna saknas misslyckas frågan. Avsluta alltid med | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus.
  • Felaktiga HealthStatus värden: Endast 'UNHEALTHY' och 'HEALTHY' är giltiga värden (skiftlägeskänsligt). Andra värden eller null orsakar parsningsfel.
  • Felaktiga egenskapssökvägar: Egenskaper nås via Record.properties.*, inte direkt. Använd till exempel Record.properties.httpsOnly, inte properties.httpsOnly.
  • Resurstypers skiftlägeskänslighet: Använd =~ (skiftlägesokänslig matchning) för Identifiers.Type-jämförelser. Till exempel Identifiers.Type =~ 'Microsoft.Storage/storageAccounts'.
  • Null-egenskaper mellan prenumerationer: Testa din fråga mellan prenumerationer med olika konfigurationer. Använd isnull()-kontroller där egenskaper kan saknas.

Använda anpassade rekommendationer i stor skala

Att skapa anpassade rekommendationer i Azure portalen är bäst för de flesta användare. Gränssnittet ger en praktisk KQL-redigerare och inbyggda valideringsverktyg. En programmatisk metod kan också vara användbar när du behöver distribuera rekommendationer i många miljöer eller prenumerationer.

Automatisera via API:et

Om du fördevaliderade KQL-frågor och vill automatisera skapandet av anpassade rekommendationer kan du använda Microsoft Defender för molnet-API:et. Med den här metoden kan du distribuera rekommendationer snabbt och se till att de är konsekventa och skalbara i dina molnmiljöer.

  • Fördelar: Du kan automatisera och skala distributionen av anpassade rekommendationer.
  • När du ska använda: Den här metoden är idealisk för storskaliga implementeringar där du måste tillämpa rekommendationer konsekvent i flera miljöer.

Mer information om att använda API:et för att hantera anpassade rekommendationer finns i Defender för molnet Composite API-referensen.

Skapa en anpassad standard

Anpassade rekommendationer kan tilldelas till en eller flera anpassade standarder.

Så här skapar du en anpassad standard:

  1. Logga in på Azure-portalen.

  2. Gå till Microsoft Defender för molnet>Miljöinställningar> för den aktuella prenumerationen.

  3. Välj Säkerhetsprinciper>+ Skapa>standard.

  4. Välj de rekommendationer som du vill lägga till i den anpassade standarden.

  5. (Valfritt) För Azure prenumerationer läser du kolumnen Källa.

    Sida för att skapa en anpassad standard i Microsoft Defender för molnet, som visar en lista över tillgängliga rekommendationer för urval.

  6. Välj Skapa.

Skapa och förbättra anpassade rekommendationer med Azure Policy (äldre)

För Azure-prenumerationer kan du skapa anpassade rekommendationer och standarder och förbättra dem med hjälp av Azure Policy. Det här är en äldre funktion och vi rekommenderar att du använder den nya funktionen för anpassade rekommendationer.

Skapa en anpassad rekommendation och standard (äldre)

Du kan skapa anpassade rekommendationer och standarder i Defender för molnet genom att skapa principdefinitioner och initiativ i Azure Policy och registrera dem i Defender för molnet.

Så här skapar du en anpassad rekommendation eller standard med Azure Policy (äldre):

  1. Skapa en eller flera policydefinitioner i Azure Policy-portalen, eller skapa policydefinitioner programmatiskt.
  2. Skapa ett principinitiativ som innehåller anpassade principdefinitioner.

Lägg till initiativet som en anpassad standard (äldre)

Principtilldelningar används av Azure Policy för att tilldela Azure-resurser till en princip eller ett initiativ.

Om du vill publicera ett initiativ till en anpassad säkerhetsstandard i Defender för molnet måste du inkludera "ASC":"true" i begärandetexten som visas här. Fältet ASC ansluter initiativet till Microsoft Defender för molnet.

Så här registrerar du ett anpassat initiativ:

Exempel på att lägga till ett anpassat initiativ

Använd följande REST-förfrågan för att skapa eller uppdatera Azure Policy-initiativet som stöder din anpassade Defender för molnet-standard:

PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}?api-version=2021-06-01

Begärandetext (JSON):

{
    "properties": {
      "displayName": "Cost Management",
      "description": "Policies to enforce low cost storage SKUs",
      "metadata": {
        "category": "Cost Management",
        "ASC":"true"
      },
      "parameters": {
        "namePrefix": {
          "type": "String",
          "defaultValue": "myPrefix",
          "metadata": {
            "displayName": "Prefix to enforce on resource names"
          }
        }
      },
      "policyDefinitions": [
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/7433c107-6db4-4ad1-b57a-a76dce0154a1",
          "policyDefinitionReferenceId": "Limit_Skus",
          "parameters": {
            "listOfAllowedSKUs": {
              "value": [
                "Standard_GRS",
                "Standard_LRS"
              ]
            }
          }
        },
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
          "policyDefinitionReferenceId": "Resource_Naming",
          "parameters": {
            "prefix": {
              "value": "[parameters('namePrefix')]"
            },
            "suffix": {
              "value": "-LC"
            }
          }
        }
      ]
    }
  }

Exempel för att ta bort en tilldelning

För att ta bort en äldre anpassad standard från en prenumeration, använd följande REST-begäran för att ta bort policytilldelningen:

DELETE https://management.azure.com/{subscription}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2018-05-01

Förbättra anpassade rekommendationer (tidigare version)

De inbyggda rekommendationerna som medföljer Microsoft Defender för molnet innehåller information som allvarlighetsnivåer och reparationsinstruktioner. Om du vill lägga till den här typen av information i anpassade rekommendationer för Azure använder du REST-API:et.

De två typerna av information som du kan lägga till är:

  • RemediationDescription – sträng
  • Allvarlighetsgrad – enum [Låg, Medel, Hög]

Metadata ska läggas till i principdefinitionen för en princip som ingår i det anpassade initiativet. Metadatan ska finnas i egenskapen 'securityCenter', som visas:

{
  "metadata": {
    "securityCenter": {
      "RemediationDescription": "Custom description goes here",
      "Severity": "High"
    }
  }
}

Följande exempel visar en komplett anpassad policydefinition som inkluderar securityCenter metadata-egenskapen med detaljer om åtgärd och allvarlighetsgrad:

{
"properties": {
"displayName": "Security - ERvNet - AuditRGLock",
"policyType": "Custom",
"mode": "All",
"description": "Audit required resource groups lock",
"metadata": {
  "securityCenter": {
    "RemediationDescription": "Resource Group locks can be set via Azure Portal -> Resource Group -> Locks",
    "Severity": "High"
 }
},
"parameters": {
  "expressRouteLockLevel": {
    "type": "String",
    "metadata": {
      "displayName": "Lock level",
      "description": "Required lock level for ExpressRoute resource groups."
    },
    "allowedValues": [
      "CanNotDelete",
      "ReadOnly"
    ]
  }
},
"policyRule": {
  "if": {
    "field": "type",
    "equals": "Microsoft.Resources/subscriptions/resourceGroups"
  },
  "then": {
    "effect": "auditIfNotExists",
    "details": {
      "type": "Microsoft.Authorization/locks",
      "existenceCondition": {
        "field": "Microsoft.Authorization/locks/level",
        "equals": "[parameters('expressRouteLockLevel')]"
      }
    }
  }
}
}
}

Ett annat securityCenter-egenskapsexempel finns i REST API-exempel för utvärderingsmetadata.

Nästa steg

Du kan använda följande länkar för att lära dig mer om Kusto-frågor: