SelfSubjectAccessReviews
| Operation | Description | Sample | Rule |
|---|---|---|---|
| create-selfsubjectaccessreviews | SelfSubjectAccessReview created (suspicious self-subject permission check; reconnaissance). | Y | Y |
create selfsubjectaccessreviews
#Description
SelfSubjectAccessReview created (suspicious self-subject permission check; reconnaissance).
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/authorization.k8s.io/v1/selfsubjectaccessreviews",
"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": "selfsubjectaccessreviews",
"apiGroup": "authorization.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 201
},
"requestObject": {
"kind": "SelfSubjectAccessReview",
"apiVersion": "authorization.k8s.io/v1",
"metadata": {},
"spec": {
"resourceAttributes": {
"namespace": "dw-harn",
"verb": "get",
"resource": "pods"
}
},
"status": {
"allowed": false
}
},
"responseObject": {
"kind": "SelfSubjectAccessReview",
"apiVersion": "authorization.k8s.io/v1",
"metadata": {},
"spec": {
"resourceAttributes": {
"namespace": "dw-harn",
"verb": "get",
"resource": "pods"
}
},
"status": {
"allowed": true,
"reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
},
"requestReceivedTimestamp": "2026-07-02T04:48:59.522072Z",
"stageTimestamp": "2026-07-02T04:48:59.522936Z",
"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 |
|---|---|---|---|---|
kubernetes.audit.objectRef.resource (elastic rule field) | in | selfsubjectaccessreviews | 2 rules | elastic |
kubernetes.audit.objectRef.resource (elastic rule field) | in | selfsubjectrulesreviews | 2 rules | elastic |
azure.platformlogs.properties.log.verb (elastic rule field) | eq | create | 1 rule | elastic |
kubernetes.audit.impersonatedUser.username (elastic rule field) | starts_with | system:node: | 1 rule | elastic |
kubernetes.audit.user.username (elastic rule field) | starts_with | system:serviceaccount: | 1 rule | elastic |
kubernetes.audit.verb (elastic rule field) | eq | create | 1 rule | elastic |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → AKS kube-audit events are carried under the flattened Review the calling service account or node identity and subsequent API activity. The GCP Fleet integration with GKE audit logs enabled is required to be compatible with this rule. 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 uses APIs like selfsubjectaccessreview and selfsubjectrulesreview to allow entities to check their own permissions. While useful for debugging, adversaries can exploit these APIs to assess their access level after compromising service accounts or nodes. The detection rule identifies unusual API calls by non-human identities, flagging potential unauthorized privilege enumeration attempts. The Kubernetes Fleet integration with Audit Logs enabled or similarly structured data is required to be compatible with this rule.Elastic #
T1069, T1069.003, T1613Investigation guide
Triage and analysis#
Investigating Azure AKS Suspicious Self-Subject Review by Service Account or Node Identity#
azure.platformlogs.properties.log.* subtree and share the ARM operation event.action: Microsoft.ContainerService/managedClusters/diagnosticLogs/Read. A selfsubjectaccessreviews or selfsubjectrulesreviews create lets the caller enumerate its own effective permissions. Service account and node identities issuing these reviews outside of known controllers can indicate a stolen token mapping out what it can reach.Possible investigation steps#
azure.platformlogs.properties.log.user.username and its groups in azure.platformlogs.properties.log.user.groups, and whether that service account or node routinely performs self-subject reviews. Check azure.platformlogs.properties.log.impersonatedUser.username: when populated, the review was issued via impersonation (e.g. kubectl auth can-i --as=<service account>) and the real actor is the impersonating user, not the service account in user.username.azure.platformlogs.properties.log.objectRef.resource (selfsubjectaccessreviews or selfsubjectrulesreviews) and the azure.platformlogs.properties.log.requestObject to see what access was checked, plus the API path in azure.platformlogs.properties.log.requestURI. Inspect azure.platformlogs.properties.log.userAgent to distinguish interactive tooling (kubectl) from custom recon tooling or in-cluster SDKs.azure.platformlogs.properties.log.sourceIPs. Control-plane and in-cluster agents use loopback (127.0.0.1/::1) or pod-network addresses (e.g. 10.244.0.0/16); an external caller wielding a service account token is more suspicious. Pivot on the source for related API activity, denied requests, exec sessions, or RBAC changes from the same identity.False positive analysis#
system:serviceaccount:azure-arc:*) legitimately submit these reviews and are already excluded; add other validated platform controllers as they are baselined.azure.platformlogs.properties.log.impersonatedUser.username.Response and remediation#
T1069, T1069.003, T1613Investigation guide
Triage and analysis#
Investigating GKE Suspicious Self-Subject Review via Service Account#
Investigation steps#
user.email and event.action (selfsubjectaccessreviews or selfsubjectrulesreviews).False positives#
Setup#
T1069, T1069.003, T1613Investigation guide
Triage and analysis#
Investigating Kubernetes Suspicious Self-Subject Review via Unusual User Agent#
Possible investigation steps#
False positive analysis#
Response and remediation#
Setup#