Como Crear un Usuario IAM en AWS desde la CLI: Guia Completa
Introduccion
AWS Identity and Access Management (IAM) es el servicio que controla quien puede acceder a que dentro de tu cuenta de Amazon Web Services. Aunque la consola web es intuitiva, dominar la AWS CLI para gestionar usuarios IAM te permite automatizar procesos, crear scripts reproducibles y trabajar mucho mas rapido.
En este articulo aprenderás paso a paso como crear un usuario IAM desde la linea de comandos, asignarle permisos, generar credenciales de acceso programatico y aplicar buenas practicas de seguridad. Todo con ejemplos reales que puedes copiar y ejecutar.
![]()
Fuente: FlyD — Unsplash
Requisitos previos
Antes de comenzar, asegurate de tener lo siguiente:
- Una cuenta de AWS activa con permisos de administrador (o al menos permisos IAM)
- AWS CLI v2 instalada en tu maquina
- Credenciales configuradas con
aws configure
Instalar AWS CLI v2
Si aun no la tienes instalada, ejecuta segun tu sistema operativo:
1# macOS (Homebrew)
2brew install awscli
3
4# Linux (oficial)
5curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
6unzip awscliv2.zip
7sudo ./aws/install
8
9# Windows (MSI installer)
10# Descarga desde: https://awscli.amazonaws.com/AWSCLIV2.msi
11
12# Verificar instalacion
13aws --version
Configurar credenciales
Configura tus credenciales de acceso. Necesitaras el Access Key ID y Secret Access Key de un usuario con permisos IAM:
1aws configure
2# AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
3# AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
4# Default region name [None]: us-east-1
5# Default output format [None]: json
Paso 1: Crear el usuario IAM
El comando fundamental es aws iam create-user. Solo necesitas especificar el nombre del usuario:
1# Crear un usuario IAM
2aws iam create-user --user-name desarrollador-backend
3
4# Respuesta esperada:
5# {
6# "User": {
7# "Path": "/",
8# "UserName": "desarrollador-backend",
9# "UserId": "AIDAJEXAMPLE12345678",
10# "Arn": "arn:aws:iam::123456789012:user/desarrollador-backend",
11# "CreateDate": "2026-04-04T10:00:00+00:00"
12# }
13# }
Tambien puedes organizar usuarios con paths para agruparlos logicamente:
1# Crear usuario con path organizacional
2aws iam create-user --user-name maria-garcia --path "/engineering/backend/"
3
4# Crear usuario con tags para identificacion
5aws iam create-user --user-name carlos-lopez --tags Key=Department,Value=Engineering Key=Project,Value=PaymentAPI

Fuente: Gabriel Heinzer — Unsplash
Paso 2: Crear credenciales de acceso programatico
Un usuario IAM sin credenciales no puede hacer nada. Existen dos tipos de acceso:
Access Keys (para API/CLI/SDK)
1# Generar Access Key para el usuario
2aws iam create-access-key --user-name desarrollador-backend
3
4# Respuesta:
5# {
6# "AccessKey": {
7# "UserName": "desarrollador-backend",
8# "AccessKeyId": "AKIAI44QH8DHBEXAMPLE",
9# "Status": "Active",
10# "SecretAccessKey": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
11# "CreateDate": "2026-04-04T10:05:00+00:00"
12# }
13# }
SecretAccessKey solo se muestra UNA VEZ en el momento de la creacion. Guardalo de forma segura inmediatamente. Si lo pierdes, deberas crear una nueva Access Key.
Login Profile (para acceso a la consola web)
1# Crear perfil de login con contrasena temporal
2aws iam create-login-profile --user-name desarrollador-backend --password "TempP@ss2026!" --password-reset-required
3
4# El usuario debera cambiar la contrasena en su primer inicio de sesion
Paso 3: Asignar permisos con politicas
Un usuario sin politicas no tiene ningun permiso. AWS usa el principio de minimo privilegio: solo otorga los permisos estrictamente necesarios.
Adjuntar una politica administrada por AWS
1# Dar acceso de solo lectura a S3
2aws iam attach-user-policy --user-name desarrollador-backend --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
3
4# Dar acceso completo a DynamoDB
5aws iam attach-user-policy --user-name desarrollador-backend --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess
6
7# Ver politicas adjuntas al usuario
8aws iam list-attached-user-policies --user-name desarrollador-backend
Crear y adjuntar una politica personalizada
Las politicas personalizadas te dan control granular. Crea un archivo JSON con la politica:
1{
2 "Version": "2012-10-17",
3 "Statement": [
4 {
5 "Effect": "Allow",
6 "Action": [
7 "s3:GetObject",
8 "s3:PutObject",
9 "s3:ListBucket"
10 ],
11 "Resource": [
12 "arn:aws:s3:::mi-bucket-produccion",
13 "arn:aws:s3:::mi-bucket-produccion/*"
14 ]
15 },
16 {
17 "Effect": "Allow",
18 "Action": [
19 "logs:CreateLogGroup",
20 "logs:CreateLogStream",
21 "logs:PutLogEvents"
22 ],
23 "Resource": "arn:aws:logs:*:*:*"
24 }
25 ]
26}
1# Crear la politica desde el archivo JSON
2aws iam create-policy --policy-name S3-Y-Logs-Backend --policy-document file://politica-backend.json --description "Acceso a S3 de produccion y CloudWatch Logs"
3
4# Adjuntar la politica al usuario (usa el ARN devuelto)
5aws iam attach-user-policy --user-name desarrollador-backend --policy-arn arn:aws:iam::123456789012:policy/S3-Y-Logs-Backend
Paso 4: Agregar el usuario a un grupo
La mejor practica es gestionar permisos a traves de grupos, no directamente en los usuarios. Esto simplifica la administracion cuando tienes muchos usuarios.
1# Crear un grupo
2aws iam create-group --group-name backend-developers
3
4# Adjuntar politicas al grupo
5aws iam attach-group-policy --group-name backend-developers --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
6
7aws iam attach-group-policy --group-name backend-developers --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess
8
9# Agregar el usuario al grupo
10aws iam add-user-to-group --user-name desarrollador-backend --group-name backend-developers
11
12# Verificar los grupos del usuario
13aws iam list-groups-for-user --user-name desarrollador-backend

