ANNOUCEMENT Announcing self-paced Karpenter Lab series - START NOW
This rule checks for and lists AWS Accounts with root access key and secret key activated. nOps recommends that you use IAM roles and disable active keys when performing programmatic queries to keep your cloud environment safe and conform with the Well-Architected security best practices.
This rule can help you with the following:
To determine if your AWS IAM users have unnecessary active access keys, perform the following:
1. Sign in to the AWS Management Console using your root
credentials.
2. In the top menu, click your username
dropdown button and select the My Security Credentials
option.
3. Navigate to the Access keys (access key ID and secret access key)
section and click to expand it.
4. If you see any Access Key that has a status Active
, your AWS account is not following the best practices and has root access keys enabled.
You must deactivate these root account access keys to protect your account against unauthorized access.
5. Repeat steps 1 – 4 for other AWS accounts’ root users.
1. Execute the get-credential-report
command to retrieve your AWS account’s credential report. The report details all users in your account as well as the status of their various credentials, which may include passwords, access keys, and multi-factor authentication (MFA) devices.
aws iam get-credential-report
a. If the command returns an error, then there is no credential report existing in your account
In this case, you need to generate the credential report first using the generate-credential-report
command as shown below:
aws iam generate-credential-report
**Output**
{
"State": "STARTED",
"Description": "No report exists. Starting a new report generation task."
}
Note that a report is stored for up to four hours in your AWS account after it’s been created.
b. Execute the generate-credential-report
repeatedly until the State
status changes to Completed
.
aws iam generate-credential-report
**Output**
{
"State": "COMPLETE"
}
c. Once the report is generated, run the get-credential-report
command ****to retrieve it in CSV format.
aws iam get-credential-report
**Output**
"Content": "dXNlcixhcm4sdXNlcl9jcmVhdGlvbl90aW1lLHBhc3N3b3JkX2VuYWJsZWQscGFzc3dvcmRfbGFzdF91c2VkLHBhc3N3b3JkX2xhc3RfY2hhbmdlZCxwYXNzd29yZF9uZXh0X3JvdGF0aW9uLG1mYV9hY3RpdmUsYWNjZXNzX2tleV8xX2FjdGl2ZSxhY2Nlc3Nfa2V5XzFfbGFzdF9yb3RhdGVkLGFjY2Vzc19rZXlfMV9sYXN0X3VzZWRfZGF0ZSxhY2Nlc3Nfa2V5XzFfbGFzdF91c2VkX3JlZ2lvbixhY2Nlc3Nfa2V5XzFfbGFzdF91c2VkX3NlcnZpY2UsYWNjZXNzX2tleV8yX2FjdGl2ZSxhY2Nlc3Nfa2V5XzJfbGFzdF9yb3RhdGVkLGFjY2Vzc19rZXlfMl9sYXN0X3BCnNtYXJ0YWRtaW4sYXJuOmF3czppYW06OjY0MDA3MDIzMDAzNjp1c2VyL3NtYXJ0YWRtaW4sMjAyMS0wNi0yMFQwNToxNjo0OSswMDowMCx0cnVlLDIwMjEtMTEtMTRUMDg6NTY6MzArMDA6MDAsMjAyMS0wNi0yMFQwNToxNjo1MSswMDowMCxOL0EsZmFsc2UsZmFsc2UsMjAyMS0wNi0yMFQwNToxNjo1MCswMDowMCxOL0EsTi9BLE4vQSx0cnVlLDIwMjEtMDctMTdUMDI6NTY6NTMrMDA6MDAsMjAyMS0xMS0xM1QyMTowMDowMCswMDowMCx1cy1lYXN0LTEsaWFtLGZhbHNlLE4vQSxmYWxzZSxOL0E=",
"ReportFormat": "text/csv",
"GeneratedTime": "2021-11-14T09:16:00+00:00"
}
2. Note that the Content
is Base64 encoded. Copy the content and decode it to store in a CSV file.
echo "dXNlcixhcm4sdXNlcl9jcmVhdGlvbl90aW1lLHBhc3N3b3JkX2VuYWJsZWQscGFzc3dvcmRfbGFzdF91c2VkLHBhc3N3b3JkX2xhc3RfY2hhbmdlZCxwYXNzd29yZF9uZXh0X3JvdGF0aW9uLG1mYV9hY3RpdmUsYWNjZXNzX2tleV8xX2FjdGl2ZSxhY2Nlc3Nfa2V5XzFfbGFzdF9yb3RhdGVkLGFjY2Vzc19rZXlfMV9sYXN0X3VzZWRfZGF0ZSxhY2Nlc3Nfa2V5XzFfbGFzdF91c2VkX3JlZ2lvbixhY2Nlc3Nfa2V5XzFfbGFzdF91c2VkX3NlcnZpY2UsYWNjZXNzX2tleV8yX2FjdGl2ZSxhY2Nlc3Nfa2V5XzJfbGFzdF9yb3RhdGVkLGFjY2Vzc19rZXlfMl9sYXN0X3BCnNtYXJ0YWRtaW4sYXJuOmF3czppYW06OjY0MDA3MDIzMDAzNjp1c2VyL3NtYXJ0YWRtaW4sMjAyMS0wNi0yMFQwNToxNjo0OSswMDowMCx0cnVlLDIwMjEtMTEtMTRUMDg6NTY6MzArMDA6MDAsMjAyMS0wNi0yMFQwNToxNjo1MSswMDowMCxOL0EsZmFsc2UsZmFsc2UsMjAyMS0wNi0yMFQwNToxNjo1MCswMDowMCxOL0EsTi9BLE4vQSx0cnVlLDIwMjEtMDctMTdUMDI6NTY6NTMrMDA6MDAsMjAyMS0xMS0xM1QyMTowMDowMCswMDowMCx1cy1lYXN0LTEsaWFtLGZhbHNlLE4vQSxmYWxzZSxOL0E=" | base64 -d >> credentials.csv
3. Open the credentials.csv
file and search for column names with the access_key_N_active pattern (e.g., *access_key_1_active, access_key_2_active, etc.*) for the AWS root account. If there is any value set to TRUE for the root user
, then your AWS root account has at least one access key active.
4. Repeat steps 1 – 3 for each AWS root account that you want to examine.
Perform the following steps to remove any active access keys for your AWS root account.:
1. Sign in to the AWS Management Console using your root
credentials.
2. In the top menu, click your username
dropdown button and select the My Security Credentials
option.
3. Navigate to the Access keys (access key ID and secret access key)
section and left-click to expand.
4. As mentioned in the audit section, check for any keys with the status set to Active and click on the Delete link available in the Actions column.
5. Click the Deactivate Access Key
option and enter the Access Key ID
.
6. Delete
to confirm your action.
The access key status should change now from Active to Deleted.
Currently, deleting AWS root access keys via CLI is not supported.
© nOps 2024. All Rights Reserved.