Erstellen von benutzerdefinierten Standards und Empfehlungen in Microsoft Defender for Cloud

Security-Empfehlungen in Microsoft Defender for Cloud helfen Ihnen, Ihren Sicherheitsstatus zu verbessern und zu erhärten. Empfehlungen basieren auf Bewertungen anhand von Sicherheitsstandards, die für Azure-Abonnements, Amazon Web Services (AWS)-Konten und Google Cloud Platform (GCP)-Projekte definiert sind, für die Defender for Cloud aktiviert ist.

In diesem Artikel wird beschrieben, wie Sie Folgendes ausführen:

  • Erstellen Sie benutzerdefinierte Empfehlungen für alle Clouds (Azure, AWS und GCP) mit einer Kusto Query Language (KQL)-Abfrage.
  • Weisen Sie benutzerdefinierte Empfehlungen einem benutzerdefinierten Sicherheitsstandard zu.

Bevor du anfängst

  • Sie benötigen Berechtigungen als Besitzer für das Abonnement, um einen neuen Sicherheitsstandard zu erstellen.
  • Sie benötigen Berechtigungen als Sicherheitsadministrator, um benutzerdefinierte Empfehlungen zu erstellen.
  • Um benutzerdefinierte Empfehlungen basierend auf der Kusto Query Language (KQL) zu erstellen, müssen Sie den Defender Cloud Security Posture Management (CSPM)-Plan aktiviert haben. Alle Kunden können benutzerdefinierte Empfehlungen basierend auf Azure Policy erstellen.
  • Überprüfen Sie den Support in Azure-Clouds auf benutzerdefinierte Empfehlungen.

Wir empfehlen, diese Episode von Defender for Cloud im Feld zu sehen, um mehr über benutzerdefinierte Empfehlungen und das Schreiben von KQL-Abfragen zu erfahren.

Erstellen einer benutzerdefinierten Empfehlung

Erstellen Sie benutzerdefinierte Empfehlungen, einschließlich der Schritte zur Wartung, zum Schweregrad und zu den Standards, denen die Empfehlung zugewiesen werden soll. Sie fügen Empfehlungslogik mit KQL hinzu. Sie können einen einfachen Abfrage-Editor mit integrierten Abfragevorlagen verwenden, die Sie nach Bedarf optimieren können, oder Sie können Ihre KQL-Abfrage von Grund auf neu schreiben.

So erstellen Sie eine benutzerdefinierte Empfehlung:

  1. Melden Sie sich im Azure-Portal an.

  2. Wechseln Sie zu Microsoft Defender for Cloud>Umgebungseinstellungen> zum entsprechenden Abonnement.

  3. Wählen Sie Sicherheitsrichtlinien>+ Benutzerdefinierte Empfehlung erstellen.

    Screenshot der Seite Microsoft Defender for Cloud Sicherheitsrichtlinien mit hervorgehobener Option

  4. Geben Sie die Details ein: Name, Bereich, Schweregrad und Sicherheitsproblem. Optional: Beschreibung, Korrektur.

  5. Wählen Sie Weiteraus.

  6. Geben Sie eine KQL-Abfrage ein, oder wählen Sie "Abfrage-Editor öffnen" aus.

    Screenshot des benutzerdefinierten Empfehlungsflusses mit der Aktion

  7. Wählen Sie Weiteraus.

  8. Wählen Sie die relevanten Standards für die Empfehlung aus.

    Screenshot des Detailbereichs mit den Empfehlungsdetails in Microsoft Defender for Cloud mit Feldern für Name, Schweregrad und zugewiesene Standards.

  9. Wählen Sie Weiteraus.

  10. Wählen Sie die zuzuweisenden benutzerdefinierten Standards aus.

  11. Klicken Sie auf Überprüfen und erstellen.

  12. Überprüfen Sie die Empfehlungsdetails.

  13. Wählen Sie "Erstellen" aus.

    Screenshot der Microsoft Defender for Cloud-Seite „Überprüfen und erstellen“ mit angezeigter Empfehlungszusammenfassung vor dem Übermitteln.

