Delen via


Kubeaudit-gebeurtenissen in geavanceerde opsporing

Kubernetes Kubeaudit-gebeurtenissen (en Azure Resource Manager-cloudcontrole) zijn beschikbaar in geavanceerde opsporing in de Microsoft Defender-portal.

U kunt incidenten die zijn opgetreden op uw Kubernetes-besturingsvlak-aanvalsoppervlak en Azure Resource Management classificeren en onderzoeken. U kunt ook proactief bedreigingen opsporen met behulp van geavanceerde opsporing.

Daarnaast kunt u aangepaste detecties maken voor verdachte Activiteiten in het Besturingsvlak van Resource Manager en Kubernetes (KubeAudit).

In deze functie wordt het volgende behandeld:

  • Kubernetes KubeAudit-gebeurtenissen van Azure (Azure Kubernetes Service), Amazon Web Services (Amazon Elastic Kubernetes Service), Google Cloud Platform (Google Kubernetes Engine) en on-premises

  • Gebeurtenissen in het besturingsvlak van Resource Manager

Zie de nieuwe tabel die is toegevoegd aan het tabblad Schema in geavanceerde opsporing met de naam CloudAuditEvents om te beginnen.

Schermopname van de tabel CloudAuditEvents op het tabblad Schema in geavanceerde opsporing.

Veelvoorkomende gebruikstoepassingen en scenario's

  • Verdachte Activiteiten in het besturingsvlak van Resource Manager en Kubernetes (Kubeaudit) onderzoeken in geavanceerde XDR-opsporing
  • Aangepaste detecties maken voor verdachte Activiteiten in het Besturingsvlak van Resource Manager en Kubernetes (Kubeaudit)

Vereisten

  • Voor Kubernetes-gebeurtenissen: u hebt ten minste één abonnement nodig waarvoor een Defender for Containers-abonnement is ingeschakeld
  • Voor Azure Resource Manager-gebeurtenissen: u hebt ten minste één abonnement nodig waarvoor een Defender voor Azure Resource Manager-abonnement is ingeschakeld

Voorbeeldquery's

Gebruik de volgende voorbeeldquery om de implementatie van een bevoegde pod aan de oppervlakte te laten komen:

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

Gebruik de volgende voorbeeldquery om de exec-opdracht in de kube-system-naamruimte weer te geven:

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

Gebruik de volgende voorbeeldquery om het maken van de binding voor clusterbeheerdersrollen te identificeren:

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