Fuente: Markus Spiske — Unsplash
Paso 5: Habilitar MFA (Autenticacion Multifactor)
La autenticacion multifactor agrega una capa extra de seguridad. Es obligatoria segun las mejores practicas de AWS.
1# Crear un dispositivo MFA virtual
2aws iam create-virtual-mfa-device --virtual-mfa-device-name desarrollador-backend-mfa --outfile qr-code.png --bootstrap-method QRCodePNG
3
4# El archivo qr-code.png contiene el codigo QR para escanear
5# con Google Authenticator, Authy u otra app TOTP
6
7# Activar MFA con dos codigos consecutivos del dispositivo
8aws iam enable-mfa-device --user-name desarrollador-backend --serial-number arn:aws:iam::123456789012:mfa/desarrollador-backend-mfa --authentication-code1 123456 --authentication-code2 789012
aws:MultiFactorAuthPresent sea true. Esto se conoce como politica de "MFA required".
Paso 6: Verificar y auditar el usuario
Despues de crear el usuario, verifica que todo este correctamente configurado:
1# Ver informacion completa del usuario
2aws iam get-user --user-name desarrollador-backend
3
4# Listar todas las Access Keys
5aws iam list-access-keys --user-name desarrollador-backend
6
7# Ver politicas adjuntas directamente
8aws iam list-attached-user-policies --user-name desarrollador-backend
9
10# Ver politicas inline
11aws iam list-user-policies --user-name desarrollador-backend
12
13# Ver grupos del usuario
14aws iam list-groups-for-user --user-name desarrollador-backend
15
16# Ver tags del usuario
17aws iam list-user-tags --user-name desarrollador-backend
18
19# Listar TODOS los usuarios IAM de la cuenta
20aws iam list-users --output table
Paso 7: Operaciones adicionales utiles
Rotar Access Keys
AWS recomienda rotar las Access Keys periodicamente (cada 90 dias):
1# Crear una nueva Access Key (mantener la anterior activa temporalmente)
2aws iam create-access-key --user-name desarrollador-backend
3
4# Actualizar las aplicaciones con la nueva key, luego desactivar la anterior
5aws iam update-access-key --user-name desarrollador-backend --access-key-id AKIAI44QH8DHBEXAMPLE --status Inactive
6
7# Una vez confirmado que todo funciona, eliminar la key antigua
8aws iam delete-access-key --user-name desarrollador-backend --access-key-id AKIAI44QH8DHBEXAMPLE
Eliminar un usuario IAM
Eliminar un usuario requiere remover primero todas sus dependencias:
1# 1. Eliminar Access Keys
2aws iam delete-access-key --user-name desarrollador-backend --access-key-id AKIAI44QH8DHBEXAMPLE
3
4# 2. Desadjuntar politicas
5aws iam detach-user-policy --user-name desarrollador-backend --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
6
7# 3. Remover de grupos
8aws iam remove-user-from-group --user-name desarrollador-backend --group-name backend-developers
9
10# 4. Eliminar login profile (si existe)
11aws iam delete-login-profile --user-name desarrollador-backend
12
13# 5. Finalmente, eliminar el usuario
14aws iam delete-user --user-name desarrollador-backend
Script completo: automatizar la creacion
Aqui tienes un script de Bash que automatiza todo el proceso de creacion de un usuario IAM:
1#!/bin/bash
2set -euo pipefail
3
4# --- Configuracion ---
5USERNAME="$1"
6GROUP_NAME="${2:-developers}"
7REGION="us-east-1"
8
9if [ -z "$USERNAME" ]; then
10 echo "Uso: ./create-iam-user.sh <nombre-usuario> [grupo]"
11 exit 1
12fi
13
14echo "=== Creando usuario IAM: $USERNAME ==="
15
16# 1. Crear usuario con tags
17aws iam create-user --user-name "$USERNAME" --tags Key=CreatedBy,Value=CLI Key=Date,Value="$(date +%Y-%m-%d)" --output json
18
19echo "[OK] Usuario creado"
20
21# 2. Generar Access Key y guardarla
22CREDENTIALS=$(aws iam create-access-key --user-name "$USERNAME" --output json)
23ACCESS_KEY=$(echo "$CREDENTIALS" | jq -r '.AccessKey.AccessKeyId')
24SECRET_KEY=$(echo "$CREDENTIALS" | jq -r '.AccessKey.SecretAccessKey')
25
26echo "[OK] Access Key generada: $ACCESS_KEY"
27echo " Secret Key: $SECRET_KEY"
28echo " (Guarda estas credenciales de forma segura)"
29
30# 3. Crear o verificar grupo y agregar usuario
31aws iam create-group --group-name "$GROUP_NAME" 2>/dev/null || true
32aws iam add-user-to-group --user-name "$USERNAME" --group-name "$GROUP_NAME"
33
34echo "[OK] Usuario agregado al grupo: $GROUP_NAME"
35
36# 4. Crear perfil de login con contrasena temporal
37TEMP_PASS="TempP@ss$(date +%Y)!"
38aws iam create-login-profile --user-name "$USERNAME" --password "$TEMP_PASS" --password-reset-required
39
40echo "[OK] Login de consola creado (contrasena temporal: $TEMP_PASS)"
41echo ""
42echo "=== Resumen ==="
43echo "Usuario: $USERNAME"
44echo "Grupo: $GROUP_NAME"
45echo "Access Key: $ACCESS_KEY"
46echo "Consola: https://console.aws.amazon.com/"
47echo ""
48echo "Recuerda: asigna politicas al grupo '$GROUP_NAME' para otorgar permisos."
Buenas practicas de seguridad IAM
Para mantener tu cuenta de AWS segura, sigue estas recomendaciones:
| Practica | Descripcion | Prioridad |
|---|---|---|
| Minimo privilegio | Solo otorga los permisos estrictamente necesarios | Critica |
| Usar grupos | Gestiona permisos via grupos, no usuarios individuales | Alta |
| MFA obligatorio | Habilita MFA en todos los usuarios, especialmente root | Critica |
| Rotar credenciales | Cambia Access Keys cada 90 dias maximo | Alta |
| No usar root | Crea un usuario admin y bloquea la cuenta root | Critica |
| Auditar regularmente | Usa IAM Access Analyzer y revisa usuarios sin uso | Media |
| Usar roles para apps | Preferir IAM Roles sobre Access Keys en EC2/Lambda | Alta |
| Politica de contrasenas | Configura requisitos de complejidad y expiracion | Media |
Conclusion
Crear y gestionar usuarios IAM desde la AWS CLI es una habilidad esencial para cualquier ingeniero de cloud. Los comandos que vimos cubren el ciclo completo: creacion del usuario, generacion de credenciales, asignacion de permisos mediante politicas y grupos, habilitacion de MFA y auditoría.
La clave esta en siempre aplicar el principio de minimo privilegio, usar grupos para gestionar permisos, rotar credenciales regularmente y habilitar MFA. Con el script de automatizacion incluido, puedes estandarizar el proceso de onboarding de nuevos miembros en tu equipo.
Si quieres profundizar, consulta la documentacion oficial de AWS IAM CLI.
Comments
Sign in to leave a comment
No comments yet. Be the first!