Check ID:
Provider: AWS
Service:
Severity: MEDIUM
Categories:
Resource type:
iam_user_no_setup_initial_access_keyProvider: AWS
Service:
iamSeverity: MEDIUM
Categories:
identity-access, secretsResource type:
AwsIamUserWhat this check verifies
IAM users with a console password and active access keys that havelast_used as N/A are identified.
This highlights accounts where programmatic credentials exist but have never been exercised.
Risk
Active yet unused access keys expand the attack surface. If exposed, attackers gain programmatic access for unauthorized API calls, causing data exfiltration (confidentiality), unauthorized changes (integrity), and service disruption (availability). Dormant keys also bloat credential inventory, delaying detection and rotation.Recommendation
Apply least privilege to programmatic access:- Do not provision access keys by default for console users
- Prefer IAM roles and temporary credentials
- Require justification and time-bounded key creation
- Regularly review usage and disable/delete unused keys
- Limit to one active key per user and enforce rotation with monitoring
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
aws iam delete-access-key —user-name <example_resource_name> —access-key-id <example_resource_id>
References
- https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html
- https://support.icompaas.com/support/solutions/articles/62000228293-ensure-there-is-only-one-active-access-key-available-for-any-single-iam-user
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = iam_user_no_setup_initial_access_key. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks