Accelerate your SSE journey. Join Netskope at RSA.

  • Security Service Edge Products

    Protect against advanced and cloud-enabled threats and safeguard data across all vectors.

  • Borderless SD-WAN

    Confidently provide secure, high-performance access to every remote user, device, site, and cloud.

  • Platform

    Unrivaled visibility and real-time data and threat protection on the world's largest security private cloud.

Netskope Named a Leader in the 2022 Gartner Magic Quadrant™ for SSE Report

Get the report Go to Products Overview
Netskope gartner mq 2022 sse leader
Gartner® Quick Answer: How Does Netskope’s Acquisition of Infiot Impact SD-WAN, SASE, and SSE Projects?

Get the report
Gartner quick answer
Netskope delivers a modern cloud security stack, with unified capabilities for data and threat protection, plus secure private access.

Explore our platform
Birds eye view metropolitan city
Make the move to market-leading cloud security services with minimal latency and high reliability.

Learn more
Lighted highway through mountainside switchbacks
Prevent threats that often evade other security solutions using a single-pass SSE framework.

Learn more
Lighting storm over metropolitan area
Zero trust solutions for SSE and SASE deployments

Learn more
Boat driving through open sea
Netskope enables a safe, cloud-smart, and fast journey to adopt cloud services, apps, and public cloud infrastructure.

Learn more
Wind turbines along cliffside
  • Our Customers

    Netskope serves more than 2,000 customers worldwide including more than 25 of the Fortune 100

  • Customer Solutions

    We are here for you and with you every step of the way, ensuring your success with Netskope.

  • Training and Certification

    Netskope training will help you become a cloud security expert.

We help our customers to be Ready for Anything

See our Customers
Woman smiling with glasses looking out window
Netskope’s talented and experienced Professional Services team provides a prescriptive approach to your successful implementation.

Learn more
Netskope Professional Services
Secure your digital transformation journey and make the most of your cloud, web, and private applications with Netskope training.

Learn more
Group of young professionals working
  • Resources

    Learn more about how Netskope can help you secure your journey to the cloud.

  • Blog

    Learn how Netskope enables security and networking transformation through security service edge (SSE).

  • Events & Workshops

    Stay ahead of the latest security trends and connect with your peers.

  • Security Defined

    Everything you need to know in our cybersecurity encyclopedia.

Security Visionaries Podcast

Episode 10: Building Security Relationships Through Transparency
In this episode, Mike and Andreas discuss aligning with works councils, forging business relationships through transparency, and embedding security into value streams.

Play the podcast
Building Security Relationships Through Transparency
Read the latest on how Netskope can enable the Zero Trust and SASE journey through security service edge (SSE) capabilities.

Read the blog
Sunrise and cloudy sky
Netskope at RSA

Join Netskope at RSA Conference this year and be part of the real conversations on SASE and Zero Trust. Stop by our booth in South Hall, chat with an expert, register for our speaking sessions, and unwind by joining us at one of our events!

Learn more
RSA logo
What is Security Service Edge?

Explore the security side of SASE, the future of network and protection in the cloud.

Learn more
Four-way roundabout
  • Company

    We help you stay ahead of cloud, data, and network security challenges.

  • Why Netskope

    Cloud transformation and work from anywhere have changed how security needs to work.

  • Leadership

    Our leadership team is fiercely committed to doing everything it takes to make our customers successful.

  • Partners

    We partner with security leaders to help you secure your journey to the cloud.

Netskope enables the future of work.

Find out more
Curvy road through wooded area
Netskope is redefining cloud, data, and network security to help organizations apply Zero Trust principles to protect data.

Learn more
Switchback road atop a cliffside
Thinkers, builders, dreamers, innovators. Together, we deliver cutting-edge cloud security solutions to help our customers protect their data and people.

Meet our team
Group of hikers scaling a snowy mountain
Netskope’s partner-centric go-to-market strategy enables our partners to maximize their growth and profitability while transforming enterprise security.

Learn more
Group of diverse young professionals smiling

A Real-World Look at AWS Best Practices: IAM User Accounts

May 06 2021


Best practices for securing an AWS environment have been well-documented and generally accepted, such as AWS’s guidance. However, organizations may still find it challenging on how to begin applying this guidance to their specific environments.

  • Which controls should be applied out-of-the-box vs. customized?
  • What pitfalls exist in implementing the various controls or checks?
  • How do you prioritize remediation of the “sea of red” violations?

In this blog series, we’ll analyze anonymized data from Netskope customers that include security settings of 650,000 entities from 1,143 AWS accounts across several hundred organizations. We’ll look at the configuration from the perspective of the best practices, see what’s commonly occurring in the real world and:

  • Discuss specific risk areas that should be prioritized
  • Identify underlying root causes and potential pitfalls
  • Focus on practical guidance for applying the Benchmark to your specific environment

