ServiceAccounts Kubernetes-serviceaccounts

9 operations, identified by Operation in the audit log.

OperationDescription
get-serviceaccounts
list-serviceaccounts
watch-serviceaccounts
create-serviceaccountsServiceAccount created (persistence: new identity that can be bound to roles).
update-serviceaccounts
patch-serviceaccounts
delete-serviceaccounts
create-serviceaccounts-tokenService account token created via TokenRequest API (credential access).
any-serviceaccountsSynthetic aggregation for rules that filter the serviceaccounts resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.

get-serviceaccounts: get serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

list-serviceaccounts: list serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

watch-serviceaccounts: watch serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

create-serviceaccounts: create serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Description

ServiceAccount created (persistence: new identity that can be bound to roles).

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

Detection Rules #

View all rules referencing this event →

Sigma #

update-serviceaccounts: update serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

patch-serviceaccounts: patch serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

delete-serviceaccounts: delete serviceaccounts

#
Resource
Kubernetes-serviceaccounts

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

create-serviceaccounts-token: create serviceaccounts/token

#
Resource
Kubernetes-serviceaccounts

Description

Service account token created via TokenRequest API (credential access).

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

Common Indicators #

Field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis.

FieldKindValueRulesVendors
kubernetes.audit.verbeqcreate1 ruleelastic
useris_not_null1 ruleelastic, kusto, splunk

Detection Rules #

View all rules referencing this event →

Elastic #

  • Kubernetes Service Account Token Created via TokenRequest API source medium: Detects the creation of a Kubernetes service account token through the TokenRequest API by a non-system identity. The TokenRequest API allows users and workloads to programmatically generate short-lived tokens for any service account they have create permissions on, without accessing the filesystem or the mounted projected token. Attackers who have gained initial access to a cluster can abuse this API to mint tokens for more privileged service accounts, pivot to cloud provider resources via IRSA/workload identity, or generate long-lived tokens that persist beyond pod termination. Unlike mounted service account tokens which are detectable through file access monitoring, tokens created via the TokenRequest API leave no filesystem footprint, they are only visible in Kubernetes audit logs as a create verb on the serviceaccounts/token subresource. This rule excludes legitimate system components such as the kubelet, kube-controller-manager, and cloud provider managed identities (EKS, AKS, GKE) that routinely create tokens for pod lifecycle management.

any-serviceaccounts: any verb on serviceaccounts (synthetic aggregation)

#
Resource
Kubernetes-serviceaccounts

Description

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

Fields #

NameDescription
verbThe request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...).
objectRef.resourceThe targeted resource type (plural API name, e.g. pods, secrets).
objectRef.subresourceThe targeted subresource, when present (e.g. exec, log, token).
objectRef.namespaceNamespace of the targeted object (empty for cluster-scoped resources).
objectRef.nameName of the targeted object.
objectRef.apiGroupAPI group of the targeted resource (empty string for core group).
user.usernameAuthenticated identity that issued the request (user or service account).
user.groupsGroups of the requesting identity.
sourceIPsSource IP addresses of the request.
responseStatus.codeHTTP status code of the API response (200, 201, 403, 404, ...).
stageAudit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic.
requestReceivedTimestampTime the apiserver received the request.

Detection Rules #

View all rules referencing this event →

Elastic #

  • Kubernetes Multi-Resource Discovery source medium: Adversaries who land credentials in a cluster—or abuse an over-privileged token—often map the environment before exfiltration or privilege escalation. A practical first pass is to learn where workloads run, how the cluster is partitioned, and what RBAC exists at namespace vs cluster scope. Rapid get/list traffic across distinct API resource kinds that answer those questions (namespaces, workloads, roles, cluster-wide roles) is a common setup and orientation pattern for both interactive attackers and automated recon scripts. It is less typical for steady-state controllers, which usually touch a narrow set of resources repeatedly. This rule highlights that cross-resource burst from a single client fingerprint within a one-minute bucket so analysts can separate routine automation from potential discovery and permission reconnaissance ahead of follow-on actions.