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/09/18"
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 "Noise: Low",
68 "Performance: Fast",
69 "Rule Type: Custom Query (KQL)",
70 "Platform: AWS",
71 "Domain: Containers",
72 "Service: AWS EKS",
73]
74timestamp_override = "event.ingested"
75type = "query"
76query = '''
77data_stream.dataset:"aws.cloudtrail" and event.provider:"eks.amazonaws.com" and
78event.action:("CreateAccessEntry" or "AssociateAccessPolicy" or "UpdateAccessEntry" or "DisassociateAccessPolicy" or "DeleteAccessEntry") and
79event.outcome:"success" and
80not aws.cloudtrail.user_identity.arn:(*AWSServiceRoleForAmazonEKS* or *eksctl* or *terraform* or *AWSCloudFormation*)
81'''
82
83[rule.investigation_fields]
84field_names = [
85 "@timestamp",
86 "user.name",
87 "user_agent.original",
88 "source.ip",
89 "aws.cloudtrail.user_identity.arn",
90 "aws.cloudtrail.user_identity.type",
91 "event.action",
92 "event.outcome",
93 "cloud.account.id",
94 "cloud.region",
95 "aws.cloudtrail.request_parameters",
96 "aws.cloudtrail.response_elements",
97]
98
99[[rule.threat]]
100framework = "MITRE ATT&CK"
101
102[[rule.threat.technique]]
103id = "T1098"
104name = "Account Manipulation"
105reference = "https://attack.mitre.org/techniques/T1098/"
106
107[[rule.threat.technique.subtechnique]]
108id = "T1098.006"
109name = "Additional Container Cluster Roles"
110reference = "https://attack.mitre.org/techniques/T1098/006/"
111
112[rule.threat.tactic]
113id = "TA0003"
114name = "Persistence"
115reference = "https://attack.mitre.org/tactics/TA0003/"
116
117[[rule.threat]]
118framework = "MITRE ATT&CK"
119
120[[rule.threat.technique]]
121id = "T1098"
122name = "Account Manipulation"
123reference = "https://attack.mitre.org/techniques/T1098/"
124
125[[rule.threat.technique.subtechnique]]
126id = "T1098.006"
127name = "Additional Container Cluster Roles"
128reference = "https://attack.mitre.org/techniques/T1098/006/"
129
130[rule.threat.tactic]
131id = "TA0004"
132name = "Privilege Escalation"
133reference = "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 EKS Control Plane Logging Disabled
- AWS EC2 Instance Profile Associated with Running Instance
- AWS IAM Inline Policy Added to a Group
- AWS IAM Sensitive Operations via Lambda Execution Role