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