Transisi ke Pengelolaan Kerentanan Microsoft Defender

Microsoft Defender untuk Cloud menyatukan semua solusi penilaian kerentanan untuk menggunakan pemindai kerentanan Pengelolaan Kerentanan Microsoft Defender.

Pengelolaan Kerentanan Microsoft Defender terintegrasi di banyak kasus penggunaan asli cloud, seperti skenario pengiriman kontainer dan runtime.

Penilaian Kerentanan Kontainer Defender untuk Cloud yang didukung oleh Qualys sekarang dihentikan. Jika Anda belum beralih kepenilaian Kerentanan untuk Azure dengan Pengelolaan Kerentanan Microsoft Defender, ikuti langkah-langkah di halaman untuk melakukan transisi.

Langkah 1: Verifikasi bahwa pemindaian diaktifkan

Pemindaian penilaian kerentanan kontainer yang didukung oleh Pengelolaan Kerentanan Microsoft Defender diaktifkan secara default untuk Defender untuk Kontainer, Defender untuk Container Registries (tidak digunakan lagi) dan Defender Cloud Security Posture Management. Organisasi yang menonaktifkannya perlu mengaktifkan kembali pengalih penilaian kerentanan kontainer Tanpa Agen di salah satu paket. Ini mencerminkan secara otomatis ke salah satu paket yang disebutkan diaktifkan.

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

Untuk informasi selengkapnya tentang mengaktifkan pemindaian Pengelolaan Kerentanan Microsoft Defender, lihat Mengaktifkan penilaian kerentanan yang didukung oleh Pengelolaan Kerentanan Microsoft Defender.

Langkah 2: (Opsional) Memperbarui kueri REST API dan Azure Resource Graph

Jika Anda mengakses hasil penilaian kerentanan kontainer oleh Qualys secara terprogram, baik melalui Rest API Azure Resource Graph (ARG) atau subassessment REST API atau kueri ARG, Anda perlu memperbarui kueri yang ada agar sesuai dengan skema baru dan/atau REST API yang disediakan oleh penilaian kerentanan kontainer baru yang didukung oleh Pengelolaan Kerentanan Microsoft Defender.

Bagian berikutnya mencakup beberapa contoh yang dapat membantu memahami bagaimana kueri yang ada untuk penawaran yang didukung Qualys harus diterjemahkan ke kueri yang setara dengan penawaran yang didukung Pengelolaan Kerentanan Microsoft Defender.

Contoh kueri ARG

Setiap kueri Azure Resource Graph yang digunakan untuk pelaporan harus diperbarui untuk mencerminkan assessmentKeys Pengelolaan Kerentanan Microsoft Defender yang tercantum sebelumnya. Berikut ini adalah contoh untuk membantu Anda beralih ke kueri Pengelolaan Kerentanan Microsoft Defender.

Tampilkan gambar kontainer yang tidak sehat

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' 
Pengelolaan Kerentanan 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' 

Tampilkan gambar kontainer yang sehat

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'
Pengelolaan Kerentanan 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' 

Menghitung gambar yang rentan berdasarkan tingkat keparahan

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)
Pengelolaan Kerentanan 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)

Lihat pod, kontainer, dan namespace untuk gambar yang berjalan rentan pada kluster 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

Pengelolaan Kerentanan 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

Langkah 3: (Opsional) Pelaporan Keamanan Kontainer

Microsoft Defender untuk Cloud menyediakan pelaporan di luar kotak melalui Buku Kerja Azure, termasuk buku kerja Keamanan Kontainer.

Screenshot of Container Security workbook.

Buku kerja ini mencakup hasil pemindaian kerentanan kontainer dari registri dan runtime.

Screenshot of workbook including container vulnerability scanning results.

Buku kerja menyediakan hasil dari pemindaian Pengelolaan Kerentanan Microsoft Defender, menawarkan gambaran umum komprehensif tentang kerentanan yang terdeteksi dalam gambar kontainer Azure Registry Anda. Buku kerja Keamanan Kontainer memberikan manfaat berikut untuk penilaian kerentanan kontainer:

  • Gambaran umum semua kerentanan: Lihat semua kerentanan yang terdeteksi di seluruh Azure Container Registries Anda dan berjalan pada kluster AKS.

  • Dasbor kerentanan yang dapat dieksploitasi: Bagian khusus yang menyoroti kerentanan dengan eksploitasi yang diketahui, memungkinkan tim keamanan untuk fokus pada kerentanan yang menimbulkan risiko eksploitasi yang tinggi. Ini hanya tersedia dengan pemindaian penilaian kerentanan kontainer yang didukung oleh Pengelolaan Kerentanan Microsoft Defender.

    Screenshot of exploitable vulnerabilities dashboard.

  • Kueri ARG tambahan: Anda bisa menggunakan buku kerja ini untuk menampilkan lebih banyak contoh cara mengkueri data ARG antara Qualys dan Pengelolaan Kerentanan Microsoft Defender. Untuk informasi selengkapnya tentang cara mengedit buku kerja, lihat Galeri buku kerja di Microsoft Defender untuk Cloud.

Langkah berikutnya