Detection rules › Sigma
IAM Access Key Created
Detects when an IAM access key is created via CreateAccessKey. Attackers create access keys for persistence after compromising an account, often targeting an existing user or a newly created backdoor user. Note: This is different from CreateApiKey (AppSync/API Gateway).
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Persistence | T1098.001 Account Manipulation: Additional Cloud Credentials |
Event coverage
| Provider | Event |
|---|---|
| AWS-iam | CreateAccessKey |
Rules detecting the same action
Other rules on this platform that filter on the same API call or operation.
- AWS IAM Backdoor Users Keys (Sigma)
- AWS IAM S3Browser User or AccessKey Creation (Sigma)
- AWS IAM Sensitive Operations via Lambda Execution Role (Elastic)
- AWS IAM User Created Access Keys For Another User (Elastic)
- AWS Sensitive IAM Operations Performed via CloudShell (Elastic)
- AWS User API Key Created (Panther)
- High-Risk Cross-Cloud User Impersonation (Kusto)
- IAM Access Key Creation Attempt (Sigma)
Rule body yaml
title: IAM Access Key Created
id: 2c4d6e8f-0a1b-3c5d-7e9f-1a2b3c4d5e6f
status: test
description: |
Detects when an IAM access key is created via CreateAccessKey.
Attackers create access keys for persistence after compromising an account,
often targeting an existing user or a newly created backdoor user.
Note: This is different from CreateApiKey (AppSync/API Gateway).
references:
- https://attack.mitre.org/techniques/T1098/001/
- https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html
author: nishikawaakira (@nishikawaakira)
date: 2026-05-03
modified: 2026-05-29
tags:
- attack.persistence
- attack.t1098.001
logsource:
product: aws
service: cloudtrail
detection:
selection:
eventSource: iam.amazonaws.com
eventName: CreateAccessKey
filter:
errorCode|exists: true
condition: selection and not filter
falsepositives:
- Legitimate key rotation by administrators or automation
level: medium
Stages and Predicates
Stage 0: condition
selection and not filterStage 1: selection
selection:
eventSource: iam.amazonaws.com
eventName: CreateAccessKey
Stage 2: not filter
filter:
errorCode|exists: true
Exclusions
Top-level NOT(...) conjuncts: predicates this rule actively suppresses.
| Field | Kind | Excluded values |
|---|---|---|
errorCode | is_not_null |
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
eventName | eq |
|
eventSource | eq |
|