Verwenden des Abfrage-Editors

Wir empfehlen die Verwendung des Abfrageeditors zum Erstellen einer Empfehlungsabfrage. Sie können auch die bereitgestellten Abfragevorlagen und Beispiele verwenden, um Beispielabfragen anzuzeigen und zu erfahren, wie Sie Eigene erstellen.

  • Mithilfe des Editors können Sie Ihre Abfrage erstellen und testen, bevor Sie diese verwenden.
  • Wählen Sie So geht‘s aus, um Hilfe zur Strukturierung der Abfrage und zusätzliche Anweisungen und Links zu erhalten.
  • Der Editor enthält integrierte Empfehlungsabfragebeispiele, mit denen Sie Ihre eigene Abfrage erstellen können. Die Daten werden mit derselben Struktur wie in der API angezeigt.
  1. Wählen Sie "Neue Abfrage" aus.

    Screenshot des Abfrage-Editors mit ausgewählter

  2. Verwenden Sie die Beispielabfragevorlage mit ihren Anweisungen, oder wählen Sie eine integrierte Beispielempfehlungsabfrage aus dem unteren Teil der Seite aus, um zu beginnen.

  3. Wählen Sie Abfrage ausführen aus, um die von Ihnen erstellte Abfrage zu testen.

  4. Wenn die Abfrage fertig ist, schneiden Sie sie aus, und fügen Sie sie aus dem Editor in den Abfragebereich "Empfehlung" ein.

  5. Fahren Sie mit Schritt 7 im Abschnitt "Erstellen einer benutzerdefinierten Empfehlung" fort.

Abfragevorlagen und Beispiele

Der Abfrage-Editor enthält integrierte Beispiele, und die Vorlagen in diesem Abschnitt zeigen, wie allgemeine Sicherheitsprüfungen strukturiert werden. Jede Vorlage liefert Ressourcen im Geltungsbereich und kennzeichnet nicht konforme Ressourcen als UNHEALTHY. Bearbeiten Sie in diesem Vorlagenmuster nur den condition Ausdruck, und behalten Sie die HealthStatus Zeile unverändert.

Note

Die Vorlagen in diesem Abschnitt verwenden Azure Ressourcentypen. Ändern Sie für AWS- und GCP-Ressourcen Environment == 'Azure' in Environment == 'AWS' oder Environment == 'GCP', und aktualisieren Sie Identifiers.Type entsprechend dem Ressourcentyp in Ihrer Umgebung.

Identifizieren Sie virtuelle Maschinen, denen obligatorische Governance-Tags fehlen, z. B. Kostenstellen- oder Besitzerinformationen.

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

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

Bewertungslogik: Maschinen, bei denen erforderliche Tags fehlen, haben HealthStatus auf UNHEALTHY gesetzt und werden als nicht konforme Ergebnisse angezeigt. Maschinen, bei denen beide Tags gesetzt sind, haben HealthStatus auf HEALTHY gesetzt.

Anforderungen an das KQL-Ausgabeschema

Bevor Sie Ihre Abfrage schreiben, verstehen Sie das erforderliche Ausgabeschema. So interpretiert Microsoft Defender for Cloud Ihre Ergebnisse und ordnet Ergebnisse Ressourcen zu.

Erforderliche Ausgabespalten:

Column Type Purpose
Id Zeichenfolge (erforderlich) Ressourcenbezeichner, der von Defender for Cloud verwendet wird, um auf die Ressource zu verweisen.
Name Zeichenfolge (erforderlich) In Ergebnissen angezeigter menschenlesbarer Ressourcenname.
Environment Zeichenfolge (erforderlich) Cloudumgebung: Azure, AWS oder GCP.
Identifiers Dynamisch (erforderlich) Ressourcentyp und Kennungen, die aus dem Quelldatensatz übernommen werden.
AdditionalData Dynamisch (erforderlich) Ergänzende Ressourcenmetadaten, die aus dem Quelldatensatz übergeben werden.
Record Dynamisch (erforderlich) Vollständiger Ressourcendatensatz, der alle Eigenschaften enthält.
HealthStatus Zeichenfolge (erforderlich) Bewertungsergebnis: UNHEALTHY (nicht konform) oder HEALTHY (konform).

