AL.
🇺🇸 EN
Volver al blog
AWS · 8 min de lectura

AWS IAM Explicado: Usuarios, Grupos, Politicas, MFA y Mejores Practicas

Aprende los fundamentos de AWS IAM: usuarios, grupos, politicas JSON, configuracion de MFA, seguridad de la cuenta root y el principio de menor privilegio.

AWS IAM — Parte 1 de 2


AWS Identity and Access Management (IAM) es el sistema de seguridad central de AWS. Controla quién puede hacer qué en tu cuenta de AWS. Sin un IAM apropiado, tu infraestructura está en riesgo: costos descontrolados, brechas de datos o incluso compromiso completo de la cuenta.

En esta guía (Parte 1 de la serie AWS IAM), cubriremos los fundamentos: usuarios, grupos, políticas, MFA, seguridad de cuenta root y mejores prácticas.

¿Qué es IAM?

IAM te permite gestionar el acceso a servicios y recursos de AWS de forma segura. Con IAM, puedes:

  • Crear usuarios y grupos: Organizar acceso para personas y aplicaciones.
  • Definir permisos: Especificar quién puede realizar qué acciones en qué recursos.
  • Habilitar MFA: Agregar autenticación de dos factores para seguridad extra.
  • Gestionar credenciales: Crear access keys, passwords y tokens de seguridad.

IAM es global — no es específico de una región. Los usuarios, grupos y políticas se aplican a través de todas las regiones de AWS.

Conceptos Core

1. Usuarios

Un usuario de IAM representa a una persona o aplicación que interactúa con AWS. Cada usuario tiene:

  • Un nombre de usuario único
  • Credenciales (password para console, access keys para CLI/SDK)
  • Permisos (vía políticas)

Creando un Usuario

AWS Console:

  1. Navega a IAM → Users → Add users
  2. Ingresa nombre de usuario (ej. john.doe)
  3. Selecciona tipo de acceso:
    • Programmatic access: Genera access keys para CLI/SDK
    • AWS Management Console access: Habilita login de console con password
  4. Adjunta políticas o agrega a grupos
  5. Revisa y crea

AWS CLI:

aws iam create-user --user-name john.doe
aws iam create-login-profile --user-name john.doe --password "TempPassword123!" --password-reset-required
aws iam attach-user-policy --user-name john.doe --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess

2. Grupos

Un grupo es una colección de usuarios de IAM. Los grupos facilitan gestionar permisos para múltiples usuarios a la vez.

Ejemplo: Organizando Usuarios

Developers Group
├── john.doe
├── jane.smith
└── alice.wang

Admins Group
├── admin1
└── admin2

Los grupos heredan políticas adjuntas, así que todos los usuarios en Developers obtienen los mismos permisos.

Creando un Grupo

aws iam create-group --group-name Developers

aws iam attach-group-policy \
  --group-name Developers \
  --policy-arn arn:aws:iam::aws:policy/PowerUserAccess

aws iam add-user-to-group --group-name Developers --user-name john.doe

3. Políticas

Una política es un documento JSON que define permisos. Las políticas especifican:

  • Effect: Allow o Deny
  • Action: Qué operaciones están permitidas (ej. s3:GetObject, ec2:StartInstance)
  • Resource: En qué recursos de AWS se aplica la acción (ARN)
  • Condition: Restricciones opcionales (ej. requiere MFA, permite solo desde ciertas IPs)

Ejemplo de Política: Acceso Read-Only a S3

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

Esto permite listar y leer objetos de my-bucket, pero no escribir o eliminar.

Tipos de Políticas

  • Managed Policies: Pre-built por AWS (ej. AdministratorAccess, ReadOnlyAccess) o creadas por ti (customer managed).
  • Inline Policies: Embebidas directamente en un usuario, grupo o role específico. Más difíciles de reutilizar.

Regla general: Usa managed policies para reutilización y mantenimiento más fácil. Usa inline policies solo para permisos muy específicos únicos a una identidad.

4. Root User vs IAM Users

La cuenta root es la identidad creada cuando abres primero una cuenta de AWS. Tiene acceso completo ilimitado a todos los recursos.

Por Qué NO Usar la Cuenta Root Diariamente

  • Sin restricciones: No puedes limitar permisos de root, incluso con políticas.
  • Riesgo de seguridad: Si las credenciales de root se comprometen, un atacante tiene control total.
  • Sin auditoría: Difícil rastrear qué hizo root vs usuarios de IAM.

Mejores Prácticas para Root

  1. Habilita MFA en root inmediatamente.
  2. Nunca compartas credenciales de root.
  3. Crea usuarios de IAM para tareas diarias (incluso para ti mismo).
  4. Usa root solo para tareas que lo requieren (ej. cerrar la cuenta, cambiar plan de soporte).

Autenticación Multi-Factor (MFA)

MFA agrega una capa de seguridad requiriendo un segundo factor además del password:

  • Algo que sabes: Password
  • Algo que tienes: Dispositivo MFA (app de teléfono, hardware token, etc.)

Habilitando MFA

Para cuenta root:

  1. IAM Console → Dashboard → Activate MFA on your root account
  2. Elige tipo de dispositivo (virtual MFA app recomendada)
  3. Escanea código QR con app de autenticador (Google Authenticator, Authy, etc.)
  4. Ingresa dos códigos MFA consecutivos para confirmar

Para usuarios de IAM:

