Transizione a Gestione delle vulnerabilità di Microsoft Defender
Microsoft Defender per il cloud sta unificando tutte le soluzioni di valutazione delle vulnerabilità per usare lo strumento di scansione delle vulnerabilità Gestione delle vulnerabilità di Microsoft Defender.
Gestione delle vulnerabilità di Microsoft Defender si integra in molti casi d'uso nativi del cloud, ad esempio per i contenitori e gli scenari di runtime.
La funzione di valutazione delle vulnerabilità dei contenitori di Defender per il cloud basata su Qualys è stata ritirata. Se non si è ancora eseguita la transizione alla valutazione delle vulnerabilità per Azure con Gestione delle vulnerabilità di Microsoft Defender, seguire i passaggi riportati nella pagina per procedere alla transizione.
Passaggio 1: Verificare che la scansione sia abilitata
La scansione della valutazione delle vulnerabilità dei contenitori basata su Gestione delle vulnerabilità di Microsoft Defender è abilitata per impostazione predefinita per Defender per contenitori, Defender per Registri contenitori (dismesso) e Cloud Security Posture Management (CSPM) di Defender. Le organizzazioni che lo hanno disabilitato devono riabilitare la valutazione della vulnerabilità dei contenitori senza agente in uno dei piani. Si riflette automaticamente in uno dei piani abilitati, tra quelli citati.
Per ulteriori informazioni sull'abilitazione della scansione delle vulnerabilità di Gestione delle vulnerabilità di Microsoft Defender, consultare la sezione Abilitare la valutazione delle vulnerabilità basata su Gestione delle vulnerabilità di Microsoft Defender.
Passaggio 2: (facoltativo) Aggiornare l'API REST e le query di Azure Resource Graph
Se si accede ai risultati della valutazione della vulnerabilità dei contenitori basata su Qualys a livello di codice, tramite l'API REST di Azure Resource Graph (ARG) o l'API REST di valutazione secondaria o le query ARG, è necessario aggiornare le query esistenti in modo che corrispondano al nuovo schema e/o all'API REST fornita dalla nuova valutazione della vulnerabilità dei contenitori basata su Gestione delle vulnerabilità di Microsoft Defender.
La sezione successiva propone alcuni esempi per comprendere in che modo le query esistenti per l'offerta basata su Qualys devono essere convertite in query equivalenti con l'offerta basata su Gestione delle vulnerabilità di Microsoft Defender.
Esempi di query di ARG
Tutte le query di Azure Resource Graph usate per la creazione di report devono essere aggiornate in modo da riflettere le chiavi di valutazione per Gestione delle vulnerabilità di Microsoft Defender citate in precedenza. Di seguito sono riportati alcuni esempi che consentono di passare alle query di Gestione delle vulnerabilità di Microsoft Defender.
Mostra immagini del contenitore non integre
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'
Gestione delle vulnerabilità di Microsoft Defender
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'
Mostra immagini del contenitore integre
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'
Gestione delle vulnerabilità di Microsoft Defender
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'
Conteggio immagini vulnerabili in base alla gravità
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)
Gestione delle vulnerabilità di Microsoft Defender
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)
Visualizzazione pod, contenitore e spazio dei nomi per un'immagine vulnerabile in esecuzione nel cluster del servizio Azure Kubernetes
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
Gestione delle vulnerabilità di Microsoft Defender
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
Passaggio 3: (facoltativo) Creazione di report sulla sicurezza dei contenitori
Microsoft Defender per il cloud offre report predefiniti tramite cartelle di lavoro di Azure, compresa una cartella di lavoro Sicurezza contenitori.
Questa cartella di lavoro include i risultati della scansione delle vulnerabilità dei contenitori sia dal Registro di sistema che dal runtime.
La cartella di lavoro fornisce i risultati della scansione di Gestione delle vulnerabilità di Microsoft Defender, offrendo una panoramica completa delle vulnerabilità rilevate all'interno delle immagini del contenitore del Registro Azure. La cartella di lavoro Sicurezza contenitori offre i seguenti vantaggi per la valutazione della vulnerabilità dei contenitori:
Panoramica di tutte le vulnerabilità: visualizzazione di tutte le vulnerabilità rilevate nei registri dei contenitori di Azure e in esecuzione nel cluster del servizio Azure Kubernetes.
Dashboard delle vulnerabilità con exploit noti: una sezione dedicata che evidenzia le vulnerabilità con exploit noti, consentendo ai team che si occupano della sicurezza di concentrarsi sulle vulnerabilità che rappresentano un alto rischio di exploit. Questa funzionalità è disponibile solo con la scansione per la valutazione della vulnerabilità dei contenitori basata su Gestione delle vulnerabilità di Microsoft Defender.
Query di ARG aggiuntive: questa cartella di lavoro consente di vedere altri esempi di come eseguire query sui dati di ARG tra Qualys e Gestione delle vulnerabilità di Microsoft Defender. Per ulteriori informazioni su come modificare le cartelle di lavoro, vedere Raccolta cartelle di lavoro in Microsoft Defender per il cloud.
Passaggi successivi
- Ulteriori informazioni sulle valutazioni delle vulnerabilità per Azure con Gestione delle vulnerabilità di Microsoft Defender.
- Consultare la sezione Domande frequenti su Gestione delle vulnerabilità di Microsoft Defender.