IAM best practices in AWS - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how the time to manage permissions grows as we add more users and roles in IAM.
How does the number of permission checks or policy updates change when the system grows?
Analyze the time complexity of the following IAM operations.
# Create multiple IAM users
for i in range(1, n+1):
iam.create_user(UserName=f'user{i}')
# Attach policies to each user
for i in range(1, n+1):
iam.attach_user_policy(UserName=f'user{i}', PolicyArn='arn:aws:iam::aws:policy/ReadOnlyAccess')
# Check permissions for each user
for i in range(1, n+1):
iam.simulate_principal_policy(PrincipalArn=f'arn:aws:iam::123456789012:user/user{i}', ActionNames=['s3:GetObject'])
This sequence creates users, attaches policies, and checks permissions for each user.
- Primary operation: Creating users, attaching policies, and simulating permission checks.
- How many times: Each operation runs once per user, so n times.
As you add more users, the number of API calls grows directly with the number of users.
| Input Size (n) | Approx. Api Calls/Operations |
|---|---|
| 10 | 30 (10 create + 10 attach + 10 check) |
| 100 | 300 (100 create + 100 attach + 100 check) |
| 1000 | 3000 (1000 create + 1000 attach + 1000 check) |
Pattern observation: The total operations increase linearly as the number of users increases.
Time Complexity: O(n)
This means the time to manage IAM users and policies grows directly with the number of users.
[X] Wrong: "Adding more users won't affect how long permission checks take because policies are shared."
[OK] Correct: Each user requires separate API calls for creation, attaching policies, and permission checks, so time grows with users.
Understanding how IAM operations scale helps you design systems that stay efficient as they grow, a key skill in cloud roles.
What if we changed from attaching policies to each user individually to using groups? How would the time complexity change?
Practice
Solution
Step 1: Understand least privilege concept
Least privilege means giving users only the permissions they need, nothing more.Step 2: Identify correct option
To give users only the permissions they need to do their job matches this concept by limiting permissions to what is necessary.Final Answer:
To give users only the permissions they need to do their job -> Option CQuick Check:
Least privilege = minimal permissions [OK]
- Giving users full access unnecessarily
- Using permanent keys instead of temporary credentials
- Ignoring MFA setup
Solution
Step 1: Understand IAM roles for services
IAM roles allow AWS services to assume permissions temporarily without permanent keys.Step 2: Identify best practice
Assigning an IAM role to the service is the recommended way to grant permissions securely.Final Answer:
Create an IAM role and assign it to the AWS service -> Option AQuick Check:
Use roles for services, not permanent keys [OK]
- Attaching policies directly to users for services
- Embedding permanent keys in code
- Using root account credentials
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::example-bucket"]
}]
}What can this user do?
Solution
Step 1: Analyze the policy actions
The policy allows only the "s3:ListBucket" action on the specific bucket resource.Step 2: Determine allowed operations
"s3:ListBucket" lets the user see the list of objects but not upload or delete.Final Answer:
List the contents of the example-bucket -> Option BQuick Check:
Action = s3:ListBucket means list only [OK]
- Assuming upload or delete permissions from list permission
- Thinking the policy applies to all buckets
- Ignoring the specific resource ARN
Solution
Step 1: Understand MFA enforcement
MFA can be required by attaching policies that enforce MFA for sensitive actions.Step 2: Apply best practice
Attaching an MFA policy is better than deleting the user or removing permissions.Final Answer:
Attach an MFA policy and require MFA for sensitive actions -> Option AQuick Check:
Enable MFA via policy, don't delete users [OK]
- Deleting users unnecessarily
- Removing all permissions without MFA
- Sharing root credentials
Solution
Step 1: Identify temporary access method
IAM roles allow temporary credentials that contractors can assume without permanent users.Step 2: Match best practice
Creating roles with limited permissions follows least privilege and avoids permanent keys.Final Answer:
Create IAM roles with limited permissions and let contractors assume them -> Option DQuick Check:
Temporary roles for contractors = best practice [OK]
- Creating permanent users for contractors
- Sharing root credentials
- Giving admin permissions unnecessarily