# Crear dispositivo MFA virtual
aws iam create-virtual-mfa-device \
  --virtual-mfa-device-name john-mfa \
  --outfile /tmp/QRCode.png \
  --bootstrap-method QRCodePNG

# Habilitar MFA para usuario
aws iam enable-mfa-device \
  --user-name john.doe \
  --serial-number arn:aws:iam::123456789012:mfa/john-mfa \
  --authentication-code-1 123456 \
  --authentication-code-2 789012

Enforzando MFA con Políticas

Puedes requerir MFA para acciones sensibles:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    }
  ]
}

Esto niega todas las acciones a menos que el usuario haya autenticado con MFA.

Políticas de Password

Configura requisitos de password para usuarios de IAM:

AWS Console:

  1. IAM → Account settings → Password policy
  2. Configura:
    • Longitud mínima de password
    • Requiere números, símbolos, mayúsculas, minúsculas
    • Expiración de password (ej. cada 90 días)
    • Prevenir reutilización de passwords

AWS CLI:

aws iam update-account-password-policy \
  --minimum-password-length 14 \
  --require-symbols \
  --require-numbers \
  --require-uppercase-characters \
  --require-lowercase-characters \
  --allow-users-to-change-password \
  --max-password-age 90 \
  --password-reuse-prevention 5

Principio de Menor Privilegio

Siempre otorga el mínimo de permisos necesarios para realizar una tarea. Comienza con cero permisos y agrega solo lo que se necesita.

Ejemplo: Developer Role

En lugar de AdministratorAccess:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "s3:GetObject",
        "s3:PutObject",
        "logs:*"
      ],
      "Resource": "*"
    }
  ]
}

Esto otorga solo lo necesario para desarrollo diario: read EC2, start/stop instances, read/write S3, full CloudWatch Logs.

Mejores Prácticas de IAM

  1. Nunca uses la cuenta root para tareas diarias.
  2. Habilita MFA para root y todos los usuarios de IAM.
  3. Crea usuarios de IAM individuales (sin cuentas compartidas).
  4. Usa grupos para asignar permisos (no adjuntes políticas directamente a usuarios).
  5. Otorga menor privilegio: Comienza restrictivo, agrega permisos según sea necesario.
  6. Rota credenciales regularmente: Access keys, passwords.
  7. Usa roles para aplicaciones (no embebas access keys en código).
  8. Habilita CloudTrail para auditoría y logging.
  9. Revisa permisos periódicamente: Elimina usuarios y permisos no utilizados.
  10. Usa AWS Organizations para gestionar múltiples cuentas.

Ejemplo: Configuración Segura para un Equipo Pequeño

# 1. Habilitar MFA en root (manual vía console)

# 2. Crear grupos
aws iam create-group --group-name Admins
aws iam create-group --group-name Developers
aws iam create-group --group-name ReadOnly

# 3. Adjuntar políticas a grupos
aws iam attach-group-policy --group-name Admins --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam attach-group-policy --group-name Developers --policy-arn arn:aws:iam::aws:policy/PowerUserAccess
aws iam attach-group-policy --group-name ReadOnly --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess

# 4. Crear usuarios
aws iam create-user --user-name alice
aws iam create-user --user-name bob
aws iam create-user --user-name charlie

# 5. Agregar usuarios a grupos
aws iam add-user-to-group --group-name Admins --user-name alice
aws iam add-user-to-group --group-name Developers --user-name bob
aws iam add-user-to-group --group-name ReadOnly --user-name charlie

# 6. Crear login profiles (contraseñas)
aws iam create-login-profile --user-name alice --password "SecurePass1!" --password-reset-required
aws iam create-login-profile --user-name bob --password "SecurePass2!" --password-reset-required
aws iam create-login-profile --user-name charlie --password "SecurePass3!" --password-reset-required

# 7. Habilitar MFA para cada usuario (manual vía console o via scripts)

Auditoría y Monitoreo

Usa IAM Access Analyzer para identificar recursos compartidos externamente:

aws accessanalyzer create-analyzer --analyzer-name my-analyzer --type ACCOUNT

Usa IAM Credential Report para auditar usuarios:

aws iam generate-credential-report
aws iam get-credential-report

Esto muestra cuándo se crearon usuarios, última vez que se usaron passwords/access keys, estado de MFA, etc.

Conclusión

IAM es la fundación de seguridad de AWS. En esta Parte 1, cubrimos:

  • Usuarios: Identidades individuales con credenciales.
  • Grupos: Colecciones de usuarios para gestión más fácil de permisos.
  • Políticas: Documentos JSON que definen permisos.
  • Root vs IAM Users: Nunca uses root diariamente.
  • MFA: Habilítalo en todas partes.
  • Password Policies: Enforza passwords fuertes.
  • Menor Privilegio: Otorga solo permisos necesarios.

En Parte 2, cubriremos IAM Roles, cómo difieren de usuarios, y cómo usarlos para EC2, Lambda, acceso cross-account y más.

Puntos clave para recordar:

  • Habilita MFA en root hoy.
  • Crea usuarios de IAM para todo el mundo, incluyéndote a ti.
  • Usa grupos + managed policies para permisos.
  • Revisa y audita permisos regularmente.

IAM es poderoso, pero con gran poder viene gran responsabilidad. Configúralo correctamente desde el principio, y tu infraestructura de AWS será segura y escalable.