Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
Logga in på Azure-portalen.
Gå till Microsoft Defender för molnet>Miljöinställningar> för den aktuella prenumerationen.
Välj Säkerhetsprinciper>+ Skapa anpassad rekommendation.
Ange information: Obligatoriskt: Namn, omfattning, allvarlighetsgrad och säkerhetsproblem. Valfritt: Beskrivning, Reparation.
Välj Nästa.
Ange en KQL-fråga eller välj Öppna frågeredigeraren.
Välj Nästa.
Välj relevanta standarder för rekommendationen.
Välj Nästa.
Välj de anpassade standarder som ska tilldelas.
Välj Granska och skapa.
Granska rekommendationens detaljer.
Välj Skapa.
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.
Välj Ny fråga.
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.
Välj Kör fråga för att testa frågan du skapade.
När frågan är klar klipper du ut och klistrar in den från redigeraren i frågefönstret Rekommendation .
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ö.
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
HealthStatusvä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 exempelRecord.properties.httpsOnly, inteproperties.httpsOnly. -
Resurstypers skiftlägeskänslighet: Använd
=~(skiftlägesokänslig matchning) förIdentifiers.Type-jämförelser. Till exempelIdentifiers.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:
Logga in på Azure-portalen.
Gå till Microsoft Defender för molnet>Miljöinställningar> för den aktuella prenumerationen.
Välj Säkerhetsprinciper>+ Skapa>standard.
Välj de rekommendationer som du vill lägga till i den anpassade standarden.
(Valfritt) För Azure prenumerationer läser du kolumnen Källa.
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):
- Skapa en eller flera principdefinitioner i Azure Policy-portalen eller programmatiskt.
- 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: