ConfigMaps Kubernetes-configmaps
8 operations, identified by Operation in the audit log.
| Operation | Description |
|---|---|
| get-configmaps | |
| list-configmaps | |
| watch-configmaps | |
| create-configmaps | |
| update-configmaps | ConfigMap modified (e.g. CoreDNS config or aws-auth in kube-system). |
| patch-configmaps | |
| delete-configmaps | |
| any-configmaps | Synthetic aggregation for rules that filter the configmaps resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone. |
get-configmaps: get configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
kubernetes.audit.verb | in | delete | 1 rule | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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 list-configmaps: list configmaps, create-configmaps: create configmaps, update-configmaps: update configmaps, patch-configmaps: patch configmaps, delete-configmaps: delete configmaps
list-configmaps: list configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
kubernetes.audit.verb | in | delete | 1 rule | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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-configmaps: get configmaps, create-configmaps: create configmaps, update-configmaps: update configmaps, patch-configmaps: patch configmaps, delete-configmaps: delete configmaps
watch-configmaps: watch configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time the apiserver received the request. |
create-configmaps: create configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
kubernetes.audit.verb | in | delete | 1 rule | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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-configmaps: get configmaps, list-configmaps: list configmaps, update-configmaps: update configmaps, patch-configmaps: patch configmaps, delete-configmaps: delete configmaps
update-configmaps: update configmaps
#Description
ConfigMap modified (e.g. CoreDNS config or aws-auth in kube-system).
Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
kubernetes.audit.verb | in | delete | 3 rules | elastic |
kubernetes.audit.verb | in | patch | 3 rules | elastic |
kubernetes.audit.verb | in | update | 3 rules | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
kubernetes.audit.objectRef.namespace | eq | kube-system | 2 rules | elastic |
kubernetes.audit.objectRef.resource | eq | configmaps | 2 rules | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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-configmaps: get configmaps, list-configmaps: list configmaps, create-configmaps: create configmaps, patch-configmaps: patch configmaps, delete-configmaps: delete configmaps
patch-configmaps: patch configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
kubernetes.audit.verb | in | delete | 3 rules | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
kubernetes.audit.objectRef.namespace | eq | kube-system | 2 rules | elastic |
kubernetes.audit.objectRef.resource | eq | configmaps | 2 rules | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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-configmaps: get configmaps, list-configmaps: list configmaps, create-configmaps: create configmaps, update-configmaps: update configmaps, delete-configmaps: delete configmaps
delete-configmaps: delete configmaps
#Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
kubernetes.audit.verb | in | delete | 3 rules | elastic |
kubernetes.audit.verb | in | get | 1 rule | elastic |
kubernetes.audit.verb | in | list | 1 rule | elastic |
kubernetes.audit.objectRef.namespace | eq | kube-system | 2 rules | elastic |
kubernetes.audit.objectRef.resource | eq | configmaps | 2 rules | elastic |
kubernetes.audit.objectRef.resource | in | configmaps | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | secrets | 1 rule | elastic |
Esql.timestamp_first_seen | ge | NOW() - 9 | 1 rule | elastic |
Detection Rules #
View all rules referencing this event →Elastic #
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-configmaps: get configmaps, list-configmaps: list configmaps, create-configmaps: create configmaps, update-configmaps: update configmaps, patch-configmaps: patch configmaps
any-configmaps: any verb on configmaps (synthetic aggregation)
#Description
Synthetic aggregation for rules that filter the configmaps resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.
Fields #
| Name | Description |
|---|---|
verb | The request verb (get, list, watch, create, update, replace, patch, delete, deletecollection, ...). |
objectRef.resource | The targeted resource type (plural API name, e.g. pods, secrets). |
objectRef.subresource | The targeted subresource, when present (e.g. exec, log, token). |
objectRef.namespace | Namespace of the targeted object (empty for cluster-scoped resources). |
objectRef.name | Name of the targeted object. |
objectRef.apiGroup | API group of the targeted resource (empty string for core group). |
user.username | Authenticated identity that issued the request (user or service account). |
user.groups | Groups of the requesting identity. |
sourceIPs | Source IP addresses of the request. |
responseStatus.code | HTTP status code of the API response (200, 201, 403, 404, ...). |
stage | Audit stage: RequestReceived, ResponseStarted, ResponseComplete, Panic. |
requestReceivedTimestamp | Time 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.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
EventType | in | get | 1 rule | elastic |
EventType | in | list | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | clusterrolebindings | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | namespaces | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | nodes | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | pods | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | rolebindings | 1 rule | elastic |
kubernetes.audit.objectRef.resource | in | serviceaccounts | 1 rule | elastic |
user | is_not_null | | 1 rule | elastic, kusto, splunk |
Detection Rules #
View all rules referencing this event →Elastic #
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.