Megosztás a következőn keresztül:


Kubeaudit-események a speciális vadászatban

A Kubernetes Kubeaudit-események (és az Azure Resource Manager felhőalapú naplózása) a Microsoft Defender portál speciális keresésében érhetők el.

A Kubernetes vezérlősík támadási felületén és az Azure Resource Managementben történt incidensek osztályozása és vizsgálata. A speciális vadászattal proaktívan is kereshet fenyegetéseket.

Emellett egyéni észleléseket is létrehozhat a gyanús Resource Manager és a Kubernetes (KubeAudit) vezérlősík-tevékenységekhez.

Ez a funkció a következőket tartalmazza:

  • Kubernetes KubeAudit-események az Azure-ból (Azure Kubernetes Service), Amazon Web Services (Amazon Elastic Kubernetes Service), Google Cloud Platform (Google Kubernetes Engine) és helyszíni

  • A Resource Manager vezérlősík eseményei

Első lépésként tekintse meg a CloudAuditEvents nevű speciális keresés Séma lapjára felvett új táblát.

Képernyőkép a CloudAuditEvents tábláról a Séma lapon a speciális keresésben.

Gyakori használati esetek és forgatókönyvek

  • Gyanús Resource Manager- és Kubernetes- (Kubeaudit-) vezérlősík-tevékenységek vizsgálata az XDR speciális vadászatában
  • Egyéni észlelések létrehozása gyanús Resource Manager- és Kubernetes- (Kubeaudit-) vezérlősík-tevékenységekhez

Előfeltételek

  • Kubernetes-események esetén: legalább egy olyan előfizetésre van szüksége, amelyen engedélyezve van a Defender for Containers csomag
  • Azure Resource Manager-események esetén: legalább egy előfizetésre van szüksége, amelyen engedélyezve van a Defender for Azure Resource Manager-csomag

Minta lekérdezések

A kiemelt pod üzembe helyezésének felszínre hozásához használja a következő minta lekérdezést:

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

Az exec parancs kube-system névtérben való felszínre hozásához használja a következő minta lekérdezést:

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

A fürt-rendszergazda szerepkör kötésének azonosításához használja a következő minta lekérdezést:

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