Transición a la administración de vulnerabilidades de Microsoft Defender

En Microsoft Defender for Cloud se van a unificar todas las soluciones de evaluación de vulnerabilidades para usar el analizador de vulnerabilidades de Administración de vulnerabilidades de Microsoft Defender.

La administración de vulnerabilidades de Microsoft Defender se integra en muchos casos de uso nativos de nube, como los escenarios de envío y tiempo de ejecución de contenedores.

La Evaluación de vulnerabilidades de Defender for Cloud Containers con tecnología de Qualys ya se ha retirado. Si todavía no ha pasado aevaluaciones de vulnerabilidades de Azure con la administración de vulnerabilidades de Microsoft Defender, siga los pasos de la página para realizar la transición.

Paso 1: Comprobación de que el examen está habilitado

El examen de evaluación de vulnerabilidades de contenedor con tecnología de Administración de vulnerabilidades de Microsoft Defender está habilitado de forma predeterminada para Defender para contenedores, Defender para registros de contenedor (en desuso) y Administración de la posición de seguridad en la nube de Defender. Las organizaciones que lo hayan deshabilitado deben volver a habilitar el control de alternancia Evaluación de vulnerabilidades de contenedor sin agente en uno de los planes. Se refleja automáticamente en cualquiera de los planes mencionados habilitados.

Screenshot of enabling “Agentless container vulnerability assessment” in settings.

Para más información sobre cómo habilitar el examen de Administración de vulnerabilidades de Microsoft Defender, vea Habilitación de la evaluación de vulnerabilidades con tecnología de Administración de vulnerabilidades de Microsoft Defender.

Paso 2: (Opcional) Actualización de la API REST y las consultas de Azure Resource Graph

Si accedía a los resultados de la evaluación de vulnerabilidades de contenedor mediante programación con Qualys, bien mediante la API REST de Azure Resource Graph (ARG) o la API REST de Subassessment o consultas de ARG, debe actualizar las consultas existentes para que coincidan con el nuevo esquema o la API REST proporcionada por la nueva evaluación de vulnerabilidades de contenedor con tecnología de Administración de vulnerabilidades de Microsoft Defender.

En la sección siguiente se incluyen algunos ejemplos que pueden ayudarle a comprender cómo las consultas existentes para la oferta con tecnología de Qualys se deben traducir a consultas equivalentes con la oferta con tecnología de administración de vulnerabilidades de Microsoft Defender.

Ejemplos de consultas de ARG

Las consultas de Azure Resource Graph que se usan para los informes se deben actualizar para reflejar las claves de evaluación de Administración de vulnerabilidades de Microsoft Defender enumeradas antes. A continuación se muestran ejemplos que le ayudan a realizar la transición a las consultas de Administración de vulnerabilidades de Microsoft Defender.

Representación de registros de contenedor incorrectos

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' 
Administración de vulnerabilidades de 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' 

Representación de imágenes de contenedor correctas

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'
Administración de vulnerabilidades de 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' 

Recuento de imágenes vulnerables por gravedad

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)
Administración de vulnerabilidades de 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)

Visualización del pod, el contenedor y el espacio de nombres de una imagen vulnerable en ejecución en el clúster de AKS

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

Administración de vulnerabilidades de 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

Paso 3: (Opcional) Informes de seguridad de contenedores

Microsoft Defender for Cloud proporciona informes integrados mediante libros de Azure, incluido un libro de seguridad de contenedor.

Screenshot of Container Security workbook.

En este libro se incluyen los resultados del examen de vulnerabilidades de contenedor tanto del Registro como del tiempo de ejecución.

Screenshot of workbook including container vulnerability scanning results.

El libro proporciona resultados del examen de Administración de vulnerabilidades de Microsoft Defender y ofrece una visión general completa de las vulnerabilidades detectadas en las imágenes de registros de contenedor de Azure. El libro Seguridad de contenedores proporciona las siguientes ventajas para la evaluación de vulnerabilidades de contenedor:

  • Información general de todas las vulnerabilidades: vea todas las vulnerabilidades detectadas en los registros de contenedor de Azure y en ejecución en el clúster de AKS.

  • Panel Vulnerabilidad de seguridad: una sección dedicada en la que se resaltan las vulnerabilidades con vulnerabilidades de seguridad, lo que permite a los equipos de seguridad centrarse en las vulnerabilidades que suponen un alto riesgo de explotación. Solo está disponible con el examen de evaluación de vulnerabilidades de contenedores con tecnología de Administración de vulnerabilidades de Microsoft Defender.

    Screenshot of exploitable vulnerabilities dashboard.

  • Consultas de ARG adicionales: puede usar este libro para ver más ejemplos de cómo consultar datos de ARG entre Qualys y Administración de vulnerabilidades de Microsoft Defender. Para más información sobre cómo editar libros, vea Galería de libros en Microsoft Defender for Cloud.

Pasos siguientes