Beenden Sie Ihre Abfrage immer mit: | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Bewertungszuordnung:

Jede Abfrage muss einen HealthStatus Wert für jede Ressource festlegen. Verwenden Sie die iff() Funktion, um Ihre Bedingung auszuwerten und den Status zuzuweisen:

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

Bearbeiten Sie in diesem Muster nur den condition Ausdruck. Behalten Sie die HealthStatus Zeile unverändert bei:

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

Ressourcen, bei denen HealthStatusUNHEALTHY ist, werden in Defender for Cloud als nicht konforme Erkenntnisse angezeigt. Ressourcen, bei denen HealthStatusHEALTHY ist, sind konform und erscheinen nicht in den Ergebnissen.

Von Bedeutung

Legen Sie HealthStatus immer auf 'UNHEALTHY' oder 'HEALTHY' fest. Alle Ressourcen im Geltungsbereich zurückgeben. Defender for Cloud verwendet die Spalte HealthStatus, um die Compliance zu ermitteln. Das Auslassen von Ressourcen aus der Ergebnismenge wird als fehlende Daten interpretiert, nicht als in Ordnung.

Allgemeine Fehler und Korrekturmaßnahmen:

  • Fehlende erforderliche Spalten: Wenn eine der sieben erforderlichen Spalten fehlt, schlägt die Abfrage fehl. Enden Sie immer mit | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus.
  • Ungültige HealthStatus Werte: Nur 'UNHEALTHY' und 'HEALTHY' sind gültige Werte (Groß-/Kleinschreibung beachten). Andere Werte oder NULL verursachen Analysefehler.
  • Falsche Eigenschaftspfade: Auf Eigenschaften wird über Record.properties.* zugegriffen, nicht direkt. Verwenden Sie beispielsweise Record.properties.httpsOnly, nicht properties.httpsOnly.
  • Groß-/Kleinschreibung des Ressourcentyps: Verwenden Sie =~ (Übereinstimmung ohne Berücksichtigung der Groß-/Kleinschreibung) für Identifiers.Type-Vergleiche. Beispiel: Identifiers.Type =~ 'Microsoft.Storage/storageAccounts'
  • Null-Eigenschaften für Abonnements: Testen Sie Ihre Abfrage für Abonnements mit unterschiedlichen Konfigurationen. Verwenden Sie isnull() Prüfungen, wenn Eigenschaften fehlen können.

Verwenden von benutzerdefinierten Empfehlungen im großen Stil

Das Erstellen benutzerdefinierter Empfehlungen im Azure Portal eignet sich am besten für die meisten Benutzer. Die Schnittstelle bietet einen praktischen KQL-Editor und integrierte Validierungstools. Ein programmgesteuerter Ansatz kann auch hilfreich sein, wenn Sie Empfehlungen in vielen Umgebungen oder Abonnements bereitstellen müssen.

Automatisieren über die API

Wenn Sie KQL-Abfragen vorabvalidiert haben und das Erstellen benutzerdefinierter Empfehlungen automatisieren möchten, können Sie die Microsoft Defender for Cloud-API verwenden. Mit dieser Methode können Sie Empfehlungen schnell bereitstellen und gleichzeitig sicherstellen, dass sie in Ihren Cloudumgebungen konsistent und skalierbar sind.

  • Vorteile: Sie können die Bereitstellung von benutzerdefinierten Empfehlungen automatisieren und skalieren.
  • Anwendungsfälle: Diese Methode eignet sich ideal für Implementierungen im großen Stil, bei denen Sie Empfehlungen konsistent in mehreren Umgebungen anwenden müssen.

Weitere Informationen zur Verwendung der API zum Verwalten benutzerdefinierter Empfehlungen finden Sie in der Defender for Cloud Composite API-Referenz.

Einen benutzerdefinierten Standard erstellen

Benutzerdefinierte Empfehlungen können einem oder mehreren benutzerdefinierten Standards zugewiesen werden.

