الانتقال إلى إدارة الثغرات الأمنية في Microsoft Defender

يقوم Microsoft Defender for Cloud بتوحيد جميع حلول تقييم الثغرات الأمنية لاستخدام الماسح الضوئي للثغرات الأمنية إدارة الثغرات الأمنية في Microsoft Defender.

يتكامل إدارة الثغرات الأمنية في Microsoft Defender عبر العديد من حالات الاستخدام الأصلية للسحابة، مثل شحن الحاويات وسيناريوهات وقت التشغيل.

تم الآن إيقاف تقييم الثغرات الأمنية ل Defender for Cloud Containers المشغل بواسطة Qualys. إذا لم تكن قد انتقلت بعد إلىتقييمات الثغرات الأمنية ل Azure باستخدام إدارة الثغرات الأمنية في Microsoft Defender، فاتبع الخطوات الواردة في الصفحة لإجراء الانتقال.

الخطوة 1: تحقق من تمكين الفحص

يتم تمكين فحص تقييم الثغرات الأمنية للحاوية المشغل بواسطة إدارة الثغرات الأمنية في Microsoft Defender بشكل افتراضي ل Defender for Containers و Defender لسجلات الحاويات (مهملة) و Defender Cloud Security Posture Management. تحتاج المؤسسات التي عطلتها إلى إعادة تمكين تبديل تقييم الثغرات الأمنية للحاوية بدون عامل في إحدى الخطط. يعكس تلقائيا أي من الخطط المذكورة التي تم تمكينها.

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

لمزيد من المعلومات حول تمكين المسح الضوئي إدارة الثغرات الأمنية في Microsoft Defender، راجع تمكين تقييم الثغرات الأمنية الذي يتم تشغيله بواسطة إدارة الثغرات الأمنية في Microsoft Defender.

الخطوة 2: (اختياري) تحديث REST API واستعلامات Azure Resource Graph

إذا كنت تصل إلى نتائج تقييم الثغرات الأمنية للحاوية بواسطة Qualys برمجيا، إما عبر Azure Resource Graph (ARG) Rest API أو Subassessment REST API أو استعلامات ARG، فستحتاج إلى تحديث استعلاماتك الحالية لمطابقة المخطط الجديد و/أو REST API الذي يوفره تقييم الثغرات الأمنية الجديد للحاوية المشغل بواسطة إدارة الثغرات الأمنية في Microsoft Defender.

يتضمن القسم التالي بعض الأمثلة التي يمكن أن تساعد في فهم كيفية ترجمة الاستعلامات الموجودة لعرض Qualys المشغل إلى استعلامات مكافئة مع عرض إدارة الثغرات الأمنية في Microsoft Defender المشغل.

أمثلة استعلام ARG

يجب تحديث أي استعلامات Azure Resource Graph المستخدمة لإعداد التقارير لتعكس إدارة الثغرات الأمنية في Microsoft Defender assessmentKeys المدرجة مسبقا. فيما يلي أمثلة لمساعدتك على الانتقال إلى استعلامات إدارة الثغرات الأمنية في Microsoft Defender.

إظهار صور الحاوية غير السليمة

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

إظهار صور حاوية سليمة

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

حساب الصور الضعيفة حسب الخطورة

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

عرض الجراب والحاوية ومساحة الاسم لصورة عرضة قيد التشغيل على نظام مجموعة 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

إدارة الثغرات الأمنية في 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

الخطوة 3: (اختياري) إعداد تقارير أمان الحاوية

يوفر Microsoft Defender for Cloud تقارير خارج الصندوق عبر مصنفات Azure، بما في ذلك مصنف أمان الحاوية.

Screenshot of Container Security workbook.

يتضمن هذا المصنف نتائج فحص الثغرات الأمنية للحاوية من كل من السجل ووقت التشغيل.

Screenshot of workbook including container vulnerability scanning results.

يوفر المصنف نتائج من المسح الضوئي إدارة الثغرات الأمنية في Microsoft Defender، ويقدم نظرة عامة شاملة على الثغرات الأمنية التي تم اكتشافها داخل صور حاوية Azure Registry. يوفر مصنف أمان الحاويات الفوائد التالية لتقييم الثغرات الأمنية للحاوية:

  • نظرة عامة على جميع الثغرات الأمنية: عرض جميع الثغرات الأمنية المكتشفة عبر سجلات حاوية Azure وتشغيلها على نظام مجموعة AKS.

  • لوحة معلومات الثغرات الأمنية القابلة للاستغلال: قسم مخصص يسلط الضوء على الثغرات الأمنية ذات المآثر المعروفة، ما يتيح لفرق الأمان التركيز على الثغرات الأمنية التي تشكل خطرا كبيرا على الاستغلال. يتوفر هذا فقط مع فحص تقييم الثغرات الأمنية في الحاوية مدعوما إدارة الثغرات الأمنية في Microsoft Defender.

    Screenshot of exploitable vulnerabilities dashboard.

  • استعلامات ARG الإضافية: يمكنك استخدام هذا المصنف لعرض المزيد من الأمثلة حول كيفية الاستعلام عن بيانات ARG بين Qualys إدارة الثغرات الأمنية في Microsoft Defender. لمزيد من المعلومات حول كيفية تحرير المصنفات، راجع معرض المصنفات في Microsoft Defender for Cloud.

الخطوات التالية