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.

Innan du börjar

  • 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. Välj 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. Välj 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. Välj 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. Fortsätt med steg 7 i avsnittet Skapa en anpassad rekommendation.

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.

Note

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 Purpose
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. iff() Använd funktionen för att utvärdera ditt villkor och tilldela statusen:

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

I det här mönstret redigerar du endast condition uttrycket. HealthStatus Behåll raden oförändrad:

| 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 principdefinitioner i Azure Policy-portalen eller 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

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

Det här exemplet visar hur du tar bort en tilldelning:

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. Den bör finnas i egenskapen "securityCenter", som du ser:

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

Här är ett annat exempel på en anpassad princip, inklusive egenskapen metadata/securityCenter:

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