So erstellen Sie einen benutzerdefinierten Standard:

  1. Melden Sie sich im Azure-Portal an.

  2. Wechseln Sie zu Microsoft Defender for Cloud>Umgebungseinstellungen> zum entsprechenden Abonnement.

  3. Wählen Sie Sicherheitsrichtlinien>+ Erstellen>Standard aus.

  4. Wählen Sie die Empfehlungen aus, die Sie dem benutzerdefinierten Standard hinzufügen möchten.

  5. (Optional) Überprüfen Sie für Azure Abonnements die Spalte "Quelle".

    Seite zum Erstellen benutzerdefinierter Standards in Microsoft Defender for Cloud mit der Liste der verfügbaren Empfehlungen zur Auswahl.

  6. Wählen Sie "Erstellen" aus.

Erstellen und Verbessern von benutzerdefinierten Empfehlungen mit Azure Policy (Legacy)

Für Azure-Abonnements können Sie benutzerdefinierte Empfehlungen und Standards erstellen und diese mithilfe von Azure Policy verbessern. Dies ist ein Legacyfeature, und wir empfehlen die Verwendung des neuen Features für benutzerdefinierte Empfehlungen.

Erstellen einer benutzerdefinierten Empfehlung und eines Standards (Legacy)

Sie können benutzerdefinierte Empfehlungen und Standards in Defender for Cloud erstellen, indem Sie Richtliniendefinitionen und Initiativen in Azure Policy erstellen und in Defender for Cloud integrieren.

So erstellen Sie eine benutzerdefinierte Empfehlung oder einen Standard mit Azure Policy (Legacy):

  1. Erstellen Sie im Azure Policy-Portal oder programmgesteuert mindestens eine Richtliniendefinition.
  2. Erstellen Sie eine Richtlinieninitiative, die die benutzerdefinierten Richtliniendefinitionen enthält.

Initiative als benutzerdefinierten Standard (Altversion) einbinden

Richtlinienzuweisungen werden von Azure Policy verwendet, um Azure-Ressourcen einer Richtlinie oder Initiative zuzuweisen.

Um eine Initiative in einen benutzerdefinierten Sicherheitsstandard in Defender for Cloud zu integrieren, müssen Sie "ASC":"true" in den Anforderungstext einschließen, wie hier gezeigt. Mit dem Feld ASC wird das Onboarding der Initiative bei Microsoft Defender für Cloud durchgeführt.

So integrieren Sie eine benutzerdefinierte Initiative:

Beispiel für das Onboarding einer benutzerdefinierten Initiative

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

Anforderungstext (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"
            }
          }
        }
      ]
    }
  }

Beispiel für das Entfernen einer Zuweisung

Dieses Beispiel zeigt Ihnen, wie Sie eine Zuweisung entfernen:

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

Benutzerdefinierte Empfehlungen verbessern (veraltet)

Die integrierten Empfehlungen, die mit Microsoft Defender für Cloud bereitgestellt werden, enthalten Details wie Schweregrade und Korrekturanweisungen. Wenn Sie benutzerdefinierten Empfehlungen für Azure diesen Informationstyp hinzufügen möchten, verwenden Sie die REST-API.

Folgende zwei Arten von Informationen können Sie hinzufügen:

  • RemediationDescription: Zeichenfolge
  • Severity – Enum [Niedrig, Mittel, Hoch]

Die Metadaten sollten der Richtliniendefinition für eine Richtlinie hinzugefügt werden, die Teil der benutzerdefinierten Initiative ist. Es sollte sich in der Eigenschaft „securityCenter“ befinden, wie gezeigt:

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

Hier finden Sie ein weiteres Beispiel für eine benutzerdefinierte Richtlinie mit der Eigenschaft „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')]"
      }
    }
  }
}
}
}

Ein weiteres SecurityCenter-Eigenschaftsbeispiel finden Sie unter REST-API-Beispiele für Bewertungsmetadaten.

Nächste Schritte

Unter den folgenden Links erfahren Sie mehr über Kusto-Abfragen: