Skip to content
Skillpedia
Security48k · #2246

aws-iam

Lets your agent control who accesses what in AWS. It manages users, permissions, and security rules to protect your resources.

What it does

This tool helps manage who can access what within your Amazon Web Services (AWS) account. It allows you to create 'identities' (users and permissions) and securely control access to resources.

When to use it

  • ✓When creating a new user for someone to access AWS.
  • ✓When setting up permissions for an AWS service (like a server or function).
  • ✓When defining who can do what in different parts of your AWS account.

Example of what to ask your AI

“Create a permission for the user 'john' to read and write files in an S3 bucket named 'my-bucket'.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/aws-iam/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/aws-iam/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

You use specific AWS commands to create and manage users, groups, and permissions. The tool ensures that permissions are the minimum required for each task, enhancing security.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill aws-iam

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/aws-iam/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

AWS IAM

Manage identity and access in AWS with least-privilege policies, roles, federation, and permission boundaries.

When to Use This Skill

  • Creating roles for EC2 instances, Lambda functions, or ECS tasks
  • Writing custom IAM policies with least-privilege access
  • Setting up OIDC federation for GitHub Actions or other CI/CD systems
  • Implementing permission boundaries for delegated administration
  • Auditing access with IAM Access Analyzer and credential reports
  • Configuring cross-account access with assume-role patterns
  • Enforcing MFA and session policies

Prerequisites

  • AWS CLI v2 installed and configured
  • IAM permissions: iam:* (or scoped to specific actions for least privilege)
  • For OIDC: ability to create identity providers (iam:CreateOpenIDConnectProvider)
  • AWS Organizations access for Service Control Policies (SCPs)

IAM Policy Structure

Every IAM policy follows the same JSON structure. Always specify the minimum actions and resources required.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3ReadWrite",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-app-bucket",
        "arn:aws:s3:::my-app-bucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "DenyUnencryptedUploads",
      "Effect": "Deny",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-app-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    }
  ]
}

Create and Manage Roles

# Create an EC2 instance role with trust policy
aws iam create-role \
  --role-name EC2AppRole \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Principal": {"Service": "ec2.amazonaws.com"},
      "Action": "sts:AssumeRole"
    }]
  }' \
  --tags '[{"Key":"Team","Value":"platform"},{"Key":"Environment","Value":"production"}]'

# Create and attach an inline policy
aws iam put-role-policy \
  --role-name EC2AppRole \
  --policy-name s3-access \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::my-app-bucket/*"
    }]
  }'

# Attach a managed policy
aws iam attach-role-policy \
  --role-name EC2AppRole \
  --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

# Create instance profile and associate the role
aws iam create-instance-profile --instance-profile-name EC2AppProfile
aws iam add-role-to-instance-profile \
  --instance-profile-name EC2AppProfile \
  --role-name EC2AppRole

# Create a Lambda execution role
aws iam create-role \
  --role-name LambdaExecRole \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Principal": {"Service": "lambda.amazonaws.com"},
      "Action": "sts:AssumeRole"
    }]
  }'

aws iam attach-role-policy \
  --role-name LambdaExecRole \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Cross-Account Access

# In Account B: create role that Account A can assume
aws iam create-role \
  --role-name CrossAccountReadRole \
  --assume-role-policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111111111111:root"},
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {"sts:ExternalId": "unique-external-id-12345"}
      }
    }]
  }'

# In Account A: assume the role
aws sts assume-role \
  --role-arn arn:aws:iam::222222222222:role/CrossAccountReadRole \
  --role-session-name cross-account-session \
  --external-id unique-external-id-12345

# Use the temporary credentials
export AWS_ACCESS_KEY_ID="ASIAXXX"
export AWS_SECRET_ACCESS_KEY="xxx"
export AWS_SESSION_TOKEN="xxx"

OIDC Federation for GitHub Actions

# Create the GitHub OIDC identity provider
aws iam create-open-id-connect-provider \
  --url https://token.actions.githubusercontent.com \
  --client-id-list sts.amazonaws.com \
  --thumbprint-list "6938fd4d98bab03faadb97b34396831e3780aea1"

# Create a role for GitHub Actions with repo-scoped trust
aws iam create-role \

…
FAQ

What are 'users' and 'roles' in AWS?

Users are people or applications that need access. Roles are temporary identities that AWS services can use to access other services.

What does 'least privilege' mean?

It means granting only the permissions strictly necessary for a task to be performed, avoiding unnecessary access and increasing security.

Do I need to know how to code to use this?

It's helpful to have some familiarity with the AWS command line, but the tool can guide you through basic commands.

Details

Original description by the author

Manage IAM users, roles, and policies. Implement least-privilege access and security best practices. Use when configuring AWS identity and access management.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#2246
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills