The Elastic Guru

The Elastic Guru is a community of amazing AWS enthusiasts

We're a place where friendly AWS peeps create, read and share content to ignite the curiosity, learning, growth and success in young people.

Create new account Log in
Cover image for Don't you know who IAM?

Don't you know who IAM?

helenanders26 profile image Helen Anderson Originally published at Updated on ・4 min read

Identity and Access Management (IAM) is one of the first services you are introduced to when learning about AWS. IAM is Global, so no need to worry about regions, and is used to ensure users are only allowed access to the services that are required. Everyone shouldn't have access to everything.

Building a Policy
Interpreting the JSON
Useful Links



Exactly what you think of when you think of users in the real world. If you are setting up as AWS account for the first time you will begin with the root user and full administrative rights. Your first step should be creating a new user rather than using the root user for day to day activities.

Users can have any combination of credentials:

  • AWS access key
  • X.509 certificate
  • SSH key
  • Password for web app logins
  • MFA device

Default limits:

  • 5000 per account
  • 50 tags per user
  • 5 SSH keys per user


A collection of users. Just like in the real world this could be a group of marketing users who need access to campaign data, finance users who need more sensitive data or customer services users who need customer data.

Default limits:

  • 300 per account


This is what defines the set of permissions your users and services have. This where you decide if the 'marketing' role needs to be able to read/write to an S3 bucket, read/write to the RDS, and nothing else.

Default limits:

  • 1000 per account
  • 50 tags per role


When they are first created users have no permissions. These are added by creating and attaching policies.

Policies come in three different forms:

Managed Policies - policies provided by AWS and cannot be edited.Customer Managed Policies - policies created by the customer, which Inline Policies - policies which are directly attached to a user.

These can be created and assigned through the AWS Console using the predefined policy documents or using JSON to define these on a case-by-case basis when you can't get what you need through the predefined policies.

Default limit of:

  • Customer-managed policies: 1500
  • Policies attached to a user: 10
  • Policies attached to a role: 10

IAM example

Building a Policy

Policies can be created either using the UI or by writing JSON with what you need.

David has written a comprehensive post on how to build Users, Groups and Policies using the UI. Check it out for more!

Interpreting the JSON

If you choose to write, or finely tune your policy using JSON AWS has a tool that can be used to make this simpler. Even if you do not choose to use it it can be a useful way to illustrate what goes into a policy.

There are three parts to the policy at its most basic level:


The current version of the policy language.


In this case to Create and Delete buckets


In this case to 'Allow'. This is by default set to 'Deny' in the same way that users have no permissions by default when they are created.


The syntax here is used to determine the Amazon Resource Name (ARN). In this case 'my_new_bucket' in S3

  "Version": "2012-10-17",
  "Statement": [
      Action": [
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my_new_bucket"
Enter fullscreen mode Exit fullscreen mode


  • Not all services use IAM so check out the restrictions

  • It's important to test that the policies are doing what you think they are. Along with the tool to build your policies, AWS offers a simulator that will test your policy will do what is expected. There is a bit of set up involved but it's well worth it to make sure you are granting the right level of access to your users.

  • The biggest challenge is determining who needs access to what before you start creating policies. Take time to plan what your users are likely to need, and not need, to follow the principle of least privilege. But allow for some flexibility if privileges need to be elevated in future.

Useful Links

IAM Documentation


IAM Policy Builder

IAM JSON Reference Guide

IAM Testing Policies Documentation

IAM Policy Test Simulator

This post first appeared on

Discussion (4)

Editor guide
lee profile image

IAM is one of the topics that can be a bit daunting to newbies, I love the way you have explained it here. Roles and IAM users can also be a confusing one!

jenna profile image


jenna profile image

Crikey Helen! You have such a gift of explaining complex concepts is such simple terms! X

helenanders26 profile image
Helen Anderson Author

Thanks! That's so lovely. I'm a newbie to tech (I was a marketer up till about five years ago) so try and explain things in a way that 'five years ago me' can grasp the basics