RuntimeClasses

OperationDescriptionSampleRule
get-runtimeclassesReads a single RuntimeClass, which selects the container runtime (e.g. a sandboxed gVisor/Kata handler) a pod uses. Elastic flags a first-seen reader.YN
list-runtimeclassesLists available RuntimeClasses, reconnaissance for which sandboxing options (or lack of one) a pod could request. Elastic's new-terms rule covers this verb too.YN
watch-runtimeclassesOpens a long-lived watch on RuntimeClass changes. Elastic's new-terms user-agent rule flags a not-previously-seen identity watching this sandboxing config.YN
create-runtimeclassesYN
update-runtimeclassesYN
patch-runtimeclassesModifies a RuntimeClass's handler or overhead settings, changing which container runtime pods that reference it get. Elastic flags an unexpected change.YN
delete-runtimeclassesYN
deletecollection-runtimeclassesYN
any-runtimeclassesSynthetic aggregation for rules that filter the runtimeclasses resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.NY

get runtimeclasses

#
Resource
runtimeclasses

Description

Reads a single RuntimeClass, which selects the container runtime (e.g. a sandboxed gVisor/Kata handler) a pod uses. Elastic flags a first-seen reader.

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "Metadata",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses/dw-harn-runtimeclasses",
  "verb": "get",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "name": "dw-harn-runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "requestReceivedTimestamp": "2026-07-02T04:48:27.981664Z",
  "stageTimestamp": "2026-07-02T04:48:27.982829Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

list runtimeclasses

#
Resource
runtimeclasses

Description

Lists available RuntimeClasses, reconnaissance for which sandboxing options (or lack of one) a pod could request. Elastic's new-terms rule covers this verb too.

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "Metadata",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses?labelSelector=dw-harn-patched%3D1",
  "verb": "list",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=fd038e49e5a46840f8f58360c3f09257f92bccd0cadad3ad68fcfec20b99b52c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "requestReceivedTimestamp": "2026-07-02T22:13:23.655333Z",
  "stageTimestamp": "2026-07-02T22:13:23.657047Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

watch runtimeclasses

#
Resource
runtimeclasses

Description

Opens a long-lived watch on RuntimeClass changes. Elastic's new-terms user-agent rule flags a not-previously-seen identity watching this sandboxing config.

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "Metadata",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses?resourceVersion=965&timeout=3s&watch=true",
  "verb": "watch",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=fd038e49e5a46840f8f58360c3f09257f92bccd0cadad3ad68fcfec20b99b52c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "requestReceivedTimestamp": "2026-07-02T22:13:20.287079Z",
  "stageTimestamp": "2026-07-02T22:13:23.296156Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

create runtimeclasses

#
Resource
runtimeclasses

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "RequestResponse",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses?fieldManager=kubectl-create&fieldValidation=Strict",
  "verb": "create",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "name": "dw-harn-runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 201
  },
  "requestObject": {
    "kind": "RuntimeClass",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "name": "dw-harn-runtimeclasses"
    },
    "handler": "runc"
  },
  "responseObject": {
    "kind": "RuntimeClass",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "name": "dw-harn-runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000",
      "resourceVersion": "1709",
      "creationTimestamp": "2026-07-02T04:48:27Z"
    },
    "handler": "runc"
  },
  "requestReceivedTimestamp": "2026-07-02T04:48:27.909670Z",
  "stageTimestamp": "2026-07-02T04:48:27.912892Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

update runtimeclasses

#
Resource
runtimeclasses

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "RequestResponse",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses/dw-harn-runtimeclasses?fieldManager=kubectl-replace&fieldValidation=Strict",
  "verb": "update",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=4cf95d11cbd90036bab41cdc6b88cc8f91550e9135ed4bb61495b02f647812ff"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "name": "dw-harn-runtimeclasses",
    "uid": "00000000-0000-0000-0000-000000000000",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1",
    "resourceVersion": "908"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "requestObject": {
    "kind": "RuntimeClass",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "name": "dw-harn-runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000",
      "resourceVersion": "908",
      "creationTimestamp": "2026-07-02T21:32:06Z",
      "labels": {
        "dw-harn-patched": "1"
      }
    },
    "handler": "runc"
  },
  "responseObject": {
    "kind": "RuntimeClass",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "name": "dw-harn-runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000",
      "resourceVersion": "908",
      "creationTimestamp": "2026-07-02T21:32:06Z",
      "labels": {
        "dw-harn-patched": "1"
      }
    },
    "handler": "runc"
  },
  "requestReceivedTimestamp": "2026-07-02T21:32:09.860854Z",
  "stageTimestamp": "2026-07-02T21:32:09.863387Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

