أحداث Kubeaudit في التتبع المتقدم

تتوفر أحداث Kubernetes Kubeaudit (والتدقيق السحابي ل Azure Resource Manager) في التتبع المتقدم في مدخل Microsoft Defender.

يمكنك فرز الحوادث التي حدثت على سطح هجوم وحدة تحكم Kubernetes الخاصة بك وAzure Resource Management والتحقيق فيها. يمكنك أيضا البحث بشكل استباقي عن التهديدات باستخدام التتبع المتقدم.

بالإضافة إلى ذلك، يمكنك إنشاء اكتشافات مخصصة لأنشطة وحدة التحكم في Resource Manager وKubernetes (KubeAudit) المشبوهة.

تغطي هذه الميزة:

  • أحداث Kubernetes KubeAudit من Azure (Azure Kubernetes Service) وAmazon Web Services (Amazon Elastic Kubernetes Service) وGoogle Cloud Platform (Google Kubernetes Engine) ومحلي

  • أحداث وحدة التحكم في Resource Manager

للبدء، راجع الجدول الجديد الذي تمت إضافته إلى علامة تبويب المخطط في التتبع المتقدم المسمى CloudAuditEvents.

لقطة شاشة لجدول CloudAuditEvents في علامة تبويب المخطط في التتبع المتقدم.

السيناريوهات وحالات الاستخدام الشائعة

  • التحقيق في أنشطة وحدة التحكم في Resource Manager وKubernetes (Kubeaudit) المشبوهة في التتبع المتقدم ل XDR
  • إنشاء اكتشافات مخصصة لأنشطة وحدة التحكم في Resource Manager وKubernetes (Kubeaudit) المشبوهة

المتطلبات الأساسية

  • بالنسبة لأحداث Kubernetes: تحتاج إلى اشتراك واحد على الأقل مع تمكين خطة Defender for Containers
  • بالنسبة لأحداث Azure Resource Manager: تحتاج إلى اشتراك واحد على الأقل مع تمكين خطة Defender for Azure Resource Manager

نماذج الاستعلامات

لعرض نشر حاوية مميزة، استخدم نموذج الاستعلام التالي:

CloudAuditEvents
| where Timestamp > ago(1d)
| where DataSource == "Azure Kubernetes Service"
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "pods" and isnull(RawEventData.ObjectRef.subresource)
| where RawEventData.ResponseStatus.code startswith "20"
| extend PodName = RawEventData.RequestObject.metadata.name
| extend PodNamespace = RawEventData.ObjectRef.namespace
| mv-expand Container = RawEventData.RequestObject.spec.containers
| extend ContainerName = Container.name
| where Container.securityContext.privileged == "true"
| extend Username = RawEventData.User.username
| project Timestamp, AzureResourceId , OperationName, IPAddress, UserAgent, PodName, PodNamespace, ContainerName, Username

لعرض الأمر exec في مساحة اسم نظام kube، استخدم نموذج الاستعلام التالي:

CloudAuditEvents
| where Timestamp > ago(1d)
| where DataSource == "Azure Kubernetes Service"
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "pods" and RawEventData.ResponseStatus.code == 101  
| where RawEventData.ObjectRef.namespace == "kube-system"
| where RawEventData.ObjectRef.subresource == "exec"
| where RawEventData.ResponseStatus.code == 101
| extend RequestURI = tostring(RawEventData.RequestURI)
| extend PodName = tostring(RawEventData.ObjectRef.name)
| extend PodNamespace = tostring(RawEventData.ObjectRef.namespace)
| extend Username = tostring(RawEventData.User.username)
| where PodName !startswith "tunnelfront-" and PodName !startswith "konnectivity-" and PodName !startswith "aks-link"
| extend Commands =  extract_all(@"command=([^\&]*)", RequestURI)
| extend ParsedCommand = url_decode(strcat_array(Commands, " "))
| project Timestamp, AzureResourceId , OperationName, IPAddress, UserAgent, PodName, PodNamespace,  Username, ParsedCommand

لتحديد إنشاء ربط دور مسؤول نظام المجموعة، استخدم نموذج الاستعلام التالي:

CloudAuditEvents
| where Timestamp > ago(1d)
| where OperationName == "create"
| where RawEventData.ObjectRef.resource == "clusterrolebindings"
| where RawEventData.ResponseStatus.code startswith "20"
| where RawEventData.RequestObject.roleRef.name == "cluster-admin"
| mv-expand Subject = RawEventData.RequestObject.subjects
| extend SubjectName = tostring(Subject.name)
| extend SubjectKind = tostring(Subject["kind"]) 
| extend BindingName = tostring(RawEventData.ObjectRef.name)
| extend ActionTakenBy = tostring(RawEventData.User.username)
| where ActionTakenBy != "acsService" //Remove FP
| project Timestamp, AzureResourceId , OperationName, ActionTakenBy, IPAddress, UserAgent, BindingName, SubjectName, SubjectKind