Secrets Kubernetes-secrets

8 operations, identified by Operation in the audit log.

OperationDescription
get-secretsSecret accessed (credential theft; service account tokens, TLS certs, API keys).
list-secretsSecrets enumerated across a namespace or cluster.
watch-secrets
create-secrets
update-secrets
patch-secrets
delete-secrets
any-secretsSynthetic aggregation for rules that filter the secrets resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.

get-secrets: get secrets

#
Resource
Kubernetes-secrets

Description

Secret accessed (credential theft; service account tokens, TLS certs, API keys).

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.verbinget2 ruleselastic
kubernetes.audit.verbinlist2 ruleselastic
kubernetes.audit.verbindelete1 ruleelastic
Esql.timestamp_first_seengeNOW() - 91 ruleelastic
aws::userAgentis_not_null1 ruleelastic, kusto
kubernetes.audit.objectRef.resourceeqsecrets1 ruleelastic
kubernetes.audit.objectRef.resourceinconfigmaps1 ruleelastic
kubernetes.audit.objectRef.resourceinsecrets1 ruleelastic

Detection Rules #

View all rules referencing this event →

Elastic #

list-secrets: list secrets

#
Resource
Kubernetes-secrets

Description

Secrets enumerated across a namespace or cluster.

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.verbinget2 ruleselastic
kubernetes.audit.verbinlist2 ruleselastic
kubernetes.audit.verbindelete1 ruleelastic
aws::userAgentis_not_null1 ruleelastic, kusto
kubernetes.audit.objectRef.resourceeqsecrets1 ruleelastic
kubernetes.audit.objectRef.resourceinconfigmaps1 ruleelastic
kubernetes.audit.objectRef.resourceinsecrets1 ruleelastic
objectRef.resourceeqsecrets1 rulesigma, splunk
verbeqlist1 rulesigma, splunk

Detection Rules #

View all rules referencing this event →

Sigma #

Elastic #

watch-secrets: watch secrets

#
Resource
Kubernetes-secrets

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-secrets: create secrets

#
Resource
Kubernetes-secrets

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
objectRef.resourceeqsecrets1 rulesigma, splunk

Detection Rules #

View all rules referencing this event →

Sigma #

Elastic #

  • Kubernetes Secret or ConfigMap Access via Azure Arc Proxy source medium: Detects when secrets or configmaps are accessed, created, modified, or deleted in a Kubernetes cluster by the Azure Arc AAD proxy service account. When operations are routed through the Azure Arc Cluster Connect proxy, the Kubernetes audit log records the acting user as system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa with the actual caller identity in the impersonatedUser field. This pattern indicates that someone is accessing the cluster through the Azure ARM API rather than directly via kubectl against the API server. While legitimate for Arc-managed workflows, adversaries with stolen service principal credentials can abuse Arc Cluster Connect to read, exfiltrate, or modify secrets and configmaps while appearing as the Arc proxy service account in K8s audit logs.↳ also matches get-secrets: get secrets, list-secrets: list secrets, update-secrets: update secrets, patch-secrets: patch secrets, delete-secrets: delete secrets

update-secrets: update secrets

#
Resource
Kubernetes-secrets

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
objectRef.resourceeqsecrets1 rulesigma, splunk

Detection Rules #

View all rules referencing this event →

Sigma #

Elastic #

  • Kubernetes Secret or ConfigMap Access via Azure Arc Proxy source medium: Detects when secrets or configmaps are accessed, created, modified, or deleted in a Kubernetes cluster by the Azure Arc AAD proxy service account. When operations are routed through the Azure Arc Cluster Connect proxy, the Kubernetes audit log records the acting user as system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa with the actual caller identity in the impersonatedUser field. This pattern indicates that someone is accessing the cluster through the Azure ARM API rather than directly via kubectl against the API server. While legitimate for Arc-managed workflows, adversaries with stolen service principal credentials can abuse Arc Cluster Connect to read, exfiltrate, or modify secrets and configmaps while appearing as the Arc proxy service account in K8s audit logs.↳ also matches get-secrets: get secrets, list-secrets: list secrets, create-secrets: create secrets, patch-secrets: patch secrets, delete-secrets: delete secrets

patch-secrets: patch secrets

#
Resource
Kubernetes-secrets

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
objectRef.resourceeqsecrets1 rulesigma, splunk

Detection Rules #

