| name | cis-aws-foundations-2.4 |
| description | Ensure no 'root' user account access key exists |
| category | cis-iam |
| version | 7.0.0 |
| author | cyberstrike-official |
| tags | ["cis","aws","iam","root","access-key","credentials"] |
| cis_id | 2.4 |
| cis_benchmark | CIS AWS Foundations Benchmark v7.0.0 |
| tech_stack | ["aws"] |
| cwe_ids | [] |
| chains_with | ["cis-aws-foundations-2.5","cis-aws-foundations-2.6","cis-aws-foundations-2.7"] |
| prerequisites | [] |
| severity_boost | {} |
Ensure no 'root' user account access key exists
Description
The 'root' user account is the most privileged user in an AWS account. AWS access keys provide programmatic access to a given AWS account. It is recommended that all access keys associated with the 'root' user account be deleted.
Rationale
Deleting access keys associated with the 'root' user account limits the vectors by which the account can be compromised. Additionally, removing 'root' access keys encourages the use of role-based access with least privilege.
Impact
Root access keys significantly increase the risk of account compromise, as they provide unrestricted programmatic access with no built-in scope limitations.
Audit Procedure
Using AWS Console
- Login to the IAM Management Console (https://console.aws.amazon.com/iam).
- Click on
Credential Report.
- Download the
.csv file which contains credential usage for all IAM users within an AWS Account.
- Open the file.
- For the
root user, ensure the access_key_1_active and access_key_2_active fields are set to FALSE.
Using AWS CLI
- Run the following command:
aws iam get-account-summary | grep "AccountAccessKeysPresent"
- If no 'root' access keys exist the output will show
"AccountAccessKeysPresent": 0,
- If the output shows a "1", then 'root' keys exist and should be deleted.
Expected Result
"AccountAccessKeysPresent": 0 -- no root access keys exist.
Remediation
Using AWS Console
- Sign in to the AWS Management Console as 'root' and open the IAM console at https://console.aws.amazon.com/iam/.
- Click on
<root_account> at the top right and select Security Credentials from the drop down list.
- Click on
Access Keys (Access Key ID and Secret Access Key).
- If there are active keys:
- Deactivate the key under
Status.
- Click
Delete (Deleted keys cannot be recovered).
Note: While a key can be made inactive, it will still appear in CLI audit output and may result in a false positive. Keys should be deleted to ensure compliance.