This blog post continues looking at real-world data for common IAM security controls for regular users. Based on the Netskope dataset analyzed, we will highlight six opportunities to improve security by making simple IAM changes:

  1. MFA is not consistently enforced with regular IAM User accounts, with 6% of users without MFA.
  1. Many IAM User accounts are unused and should be disabled. 40% of access keys are more than a year old.
  1. 11% of users had access keys set up at the time of user account setup, which can lead to unnecessary or unused access keys that can be compromised.
  1. 6.7% of IAM users have two access keys, leading to unnecessary access keys that can be compromised.
  1. 7,580 (60.8%) IAM Users have access keys that have not been rotated in 90d
  1. 6,211 (50%) IAM User accounts have not been used in the last 90d

IAM Users past

“I told you these were shadows of the things that have been. That they are what they are, do not blame me!”

— The Ghost, Christmas Carol by Charles Dickens

These five best practices relating to regular IAM Users were analyzed against 12,478 IAM Users in 1,143 accounts:

#Best Practice# Violations%
1Ensure multi-factor authentication (MFA) is enabled for all IAM users that have a console password7736.2
2Do not set up access keys during initial user setup for all IAM users that have a console password1,33110.7
3Ensure there is only one active access key available for any single IAM user8306.7
4Ensure access keys are rotated every 90 days or less7,58060.8
5Ensure credentials unused for 90 days or greater are disabled6,21149.8

1. MFA: IAM Users

Background: Multi-factor authentication is also recommended for regular IAM Users who have a Console login enabled.

Data: 773 (6.2%) IAM User accounts do not have MFA enabled. 

Analysis: We again need to look at the effective MFA policy for regular IAM Users, including SCP policies. As SCP policy data was not available in this dataset, we instead will focus on standalone AWS accounts: 178 accounts are not part of an AWS organization and do not have MFA enforced by an SCP. In these 178 accounts, 773 (6.2%) IAM User accounts definitively do not have MFA enabled. 


  • Detection/Audit
    • Detecting whether MFA is enabled or not can be done by checking the mfa_active field in the IAM credential report or via SCP settings at the AWS Organization/OU/root level:
      aws organizations list-policies|describe-policies
    • Using the AWS Config rule:  mfa-enabled-for-iam-console-access will also detect whether MFA is enabled for IAM Users’ Console access.
  • Preventing/Auditing
    • Best practices recommend MFA be enabled for all IAM Users. For multiple accounts, it is easier to apply MFA with a Service Control Policy within an AWS Organization or if using a federated identity system, to set MFA policy there.

2. No initial access key setup

Background: Best practices recommend not provisioning access keys during initial user setup, and instead enforce more strict requests via ticketing to minimize unused keys.

Data: Based on the creation time of the user account and the access key, 1331 or 10.7% of the IAM user accounts were set up with an access key by the customer at the same time (during provisioning of the user account).

Analysis: Setting up access keys at the same time as a user account, rather than when needed, leads to a larger attack surface of access keys that can remain unused and lead to compromise. We define “at the same time” if the user creation time and access key creation time are within 10 seconds of each other.


  • Detection/Audit
    • Detecting access key provisioning at the time of user provisioning can be done by auditing the IAM User credential report, checking on the user_creation_time against the last_rotation_time of both access keys if they are enabled.
    • If they exist, the users can be notified and their access key(s) could be disabled to enforce a separate change request process to clarify requirements for access keys.
  • Prevention/Mitigation
    • If you choose to enforce this, a process for opening up tickets or change requests to issue access keys can be implemented.

3. One access key

Background: For normal use, it is recommended to have only one access key for a given IAM User at a time, with the exception being during the key rotation period, when two active keys may exist for a short period of time. Two permanent access keys are unnecessary and increase the chance of compromised keys.

Data: Out of 12,478 total IAM Users in this dataset, 830 (6.7%) have two active access keys. 

Analysis: Since a valid scenario for having two keys is during a key rotation period, we look further into how long the keys have been in existence based on their last rotated time. Here is the breakdown of the 12,478 IAM Users in this dataset by age of the keys, normalized against the number of IAM Users that existed in that timeframe:

# IAM Users with two access key%
>30 days old12,1007996.6%
>90 days old11,3957206.3%
>365 days old8,0014455.6%

Overall, between 5-6% of IAM Users in this dataset have two access keys regardless of age. 31 out of 830 users have access keys that are newer than 30d and this may be due to key rotation, but the majority of users appear to have two permanent access keys e.g. 8,001 (5.6%) IAM Users have two access keys over a year old.


  • Detection/Audit
    • Detecting two access keys can be done by auditing the IAM User credential report on a regular basis, incorporating last_key_rotation time to filter out potential false positives due to key rotation.
  • Prevention/Mitigation
    • Remediating the issue can be done at the same time by generating appropriate alerts and/or disabling one of the access keys.

4. Access key rotation