View all rules referencing this event →

Sigma #

Elastic #

  • Kubernetes Secret or ConfigMap Access via Azure Arc Proxy source medium: Detects when secrets or configmaps are accessed, created, modified, or deleted in a Kubernetes cluster by the Azure Arc AAD proxy service account. When operations are routed through the Azure Arc Cluster Connect proxy, the Kubernetes audit log records the acting user as system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa with the actual caller identity in the impersonatedUser field. This pattern indicates that someone is accessing the cluster through the Azure ARM API rather than directly via kubectl against the API server. While legitimate for Arc-managed workflows, adversaries with stolen service principal credentials can abuse Arc Cluster Connect to read, exfiltrate, or modify secrets and configmaps while appearing as the Arc proxy service account in K8s audit logs.↳ also matches get-secrets: get secrets, list-secrets: list secrets, create-secrets: create secrets, update-secrets: update secrets, delete-secrets: delete secrets

delete-secrets: delete secrets

#
Resource
Kubernetes-secrets

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
objectRef.resourceeqsecrets1 rulesigma, splunk

Detection Rules #

View all rules referencing this event →

Sigma #

Elastic #

  • Kubernetes Secret or ConfigMap Access via Azure Arc Proxy source medium: Detects when secrets or configmaps are accessed, created, modified, or deleted in a Kubernetes cluster by the Azure Arc AAD proxy service account. When operations are routed through the Azure Arc Cluster Connect proxy, the Kubernetes audit log records the acting user as system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa with the actual caller identity in the impersonatedUser field. This pattern indicates that someone is accessing the cluster through the Azure ARM API rather than directly via kubectl against the API server. While legitimate for Arc-managed workflows, adversaries with stolen service principal credentials can abuse Arc Cluster Connect to read, exfiltrate, or modify secrets and configmaps while appearing as the Arc proxy service account in K8s audit logs.↳ also matches get-secrets: get secrets, list-secrets: list secrets, create-secrets: create secrets, update-secrets: update secrets, patch-secrets: patch secrets

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

#
Resource
Kubernetes-secrets

Description

Synthetic aggregation for rules that filter the secrets 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.

Common Indicators #

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

FieldKindValueRulesVendors
kubernetes.audit.objectRef.resourceeqsecrets4 ruleselastic
src_ipis_not_null4 ruleselastic, kusto, panther
EventTypeinget2 ruleselastic
EventTypeinlist2 ruleselastic
aws::userAgentcontainsdistrib#kali1 ruleelastic
aws::userAgentcontainskali-arm641 ruleelastic
useris_not_null1 ruleelastic, kusto, splunk
userstarts_withsystem\:serviceaccount\:1 ruleelastic

Detection Rules #

View all rules referencing this event →

Elastic #

  • Kubernetes Rapid Secret GET Activity Against Multiple Objects source high: This rule detects an unusual volume of Kubernetes API get requests against multiple distinct Secret objects from the same client fingerprint (user, source IP, and user agent) within a defined lookback window. This can indicate credential access or in-cluster reconnaissance, where a user or token is used to enumerate and retrieve sensitive data such as service account tokens, registry credentials, TLS material, or application configuration. Failed get requests are also included, as they may reveal RBAC boundaries, confirm the existence of targeted secrets, or reflect automated probing activity.
  • Kubernetes Secret get or list with Suspicious User Agent source high: Detects read access to Kubernetes Secrets (get/list) with a user agent matching a curated set of non-standard or attacker-leaning clients, for example minimal HTTP tooling, common scripting stacks, default library fingerprints, or distribution-tagged strings associated with offensive-security Linux images. Legitimate in-cluster automation usually presents stable, purpose-specific user agents (for example controller or client-go variants used by known components).
  • Kubernetes Secret get or list from Node or Pod Service Account source medium: Kubernetes audit identities for kubelet (system:node:*) and workloads (system:serviceaccount:*) are meant to operate with tight, predictable API usage. Direct get or list on the Secrets API from those principals is often a sign of credential access. Attackers who stole a pod service-account token or node credentials sweep Secret objects for tokens, registry credentials, TLS keys, or application configuration. Even denied attempts still reveal intent to reach sensitive material. Legitimate controllers do read secrets they mount or manage, so this signal is most valuable when paired with triage (namespace scope, user agent, RBAC, and whether the identity should touch those secret names at all).
Show 1 more (4 total)