Übergang zum Microsoft Defender-Sicherheitsrisikomanagement
Microsoft Defender für Cloud vereinheitlicht alle Lösungen zur Sicherheitsrisikobewertung, um den Sicherheitsrisikoverwaltungsscanner von Microsoft Defender zu nutzen.
Das Microsoft Defender-Sicherheitsrisikomanagement ist in viele cloudeigene Anwendungsfälle integriert, z. B. Container für Liefer- und Laufzeitszenarien.
Die Defender for Cloud Containers-Sicherheitsrisikobewertung unterstützt von Qualys ist jetzt außer Kraft gesetzt. Wenn Sie noch nicht zuSicherheitsrisikenbewertungen für Azure mit Microsoft Defender-Sicherheitsrisikobewertung übergegangen sind, führen Sie die Schritte auf der Seite aus, um den Übergang zu unternehmen.
Schritt 1: Überprüfen, ob das Scannen aktiviert ist
Die Überprüfung der Sicherheitsrisikobewertung von Containern, die von Microsoft Defender-Sicherheitsrisikoverwaltung unterstützt wird, ist standardmäßig für Defender für Container, Defender for Container Registries (veraltet) und Defender Cloud Security Posture Management aktiviert. Organisationen, die sie deaktiviert haben, müssen die Sicherheitsrisikobewertung für agentenlose Container in einem der Pläne erneut aktivieren. Es wird automatisch für alle erwähnten Pläne aktiviert.
Weitere Informationen zum Aktivieren der Überprüfung von Microsoft Defender-Sicherheitsrisiken finden Sie unter Aktivieren der Sicherheitsrisikobewertung, die von Microsoft Defender-Sicherheitsrisikoverwaltung unterstützt wird.
Schritt 2: (Optional) Rest-API und Azure Resource Graph-Abfragen aktualisieren
Wenn Sie programmgesteuert über die Rest-API von Azure Resource Graph (ARG) oder Unterassessment-REST-API oder ARG-Abfragen auf Container-Sicherheitsrisikobewertungsergebnisse zugreifen, müssen Sie Ihre vorhandenen Abfragen so aktualisieren, dass sie mit dem neuen Schema und/oder der REST-API übereinstimmen, die von der neuen Sicherheitsrisikobewertung des Containers bereitgestellt wird, die von Microsoft Defender-Sicherheitsrisikoverwaltung unterstützt wird.
Der nächste Abschnitt enthält einige Beispiele, die ihnen helfen können, zu verstehen, wie vorhandene Abfragen für das Qualys-Angebot in gleichwertige Abfragen mit dem Microsoft Defender-Sicherheitsrisikoverwaltungsangebot übersetzt werden sollen.
Beispiele für ARG-Abfragen
Alle Azure Resource Graph-Abfragen, die für die Berichterstellung verwendet werden, sollten aktualisiert werden, um die zuvor aufgeführten Bewertungsschlüssel für die Sicherheitsrisikoverwaltung von Microsoft Defender widerzuspiegeln. Im Folgenden sind Beispiele aufgeführt, die Ihnen beim Übergang zu Microsoft Defender-Sicherheitsrisikoverwaltungsabfragen helfen.
Anzeigen fehlerhafter Containerimages
Qualys
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| where assessmentKey == "dbd0cb49-b563-45e7-9724-889e799fa648"
| project
Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id)),
ResourceType = tolower(split(id,"/").[6]),
subscriptionId,
severity = properties.status.severity,
status = properties.status.code,
VulnId = properties.id,
description = properties.displayName,
patchable = properties.additionalData.patchable,
cve = properties.additionalData.cve,
Repo = properties.additionalData.repositoryName,
imageDigest = properties.additionalData.imageDigest
| where status == 'Unhealthy'
Microsoft Defender-Sicherheitsrisikomanagement
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| where assessmentKey == "c0b7cfc6-3172-465a-b378-53c7ff2cc0d5"
| project
Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id)),
ResourceType = tolower(split(id,"/").[6]),
subscriptionId,
severity = properties.additionalData.vulnerabilityDetails.severity,
status = properties.status.code,
VulnId = properties.id,
description = properties.description,
fixStatus = properties.additionalData.softwareDetails.fixStatus,
Repo = properties.additionalData.artifactDetails.repositoryName,
imageUri = properties.resourceDetails.id
| where status == 'Unhealthy'
Anzeigen fehlerfreier Containerimages
Qualys
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| where assessmentKey == "dbd0cb49-b563-45e7-9724-889e799fa648"
| project
Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id)),
ResourceType = tolower(split(id,"/").[6]),
subscriptionId,
status = properties.status.code,
Repo = properties.additionalData.repositoryName,
imageDigest = properties.additionalData.imageDigest
| where status == 'Healthy'
Microsoft Defender-Sicherheitsrisikomanagement
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| where assessmentKey == "c0b7cfc6-3172-465a-b378-53c7ff2cc0d5"
| project
Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id)),
ResourceType = tolower(split(id,"/").[6]),
subscriptionId,
status = properties.status.code,
Repo = properties.additionalData.artifactDetails.repositoryName,
imageUri = properties.resourceDetails.id
| where status == 'Healthy'
Anzahl anfälliger Images nach Schweregrad
Qualys
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| extend status = tostring(parse_json(properties).status.code)
| extend severity = tostring(parse_json(properties).status.severity)
| extend vulId=tostring((properties).id)
| extend Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id))
| where assessmentKey == "dbd0cb49-b563-45e7-9724-889e799fa648"
| where status == 'Unhealthy'
| distinct
vulId,
severity
| summarize count=count() by tostring(severity)
Microsoft Defender-Sicherheitsrisikomanagement
securityresources
| where type == "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(".*assessments/(.+?)/.*",1, id)
| extend severity = tostring(properties.additionalData.vulnerabilityDetails.severity)
| extend status = tostring(parse_json(properties).status.code)
| extend vulId=tostring((properties).id)
| extend Resource = tolower(extract(@'(?i)(.*?)/providers/Microsoft.Security/([^/]+)', 1, id))
| where assessmentKey == "c0b7cfc6-3172-465a-b378-53c7ff2cc0d5"
| where status == 'Unhealthy'
| distinct
vulId,
severity
| summarize count=count() by tostring(severity)
Anzeigen von Pods, Containern und Namespaces für ein ausgeführtes anfälliges Image im AKS-Cluster
Qualys
securityresources
| where type =~ "microsoft.security/assessments/subassessments"
| extend assessmentKey = extract(@"(?i)providers/Microsoft.Security/assessments/([^/]*)", 1, id),
subAssessmentId = tostring(properties.id),
parentResourceId = extract("(.+)/providers/Microsoft.Security", 1, id)
| extend resourceId = extract(@'(?i)(.*?)@([^/]+)', 1,tostring(properties.resourceDetails.id))
| extend severity = tostring(parse_json(properties).status.severity)
| extend VulnId = tostring(parse_json(properties).id)
| extend status = tostring(parse_json(properties).status.code)
| where assessmentKey == "41503391-efa5-47ee-9282-4eff6131462c"
| extend resourceId = tostring(properties.resourceDetails.id),
parsedJson = parse_json(tostring(properties.additionalData))
| extend containerData = parse_json(tostring(parsedJson.data.Containers))
| mv-expand containerDetails = containerData to typeof(dynamic)
| extend ContainerName = tostring(containerDetails.Name),
ContainerPod = tostring(containerDetails.Pod.Name),
Namespace = tostring(containerDetails.Pod.Namespace),
ControllerType = tostring(containerDetails.Pod.ControllerType),
ControllerName = tostring(containerDetails.Pod.ControllerName)
| where status == 'Unhealthy'
|project Image=resourceId, VulnId,severity, Namespace, ContainerName, ContainerPod,ControllerName,ControllerType
Microsoft Defender-Sicherheitsrisikomanagement
securityresources
| where type =~ "microsoft.security/assessments/subassessments"
| extend assessmentKey=extract(@"(?i)providers/Microsoft.Security/assessments/([^/]*)", 1, id)
| where assessmentKey == "c0b7cfc6-3172-465a-b378-53c7ff2cc0d5"
| extend azureClusterId = tostring(properties.additionalData.clusterDetails.clusterResourceId)
| extend cve =tostring(properties.id)
| extend status = properties.status.code
| extend severity=tostring(parse_json(properties).additionalData.vulnerabilityDetails.severity)
| where status == "Unhealthy"
| extend azureImageId = tostring(properties.resourceDetails.id)
| extend severity = tolower(properties.additionalData.vulnerabilityDetails.severity)
| extend kubernetesContext = properties.additionalData.kubernetesContext
| mv-expand workload = kubernetesContext.workloads
| mv-expand OwnedResource = workload.ownedResources
| mv-expand OwnedContainer = OwnedResource.containers
| mv-expand Container = workload.containers
| extend isController = isnotempty(workload.ownedResources)
| extend namespace = tostring(workload.namespace)
| extend podName = iff(isController, tostring(OwnedResource.name), workload.name)
| extend containerName = iff(isController, tostring(OwnedContainer.name), Container.name)
| extend controllerName = iff(isController, tostring(workload.name),"")
| extend controllerType = iff(isController, tostring(workload.kind),"")
| extend imageName = extract("(.+)@sha256:", 1, azureImageId)
| project imageName, cve, severity, clusterId = azureClusterId, containerName, podName, controllerName, controllerType, namespace
Schritt 3: (Optional) Containersicherheitsberichte
Microsoft Defender for Cloud bietet standardmäßig Berichte über Azure Workbooks, einschließlich eines Container Security Workbooks.
Diese Arbeitsmappe enthält Ergebnisse der Überprüfung von Containerrisiken sowohl aus der Registrierung als auch aus der Laufzeit.
Die Arbeitsmappe bietet Ergebnisse aus der Überprüfung der Microsoft Defender-Sicherheitsrisikoverwaltung und bietet einen umfassenden Überblick über Sicherheitsrisiken, die in Ihren Azure Registry-Containerimages erkannt wurden. Die Containersicherheitsarbeitsmappe bietet die folgenden Vorteile für die Sicherheitsbewertung von Containern:
Übersicht über alle Sicherheitsrisiken: Zeigen Sie alle Sicherheitsrisiken an, die in Ihren Azure-Containerregistrierungen erkannt und auf dem AKS-Cluster ausgeführt werden.
Dashboard für ausnutzbare Schwachstellen: Ein dezidierter Bereich, der Schwachstellen mit bekannten Ausnutzungsmöglichkeiten hervorhebt und es Sicherheitsteams ermöglicht, sich auf Schwachstellen zu konzentrieren, die ein hohes Risiko der Ausnutzung darstellen. Dies ist nur bei der Überprüfung der Sicherheitsrisikobewertung des Containers verfügbar, die von Microsoft Defender-Sicherheitsrisikoverwaltung unterstützt wird.
Zusätzliche ARG-Abfragen: Sie können diese Arbeitsmappe verwenden, um weitere Beispiele zum Abfragen von ARG-Daten zwischen Qualys und Microsoft Defender-Sicherheitsrisikoverwaltung anzuzeigen. Weitere Informationen zum Bearbeiten von Arbeitsmappen finden Sie im Arbeitsmappenkatalog in Microsoft Defender für Cloud.