AWS EKS Access Entry Modified
Detects successful Amazon EKS Access Entries API operations that create, update, attach, detach, or delete authentication mappings between IAM principals and the cluster. Changes to access entries alter who can authenticate to Kubernetes and what Kubernetes-level permissions they receive, without requiring edits to in-cluster RBAC objects. Unexpected callers or timing may indicate persistence or privilege abuse. Common automation identities (service-linked roles, eksctl, Terraform, CloudFormation role patterns) are excluded to reduce noise; tune further for your deployment pipelines.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/05/06"
3integration = ["aws"]
4maturity = "production"
5updated_date = "2026/05/06"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects successful Amazon EKS Access Entries API operations that create, update, attach, detach, or delete authentication
11mappings between IAM principals and the cluster. Changes to access entries alter who can authenticate to Kubernetes and
12what Kubernetes-level permissions they receive, without requiring edits to in-cluster RBAC objects. Unexpected callers
13or timing may indicate persistence or privilege abuse. Common automation identities (service-linked roles, eksctl,
14Terraform, CloudFormation role patterns) are excluded to reduce noise; tune further for your deployment pipelines.
15"""
16false_positives = [
17 """
18 Cluster provisioning, GitOps, or approved platform automation may perform these APIs under IAM principals whose ARNs do
19 not match the exclusion patterns. Baseline expected roles and expand exclusions if needed.
20 """,
21]
22from = "now-6m"
23index = ["filebeat-*", "logs-aws.cloudtrail-*"]
24language = "kuery"
25license = "Elastic License v2"
26name = "AWS EKS Access Entry Modified"
27note = """## Triage and analysis
28
29### Investigating AWS EKS Access Entry Modified
30
31Review aws.cloudtrail.user_identity (ARN, type), user.name, source.ip, user_agent.original, cloud.account.id, and
32cloud.region. Map event.action to intent: new principal (CreateAccessEntry), policy binding changes (AssociateAccessPolicy,
33DisassociateAccessPolicy), metadata updates (UpdateAccessEntry), or removal (DeleteAccessEntry).
34
35### Possible investigation steps
36
37- Inspect aws.cloudtrail.request_parameters and response_elements for cluster name, principal ARN, and policy ARNs.
38- Compare against change management and infrastructure-as-code deploy windows.
39- Correlate with Kubernetes audit logs for subsequent API activity from identities tied to the affected access entry.
40- Pair with the higher-fidelity rule EKS Access Entry Granted Cluster Admin Policy when AssociateAccessPolicy fires.
41
42### Response and remediation
43
44- If unauthorized, revert access entry changes via AWS APIs or console; restrict eks:* permissions and review SCPs.
45- Rotate credentials for compromised IAM principals as appropriate.
46
47### Additional information
48
49- [Amazon EKS access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)
50"""
51references = [
52 "https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html",
53]
54risk_score = 47
55rule_id = "90c0ce77-3fb4-484f-a8ad-4648e12b35b1"
56severity = "medium"
57tags = [
58 "Domain: Cloud",
59 "Domain: Kubernetes",
60 "Data Source: AWS",
61 "Data Source: Amazon Web Services",
62 "Data Source: AWS CloudTrail",
63 "Use Case: Threat Detection",
64 "Tactic: Persistence",
65 "Tactic: Privilege Escalation",
66 "Resources: Investigation Guide",
67]
68timestamp_override = "event.ingested"
69type = "query"
70query = '''
71data_stream.dataset:"aws.cloudtrail" and event.provider:"eks.amazonaws.com" and
72event.action:("CreateAccessEntry" or "AssociateAccessPolicy" or "UpdateAccessEntry" or "DisassociateAccessPolicy" or "DeleteAccessEntry") and
73event.outcome:"success" and
74not aws.cloudtrail.user_identity.arn:(*AWSServiceRoleForAmazonEKS* or *eksctl* or *terraform* or *AWSCloudFormation*)
75'''
76
77[rule.investigation_fields]
78field_names = [
79 "@timestamp",
80 "user.name",
81 "user_agent.original",
82 "source.ip",
83 "aws.cloudtrail.user_identity.arn",
84 "aws.cloudtrail.user_identity.type",
85 "event.action",
86 "event.outcome",
87 "cloud.account.id",
88 "cloud.region",
89 "aws.cloudtrail.request_parameters",
90 "aws.cloudtrail.response_elements",
91]
92
93[[rule.threat]]
94framework = "MITRE ATT&CK"
95
96[[rule.threat.technique]]
97id = "T1098"
98name = "Account Manipulation"
99reference = "https://attack.mitre.org/techniques/T1098/"
100
101[[rule.threat.technique.subtechnique]]
102id = "T1098.006"
103name = "Additional Container Cluster Roles"
104reference = "https://attack.mitre.org/techniques/T1098/006/"
105
106[rule.threat.tactic]
107id = "TA0003"
108name = "Persistence"
109reference = "https://attack.mitre.org/tactics/TA0003/"
110
111[[rule.threat]]
112framework = "MITRE ATT&CK"
113
114[[rule.threat.technique]]
115id = "T1098"
116name = "Account Manipulation"
117reference = "https://attack.mitre.org/techniques/T1098/"
118
119[[rule.threat.technique.subtechnique]]
120id = "T1098.006"
121name = "Additional Container Cluster Roles"
122reference = "https://attack.mitre.org/techniques/T1098/006/"
123
124[rule.threat.tactic]
125id = "TA0004"
126name = "Privilege Escalation"
127reference = "https://attack.mitre.org/tactics/TA0004/"
Triage and analysis
Investigating AWS EKS Access Entry Modified
Review aws.cloudtrail.user_identity (ARN, type), user.name, source.ip, user_agent.original, cloud.account.id, and cloud.region. Map event.action to intent: new principal (CreateAccessEntry), policy binding changes (AssociateAccessPolicy, DisassociateAccessPolicy), metadata updates (UpdateAccessEntry), or removal (DeleteAccessEntry).
Possible investigation steps
- Inspect aws.cloudtrail.request_parameters and response_elements for cluster name, principal ARN, and policy ARNs.
- Compare against change management and infrastructure-as-code deploy windows.
- Correlate with Kubernetes audit logs for subsequent API activity from identities tied to the affected access entry.
- Pair with the higher-fidelity rule EKS Access Entry Granted Cluster Admin Policy when AssociateAccessPolicy fires.
Response and remediation
- If unauthorized, revert access entry changes via AWS APIs or console; restrict eks:* permissions and review SCPs.
- Rotate credentials for compromised IAM principals as appropriate.
Additional information
References
Related rules
- AWS EKS Access Entry Granted Cluster Admin Policy
- AWS Sensitive IAM Operations Performed via CloudShell
- AWS IAM Sensitive Operations via Lambda Execution Role
- AWS IAM API Calls via Temporary Session Tokens
- AWS RDS DB Instance or Cluster Password Modified