Share via


Overstappen op Microsoft Defender Vulnerability Management

Microsoft Defender voor Cloud zijn alle oplossingen voor evaluatie van beveiligingsproblemen samen te stellen voor het gebruik van de Microsoft Defender Vulnerability Management-scanner voor beveiligingsproblemen.

Microsoft Defender Vulnerability Management integreert in veel cloudeigen gebruiksscenario's, zoals containers die worden verzonden en runtimescenario's.

De Defender voor Cloud Containers Vulnerability Assessment mogelijk gemaakt door Qualys wordt nu buiten gebruik gesteld. Als u nog niet bent overgestapt opevaluaties van beveiligingsproblemen voor Azure met Microsoft Defender Vulnerability Management, volgt u de stappen op de pagina om de overgang te maken.

Stap 1: Controleren of scannen is ingeschakeld

Scannen van beveiligingsproblemen van containers mogelijk gemaakt door Microsoft Defender Vulnerability Management is standaard ingeschakeld voor Defender for Containers, Defender for Container Registries (afgeschaft) en Defender Cloud Security Posture Management. Organisaties die dit hebben uitgeschakeld, moeten de beveiligingsevaluatie zonder agent opnieuw inschakelen in een van de plannen. Het weerspiegelt automatisch een van de genoemde plannen die zijn ingeschakeld.

Schermopname van het inschakelen van evaluatie van beveiligingsproblemen zonder agent in de instellingen.

Zie Evaluatie van beveiligingsproblemen inschakelen, mogelijk gemaakt door Microsoft Defender Vulnerability Management voor meer informatie over het inschakelen van scannen op beveiligingsproblemen van Microsoft Defender.

Stap 2: (optioneel) REST API- en Azure Resource Graph-query's bijwerken

Als u programmatisch toegang hebt tot de resultaten van de evaluatie van beveiligingsproblemen van containers door Qualys, hetzij via de REST API van Azure Resource Graph (ARG) of Subassessment REST API of ARG-query's, moet u uw bestaande query's bijwerken zodat deze overeenkomen met het nieuwe schema en/of DE REST API die wordt geleverd door de nieuwe evaluatie van beveiligingsproblemen van containers, mogelijk gemaakt door Microsoft Defender Vulnerability Management.

De volgende sectie bevat enkele voorbeelden die u kunnen helpen bij het begrijpen van hoe bestaande query's voor de qualys-aanbieding moeten worden vertaald naar equivalente query's met microsoft Defender Vulnerability Management, mogelijk gemaakt.

ARG-queryvoorbeelden

Alle Azure Resource Graph-query's die worden gebruikt voor rapportage, moeten worden bijgewerkt om de eerder vermelde Evaluatiesleutels voor beveiligingsproblemen van Microsoft Defender weer te geven. Hier volgen enkele voorbeelden om u te helpen bij de overgang naar Microsoft Defender Vulnerability Management-query's.

Beschadigde containerinstallatiekopieën weergeven

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 Vulnerability Management
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' 

Containerinstallatiekopieën in orde weergeven

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 Vulnerability Management
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' 

Kwetsbare afbeeldingen tellen op ernst

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 Vulnerability Management
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)

Pod, container en naamruimte weergeven voor een actieve kwetsbare installatiekopieën in het 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 Vulnerability Management
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

Stap 3: (optioneel) containerbeveiligingsrapportage

Microsoft Defender voor Cloud biedt out-of-the-box rapportage via Azure Workbooks, inclusief een Container Security-werkmap.

Schermopname van containerbeveiligingswerkmap.

Deze werkmap bevat het scannen van beveiligingsproblemen in containers uit zowel het register als de runtime.

Schermopname van werkmap met scanresultaten voor beveiligingsproblemen in containers.

De werkmap biedt resultaten van het scannen van Microsoft Defender Vulnerability Management, met een uitgebreid overzicht van beveiligingsproblemen die zijn gedetecteerd in uw Azure Registry-containerinstallatiekopieën. De werkmap Containers Security biedt de volgende voordelen voor evaluatie van beveiligingsproblemen in containers:

  • Overzicht van alle beveiligingsproblemen: bekijk alle gedetecteerde beveiligingsproblemen in uw Azure Container-registers en die worden uitgevoerd op het AKS-cluster.

  • Dashboard voor exploiteerbare beveiligingsproblemen: een speciale sectie waarin beveiligingsproblemen met bekende aanvallen worden gemarkeerd, zodat beveiligingsteams zich kunnen richten op beveiligingsproblemen die een hoog risico vormen op misbruik. Dit is alleen beschikbaar bij het scannen van beveiligingsproblemen in containers, mogelijk gemaakt door Microsoft Defender Vulnerability Management.

    Schermopname van het dashboard voor misbruikbare beveiligingsproblemen.

  • Aanvullende ARG-query's: u kunt deze werkmap gebruiken om meer voorbeelden te bekijken van het opvragen van ARG-gegevens tussen Qualys en Microsoft Defender Vulnerability Management. Zie de galerie Werkmappen in Microsoft Defender voor Cloud voor meer informatie over het bewerken van werkmappen.

Volgende stappen