Services
| Operation | Description | Sample | Rule |
|---|---|---|---|
| get-services | Y | N | |
| list-services | Y | N | |
| watch-services | Y | N | |
| create-services | Service created (NodePort/LoadBalancer exposure = persistence or C2 channel). | Y | Y |
| update-services | Changes an existing Service, e.g. switching its type to NodePort for external exposure. Elastic covers update alongside create and patch. | Y | Y |
| patch-services | Same NodePort exposure signal as update, via patch, applied to an already-approved Service rather than a new, more visible one. | Y | Y |
| delete-services | Y | Y | |
| deletecollection-services | Y | N | |
| get-services-proxy | N | N | |
| create-services-proxy | N | N | |
| update-services-proxy | N | N | |
| patch-services-proxy | N | N | |
| delete-services-proxy | N | N | |
| get-services-status | Y | N | |
| update-services-status | Y | N | |
| patch-services-status | Y | N | |
| any-services | Synthetic aggregation for rules that filter the services resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone. | N | N |
get services
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services",
"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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:47:04.318724Z",
"stageTimestamp": "2026-07-02T04:47:04.320323Z",
"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 services
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services?limit=500&timeout=3s",
"verb": "list",
"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": "services",
"namespace": "dw-harn",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:47:04.445621Z",
"stageTimestamp": "2026-07-02T04:47:04.449541Z",
"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 services
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services?resourceVersion=1404&timeout=3s&watch=true",
"verb": "watch",
"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": "services",
"namespace": "dw-harn",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:47:04.451062Z",
"stageTimestamp": "2026-07-02T04:47:07.452795Z",
"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 services
#Description
Service created (NodePort/LoadBalancer exposure = persistence or C2 channel).
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "bf70c113-4df3-407e-8804-6c9363498fe0",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/default/services?fieldManager=kubectl-client-side-apply&fieldValidation=Strict",
"verb": "create",
"user": {
"username": "kubernetes-admin",
"uid": "aws-iam-authenticator:591511147606:AIDAYTOGP2RLJGRCUIGJZ",
"groups": [
"system:masters",
"system:authenticated"
]
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.27.2 (darwin/arm64) kubernetes/7f6f68f",
"objectRef": {
"resource": "services",
"namespace": "default",
"name": "nginx",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 201
},
"requestObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"namespace": "default",
"creationTimestamp": null,
"labels": {
"name": "nginx"
},
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": {
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"annotations": {},
"labels": {
"name": "nginx"
},
"name": "nginx",
"namespace": "default"
},
"spec": {
"ports": [
{
"name": "http",
"nodePort": 30080,
"port": 80
}
],
"selector": {
"name": "nginx"
},
"type": "NodePort"
}
}
}
},
"spec": {
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 80,
"nodePort": 30080
}
],
"selector": {
"name": "nginx"
},
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"namespace": "default",
"uid": "f5348e0d-31d1-4407-9114-ca124798397b",
"resourceVersion": "2618495",
"creationTimestamp": "2023-12-13T16:12:47Z",
"labels": {
"name": "nginx"
},
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": {
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"annotations": {},
"labels": {
"name": "nginx"
},
"name": "nginx",
"namespace": "default"
},
"spec": {
"ports": [
{
"name": "http",
"nodePort": 30080,
"port": 80
}
],
"selector": {
"name": "nginx"
},
"type": "NodePort"
}
}
}
},
"spec": {
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 80,
"nodePort": 30080
}
],
"selector": {
"name": "nginx"
},
"clusterIP": "10.100.131.54",
"clusterIPs": [
"10.100.131.54"
],
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2023-12-13T16:12:47.977900Z",
"stageTimestamp": "2023-12-13T16:12:48.027898Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": ""
}
}
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 |
|---|---|---|---|---|
verb | eq | create | 4 rules | falco, panther, splunk |
objectRef.resource | eq | services | 3 rules | falco, splunk |
stage (falco rule field) | eq | responsecomplete | 2 rules | falco |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → NodePort opens a port on each worker node hosting the service and forwards external traffic to labeled pods. Confirm whether the exposure was approved and which workloads are reachable. Disclaimer: This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs. Kubernetes NodePort services enable external access to cluster pods by opening a port on each worker node. This can be exploited by attackers to bypass network security, intercept traffic, or establish unauthorized communication channels. The detection rule identifies suspicious NodePort service creation or modification by monitoring Kubernetes audit logs for specific actions and authorization decisions, helping to mitigate potential security risks. The Kubernetes Fleet integration with Audit Logs enabled or similarly structured data is required to be compatible with this rule.Elastic #
T1133↳ also matches update-services: update services, patch-services: patch services Investigation guide
Triage and analysis#
Investigating GKE Exposed Service Created With Type NodePort#
Possible investigation steps#
client.user.email, source.ip, and user_agent.original.gcp.audit.resource_name and gcp.audit.request for the service name, namespace, selector, and port.False positive analysis#
system:addon-manager patch is excluded; unexpected create or update from that actor should still be investigated.Response and remediation#
T1133↳ also matches update-services: update services, patch-services: patch services Investigation guide
Triage and analysis#
Investigating Kubernetes Exposed Service Created With Type NodePort#
Possible investigation steps#
False positive analysis#
Response and remediation#
Setup#
Splunk #
T1204Panther #
T1190T1190Falco #
References #
update services
#Description
Changes an existing Service, e.g. switching its type to NodePort for external exposure. Elastic covers update alongside create and patch.
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services?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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"uid": "00000000-0000-0000-0000-000000000000",
"apiVersion": "v1",
"resourceVersion": "555"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "555",
"creationTimestamp": "2026-07-02T21:30:27Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.242.55",
"clusterIPs": [
"10.96.242.55"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "555",
"creationTimestamp": "2026-07-02T21:30:27Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.242.55",
"clusterIPs": [
"10.96.242.55"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2026-07-02T21:30:31.122255Z",
"stageTimestamp": "2026-07-02T21:30:31.125073Z",
"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\""
}
}
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → NodePort opens a port on each worker node hosting the service and forwards external traffic to labeled pods. Confirm whether the exposure was approved and which workloads are reachable. Disclaimer: This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs. Kubernetes NodePort services enable external access to cluster pods by opening a port on each worker node. This can be exploited by attackers to bypass network security, intercept traffic, or establish unauthorized communication channels. The detection rule identifies suspicious NodePort service creation or modification by monitoring Kubernetes audit logs for specific actions and authorization decisions, helping to mitigate potential security risks. The Kubernetes Fleet integration with Audit Logs enabled or similarly structured data is required to be compatible with this rule.Elastic #
T1133↳ also matches create-services: create services, patch-services: patch services Investigation guide
Triage and analysis#
Investigating GKE Exposed Service Created With Type NodePort#
Possible investigation steps#
client.user.email, source.ip, and user_agent.original.gcp.audit.resource_name and gcp.audit.request for the service name, namespace, selector, and port.False positive analysis#
system:addon-manager patch is excluded; unexpected create or update from that actor should still be investigated.Response and remediation#
T1133↳ also matches create-services: create services, patch-services: patch services Investigation guide
Triage and analysis#
Investigating Kubernetes Exposed Service Created With Type NodePort#
Possible investigation steps#
False positive analysis#
Response and remediation#
Setup#
References #
patch services
#Description
Same NodePort exposure signal as update, via patch, applied to an already-approved Service rather than a new, more visible one.
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services?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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"metadata": {
"labels": {
"dw-harn-patched": "1"
}
}
},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1412",
"creationTimestamp": "2026-07-02T04:47:04Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.31.22",
"clusterIPs": [
"10.96.31.22"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2026-07-02T04:47:07.529860Z",
"stageTimestamp": "2026-07-02T04:47:07.535873Z",
"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\""
}
}
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → NodePort opens a port on each worker node hosting the service and forwards external traffic to labeled pods. Confirm whether the exposure was approved and which workloads are reachable. Disclaimer: This investigation guide was created using generative AI technology and has been reviewed to improve its accuracy and relevance. While every effort has been made to ensure its quality, we recommend validating the content and adapting it to suit your specific environment and operational needs. Kubernetes NodePort services enable external access to cluster pods by opening a port on each worker node. This can be exploited by attackers to bypass network security, intercept traffic, or establish unauthorized communication channels. The detection rule identifies suspicious NodePort service creation or modification by monitoring Kubernetes audit logs for specific actions and authorization decisions, helping to mitigate potential security risks. The Kubernetes Fleet integration with Audit Logs enabled or similarly structured data is required to be compatible with this rule.Elastic #
T1133↳ also matches create-services: create services, update-services: update services Investigation guide
Triage and analysis#
Investigating GKE Exposed Service Created With Type NodePort#
Possible investigation steps#
client.user.email, source.ip, and user_agent.original.gcp.audit.resource_name and gcp.audit.request for the service name, namespace, selector, and port.False positive analysis#
system:addon-manager patch is excluded; unexpected create or update from that actor should still be investigated.Response and remediation#
T1133↳ also matches create-services: create services, update-services: update services Investigation guide
Triage and analysis#
Investigating Kubernetes Exposed Service Created With Type NodePort#
Possible investigation steps#
False positive analysis#
Response and remediation#
Setup#
References #
delete services
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services",
"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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"kind": "DeleteOptions",
"apiVersion": "meta.k8s.io/__internal",
"propagationPolicy": "Background"
},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1415",
"creationTimestamp": "2026-07-02T04:47:04Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.31.22",
"clusterIPs": [
"10.96.31.22"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2026-07-02T04:47:07.600969Z",
"stageTimestamp": "2026-07-02T04:47:07.609602Z",
"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\""
}
}
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 |
|---|---|---|---|---|
objectRef.resource (falco rule field) | eq | services | 1 rule | falco |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries →Falco #
References #
deletecollection services
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services?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": "services",
"namespace": "dw-harn",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"responseObject": {
"kind": "ServiceList",
"apiVersion": "v1",
"metadata": {
"resourceVersion": "629"
},
"items": [
{
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "625",
"creationTimestamp": "2026-07-02T23:12:28Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.89.6",
"clusterIPs": [
"10.96.89.6"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
}
]
},
"requestReceivedTimestamp": "2026-07-02T23:12:31.886267Z",
"stageTimestamp": "2026-07-02T23:12:31.897848Z",
"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 #
get services/proxy
#create services/proxy
#update services/proxy
#patch services/proxy
#delete services/proxy
#get services/status
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services/status",
"verb": "get",
"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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"apiVersion": "v1",
"subresource": "status"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T21:30:31.191721Z",
"stageTimestamp": "2026-07-02T21:30:31.193245Z",
"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 services/status
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services/status?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": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"uid": "00000000-0000-0000-0000-000000000000",
"apiVersion": "v1",
"resourceVersion": "555",
"subresource": "status"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "555",
"creationTimestamp": "2026-07-02T21:30:27Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.242.55",
"clusterIPs": [
"10.96.242.55"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "555",
"creationTimestamp": "2026-07-02T21:30:27Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.242.55",
"clusterIPs": [
"10.96.242.55"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2026-07-02T21:30:31.323280Z",
"stageTimestamp": "2026-07-02T21:30:31.326314Z",
"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 services/status
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/dw-harn/services/dw-harn-services/status?fieldManager=kubectl-patch",
"verb": "patch",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=786fc563dbb253683c44d23d0aac3742ea61ade7f27a43f50934a82662e15409"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "services",
"namespace": "dw-harn",
"name": "dw-harn-services",
"apiVersion": "v1",
"subresource": "status"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {},
"responseObject": {
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "dw-harn-services",
"namespace": "dw-harn",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "557",
"creationTimestamp": "2026-07-02T22:17:08Z",
"labels": {
"dw-harn-patched": "1"
}
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 80,
"targetPort": 80
}
],
"selector": {
"app": "dw-harn"
},
"clusterIP": "10.96.151.58",
"clusterIPs": [
"10.96.151.58"
],
"type": "ClusterIP",
"sessionAffinity": "None",
"ipFamilies": [
"IPv4"
],
"ipFamilyPolicy": "SingleStack",
"internalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {}
}
},
"requestReceivedTimestamp": "2026-07-02T22:17:11.939864Z",
"stageTimestamp": "2026-07-02T22:17:11.941957Z",
"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 services (synthetic aggregation)
#Description
Synthetic aggregation for rules that filter the services resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.