patch runtimeclasses

#
Resource
runtimeclasses

Description

Modifies a RuntimeClass's handler or overhead settings, changing which container runtime pods that reference it get. Elastic flags an unexpected change.

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "RequestResponse",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses/dw-harn-runtimeclasses?fieldManager=kubectl-patch",
  "verb": "patch",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "name": "dw-harn-runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "requestObject": {
    "metadata": {
      "labels": {
        "dw-harn-patched": "1"
      }
    }
  },
  "responseObject": {
    "kind": "RuntimeClass",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "name": "dw-harn-runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000",
      "resourceVersion": "1713",
      "creationTimestamp": "2026-07-02T04:48:27Z",
      "labels": {
        "dw-harn-patched": "1"
      }
    },
    "handler": "runc"
  },
  "requestReceivedTimestamp": "2026-07-02T04:48:31.186864Z",
  "stageTimestamp": "2026-07-02T04:48:31.191240Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

delete runtimeclasses

#
Resource
runtimeclasses

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "RequestResponse",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses/dw-harn-runtimeclasses",
  "verb": "delete",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "name": "dw-harn-runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "status": "Success",
    "details": {
      "name": "dw-harn-runtimeclasses",
      "group": "node.k8s.io",
      "kind": "runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000"
    },
    "code": 200
  },
  "requestObject": {
    "kind": "DeleteOptions",
    "apiVersion": "meta.k8s.io/__internal",
    "propagationPolicy": "Background"
  },
  "responseObject": {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Success",
    "details": {
      "name": "dw-harn-runtimeclasses",
      "group": "node.k8s.io",
      "kind": "runtimeclasses",
      "uid": "00000000-0000-0000-0000-000000000000"
    }
  },
  "requestReceivedTimestamp": "2026-07-02T04:48:31.253160Z",
  "stageTimestamp": "2026-07-02T04:48:31.256288Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

deletecollection runtimeclasses

#
Resource
runtimeclasses

Example Audit Event #

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "level": "RequestResponse",
  "auditID": "00000000-0000-0000-0000-000000000000",
  "stage": "ResponseComplete",
  "requestURI": "/apis/node.k8s.io/v1/runtimeclasses?labelSelector=dw-harn-patched",
  "verb": "deletecollection",
  "user": {
    "username": "kubernetes-admin",
    "groups": [
      "kubeadm:cluster-admins",
      "system:authenticated"
    ],
    "extra": {
      "authentication.kubernetes.io/credential-id": [
        "X509SHA256=3ffde68ef687218e01296d94b0aa59c81cc98de2bd73ab70e21510c8cd4b9cec"
      ]
    }
  },
  "sourceIPs": [
    "203.0.113.10"
  ],
  "userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
  "objectRef": {
    "resource": "runtimeclasses",
    "apiGroup": "node.k8s.io",
    "apiVersion": "v1"
  },
  "responseStatus": {
    "metadata": {},
    "code": 200
  },
  "responseObject": {
    "kind": "RuntimeClassList",
    "apiVersion": "node.k8s.io/v1",
    "metadata": {
      "resourceVersion": "1116"
    },
    "items": [
      {
        "metadata": {
          "name": "dw-harn-runtimeclasses",
          "uid": "00000000-0000-0000-0000-000000000000",
          "resourceVersion": "1113",
          "creationTimestamp": "2026-07-02T23:14:20Z",
          "labels": {
            "dw-harn-patched": "1"
          }
        },
        "handler": "runc"
      }
    ]
  },
  "requestReceivedTimestamp": "2026-07-02T23:14:24.241233Z",
  "stageTimestamp": "2026-07-02T23:14:24.246252Z",
  "annotations": {
    "authorization.k8s.io/decision": "allow",
    "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
  }
}

References #

any verb on runtimeclasses (synthetic aggregation)

#
Resource
runtimeclasses

Description

Synthetic aggregation for rules that filter the runtimeclasses resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.

Detection Rules #

Full rule details for this event, including ATT&CK technique mappings and native queries →

Elastic #

  • Kubernetes Unusual Decision by User Agent source low: This rule detects unusual request responses in Kubernetes audit logs through the use of the "new_terms" rule type. In production environments, default API requests are typically made by system components or trusted users, who are expected to have a consistent user agent and allowed response annotations. By monitoring for anomalies in the username and response annotations, this rule helps identify potential unauthorized access or misconfigurations in the Kubernetes environment.T1078