Váltás Microsoft Defender biztonságirés-kezelés

Felhőhöz készült Microsoft Defender egyesíti az összes sebezhetőségi felmérési megoldást a Microsoft Defender biztonságirés-kezelés biztonságirés-ellenőrző használatához.

Microsoft Defender biztonságirés-kezelés számos natív felhőalapú használati esetet integrál, például a tárolók szállítási és futtatókörnyezeti forgatókönyveit.

A Qualys által üzemeltetett Felhőhöz készült Defender-tárolók biztonságirés-felmérése ki lett vonva. Ha mégnem váltott át az Azure biztonságirés-felmérésére Microsoft Defender biztonságirés-kezelés, az áttűnés végrehajtásához kövesse az oldal lépéseit.

1. lépés: Ellenőrizze, hogy engedélyezve van-e a vizsgálat

Az Microsoft Defender biztonságirés-kezelés által működtetett tárolói sebezhetőségi felmérés alapértelmezés szerint engedélyezve van a Defender for Containers, a Defender for Container Registries (elavult) és a Defender Cloud Security Posture Management esetében. A letiltott szervezeteknek újra engedélyeznie kell az ügynök nélküli tároló biztonságirés-felmérésének kapcsolóját az egyik csomagban. Automatikusan tükrözi az engedélyezett említett tervek bármelyikét.

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

A Microsoft Defender biztonságirés-kezelés vizsgálatának engedélyezéséről további információt a Microsoft Defender biztonságirés-kezelés által működtetett sebezhetőségi felmérés engedélyezése című témakörben talál.

2. lépés: (Nem kötelező) REST API- és Azure Resource Graph-lekérdezések frissítése

Ha a Qualys programozott módon, vagy az Azure Resource Graph (ARG) Rest API-n vagy alértékelési REST API-n vagy ARG-lekérdezéseken keresztül fér hozzá a tároló sebezhetőségi felmérési eredményeihez, frissítenie kell a meglévő lekérdezéseket, hogy megfeleljenek a Microsoft Defender biztonságirés-kezelés által működtetett új tárolórés-felmérés által biztosított új sémának és/vagy REST API-nak.

A következő szakasz néhány példát tartalmaz, amelyek segíthetnek annak megértésében, hogy a Qualys-alapú ajánlat meglévő lekérdezéseit hogyan kell lefordítani egyenértékű lekérdezésekre az Microsoft Defender biztonságirés-kezelés alapú ajánlattal.

ARG-lekérdezési példák

A jelentéskészítéshez használt Azure Resource Graph-lekérdezéseket frissíteni kell, hogy tükrözzék a korábban felsorolt Microsoft Defender biztonságirés-kezelés assessmentKey-eket. Az alábbi példák segítenek Microsoft Defender biztonságirés-kezelés lekérdezésekre való áttérésben.

Nem kifogástalan tárolólemezképek megjelenítése

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 biztonságirés-kezelés
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' 

Kifogástalan tárolólemezképek megjelenítése

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 biztonságirés-kezelés
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' 

Sebezhető képek megszámlálásával súlyosság szerint

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 biztonságirés-kezelés
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)

Az AKS-fürtön futó sebezhető rendszerkép podjának, tárolójának és névterének megtekintése

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 biztonságirés-kezelés
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

3. lépés: (Nem kötelező) Tároló biztonsági jelentése

Felhőhöz készült Microsoft Defender az Azure-munkafüzeteken keresztüli jelentéskészítést teszi lehetővé, beleértve a Container Security-munkafüzeteket is.

Screenshot of Container Security workbook.

Ez a munkafüzet tartalmazza a tároló biztonsági résének a beállításjegyzékből és a futtatókörnyezetből származó eredményeit.

Screenshot of workbook including container vulnerability scanning results.

A munkafüzet Microsoft Defender biztonságirés-kezelés vizsgálat eredményeit tartalmazza, amely átfogó áttekintést nyújt az Azure Registry-tárolólemezképeken észlelt biztonsági résekről. A Tárolók biztonsági munkafüzete a következő előnyöket nyújtja a tárolók sebezhetőségének felméréséhez:

  • Az összes biztonsági rés áttekintése: Tekintse meg az Azure Container Registriesben észlelt és az AKS-fürtön futó összes biztonsági rést.

  • Kihasználható biztonsági rések irányítópultja: Egy dedikált szakasz, amely az ismert biztonsági réseket emeli ki, lehetővé téve a biztonsági csapatok számára, hogy a magas kihasználási kockázatot jelentő biztonsági résekre összpontosítsanak. Ez csak a Microsoft Defender biztonságirés-kezelés által működtetett tároló biztonságirés-felmérésével érhető el.

    Screenshot of exploitable vulnerabilities dashboard.

  • További ARG-lekérdezések: Ezzel a munkafüzetben további példákat tekinthet meg az ARG-adatok Qualys és Microsoft Defender biztonságirés-kezelés közötti lekérdezésére. A munkafüzetek szerkesztéséről további információt a Munkafüzetek gyűjtemény Felhőhöz készült Microsoft Defender című témakörben talál.

Következő lépések