Background: Regular key rotation is recommended in order to mitigate the effects of compromised credentials, especially in the case of access keys where the key secrets may be stored externally on various client endpoints.

Data: Out of the 12,478 access keys in this dataset, 7,580 (60.8%) IAM Users have access keys that have not been rotated in 90d.

Of these users, 4,931 (40%) IAM Users have access keys that are over a year old, 245 IAM Users have access keys over five years old, with the oldest key being from August 2011.

Analysis: Clearly, at some point, the lack of key rotation equates to “never rotates.” The percentage of users with access keys over 90d is 60.8% and with keys over year old is 40%. The older age of access keys leads to more exposure once a key is compromised as the time window for use is that much longer. When looking at year-long timeframes, it is likely that the keys are not under any key rotation policy (which is typically recommended as 90d or less).


  • Detection/Audit
    • Auditing of key access age can be done by checking last_rotated_time in the IAM User Credential report or by using the AWS Config rule: access-keys-rotated
    • It is useful to break down the access key age into tiers to prioritize risk and address underlying causes more effectively. This can reduce false positives due to key rotation, identify “permanent” keys (and users), and help affect change in policies to minimize future problems.
  • Prevention/Mitigation
    • To remediate the situation, key rotations should be enforced with communication and coordination to all involved users.

5. Unused IAM accounts

Background: Unused accounts significantly increase the risk for compromised accounts and increase the administrative overhead for securing the environment.

Data: Out of a total of 12,478 IAM User accounts in this dataset, 6,211 (50%) IAM User accounts have not been used in the last 90d (i.e. no Console login and no API key use).

Of these user accounts, 3,549 (28.4%) user accounts have not been used in the past year, and the oldest, unused IAM User Console account was last used in March 2014, and the oldest, unused active access key was last used in April 2015.

Analysis: Half (50%) of IAM User accounts are not used regularly (last 90d), and over 28% have not been used in 365d. The latter category should be the immediate priority for remediation as it reduces account risk proportionally. Best practices would recommend culling (disabling) user accounts that have been unused for 90d or more.


  • Detection/Audit
    • Regular auditing of unused access keys or console logins should be done, and those keys and user accounts should be disabled. 
    • Unused accounts can be done by auditing the IAM credential report. Care should be taken to perform the check properly in case the access key or console login has never been used. In these cases, the password_last_used or access_key_last_used_date will not be set, and the password_last_changed or access_key_last_rotated fields must be used from the credential report.
    • Using the AWS Config Rule: iam-user-unused-credentials-check will also identify unused credentials.
  • Prevention/Mitigation
    • Unnecessary creation of IAM User accounts should be avoided in the first place. In some cases, it may make sense to use roles (AssumeRole), which use temporary credentials and avoid creation of a separate IAM User account.


Many best practices have been codified but many AWS environments lag behind in implementing these best practices. Remediating the issues is straightforward for many of the security settings, and there exists specific prescriptive guidance on auditing and remediating your configurations in these areas, which can result in a large reduction in risk.

Here are some basic measures that can be done to address some of the common risk areas due to IAM configuration in your AWS environment:

  1. MFA should be enabled on regular IAM User accounts using account-level policies or Service Control Policies and enforced using resource or IAM policies or SCPs.
  1. Audit and disable unused IAM User accounts and access keys to reduce credential attack surface.
  1. Access keys should not be set up during user account provisioning. Instead utilize an explicit request on the need for access keys.
  1. IAM Users should only have at most one access key. Disable unnecessary access keys.
  1. Rotate access keys within 90 days.
  1. Disable any IAM User accounts that have been unused for over 90 days.

In upcoming blogs, we’ll continue to explore other best practices and how individual organizations can apply these best practices specifically to their environment.

Additionally, Netskope’s Public Cloud Security platform also can automate configuration checking of your AWS environment, implementing both compliance standards, as well as custom configuration checks.

Dataset and Methodology

Time Period: Data was sampled/analyzed from January 24, 2021. 

Source: The analysis presented in this blog post is based on anonymized usage data collected by the Netskope Security Cloud platform relating to a subset of Netskope customers with prior authorization.

Data Scope: The data included 1143 AWS accounts and several hundred organizations. 

The data was composed of configuration settings across tens of thousands of AWS entities including IAM Users, IAM policies, password policy, buckets, databases, CloudTrail logs, compute instances, and security groups.

Logic: The analysis followed the logic of core root account security checks found in best practices regarding AWS configuration settings with a few adjustments for the dataset and methodology. Some best practices might define “recent usage” for the root account as a last logged in time occurring within the past 24 hours to determine whether the root account has been used recently. Because this dataset comes from a point-in-time snapshot, this was changed to within the past 7 days prior to the audit date.

author image
Jenko Hwong
Jenko has 15+ years of experience in research, product management, and engineering in cloud security, AV/AS, routers/appliances, threat intel, Windows security, vulnerability scanning and compliance. At Netskope, he researches new cloud attacks.