🔐

IAM - Gestión de identidad y acceso

Usuarios, grupos, roles, políticas y permisos

⏱️ Tiempo estimado de lectura: 15 minutos

Introducción a IAM

AWS Identity and Access Management (IAM) es un servicio web que te ayuda a controlar de forma segura el acceso a los recursos de AWS. Con IAM, puedes gestionar de forma centralizada los permisos que controlan qué recursos de AWS pueden acceder los usuarios.

Puntos Clave

  • IAM es global, no requiere selección de región
  • Gratis de usar, sin costos adicionales
  • Sigue el principio de menor privilegio
  • Usa MFA para usuarios con privilegios elevados
  • Nunca compartas las credenciales del usuario root

Usuarios de IAM

Un usuario de IAM es una entidad que creas en AWS para representar a una persona o aplicación que interactúa con AWS. Un usuario consta de un nombre y credenciales.

Credenciales:
- Consola: Usuario y contraseña para acceso web
- Programático: Access Key ID y Secret Access Key para CLI/SDK
- Mejores prácticas:
- Nunca usar el usuario root para tareas diarias
- Habilitar MFA para usuarios con permisos elevados
- Rotar credenciales regularmente
- No incrustar Access Keys en código

Puntos Clave

  • Cada usuario tiene credenciales únicas
  • Máximo 5,000 usuarios por cuenta AWS
  • Un usuario puede pertenecer a hasta 10 grupos
  • Las políticas se pueden adjuntar directamente a usuarios (no recomendado)

💻 Comandos AWS CLI para gestión de usuarios

# Crear un nuevo usuario
aws iam create-user --user-name developer-juan

# Crear access keys para acceso programático
aws iam create-access-key --user-name developer-juan

# Listar todos los usuarios
aws iam list-users

Grupos de IAM

Los grupos son colecciones de usuarios que comparten los mismos permisos. Los grupos simplifican la gestión de permisos al permitirte especificar permisos para múltiples usuarios a la vez.

Características:
- Los grupos solo pueden contener usuarios, no otros grupos
- Un usuario puede pertenecer a múltiples grupos
- Los usuarios no necesitan pertenecer a ningún grupo
- Un grupo puede tener múltiples políticas adjuntas

Puntos Clave

  • Los grupos no se pueden anidar
  • Usa grupos para gestionar permisos a escala
  • Organiza grupos por función laboral (Developers, Admins, QA)
  • Aplica políticas a grupos, no a usuarios individuales

💻 Gestión de grupos con AWS CLI

# Crear un grupo
aws iam create-group --group-name Developers

# Agregar usuario a grupo
aws iam add-user-to-group --user-name developer-juan --group-name Developers

# Adjuntar política a grupo
aws iam attach-group-policy --group-name Developers --policy-arn arn:aws:iam::aws:policy/PowerUserAccess

Políticas de IAM

Las políticas de IAM son documentos JSON que definen permisos. Especifican qué acciones están permitidas o denegadas en qué recursos de AWS.

Tipos de políticas:
- Gestionadas por AWS: Creadas y gestionadas por AWS
- Gestionadas por el cliente: Creadas por ti, reutilizables
- En línea: Relación 1:1 con una entidad (no recomendado)

Puntos Clave

  • Effect: Allow o Deny
  • Action: Operaciones permitidas/denegadas
  • Resource: Recursos AWS específicos (ARN)
  • Condition: Condiciones opcionales para aplicar política
  • Principal: Quién puede asumir el rol (en políticas de confianza)

💻 Estructura básica de una política IAM

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

💻 Ejemplo de política para acceso de solo lectura a S3

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

Roles de IAM

Un rol de IAM es una identidad de AWS con políticas de permisos que determinan lo que la identidad puede y no puede hacer en AWS. A diferencia de un usuario, un rol está diseñado para ser asumido por cualquiera que lo necesite.

Casos de uso comunes:
- Servicios AWS: EC2 accediendo a S3, Lambda accediendo a DynamoDB
- Cross-Account Access: Cuenta A accediendo recursos en Cuenta B
- Federación: Usuarios externos (Google, SAML) accediendo a AWS
- Usuarios temporales: Acceso limitado por tiempo

¿Por qué usar roles en lugar de credenciales?
- Credenciales temporales que rotan automáticamente
- No necesitas gestionar/rotar Access Keys manualmente
- Más seguros: sin exposición de credenciales a largo plazo

Puntos Clave

  • Los roles no tienen credenciales a largo plazo
  • Proporciona credenciales temporales (STS)
  • Pueden ser asumidos por usuarios, servicios o aplicaciones
  • Política de confianza define quién puede asumir el rol
  • Política de permisos define qué puede hacer el rol

💻 Política de confianza permitiendo a EC2 asumir el rol

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

💻 Creación de rol para EC2

# Crear un rol
aws iam create-role --role-name EC2-S3-ReadOnly-Role --assume-role-policy-document file://trust-policy.json

# Adjuntar política de permisos
aws iam attach-role-policy --role-name EC2-S3-ReadOnly-Role --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

# Crear instance profile (necesario para EC2)
aws iam create-instance-profile --instance-profile-name EC2-S3-Profile

# Asociar rol a instance profile
aws iam add-role-to-instance-profile --instance-profile-name EC2-S3-Profile --role-name EC2-S3-ReadOnly-Role

Multi-Factor Authentication (MFA)

MFA añade una capa extra de seguridad requiriendo que los usuarios proporcionen dos o más factores de verificación para acceder a AWS.

Tipos de MFA:
- Virtual MFA: Apps como Google Authenticator, Authy, Microsoft Authenticator
- Hardware MFA: Dispositivos físicos como YubiKey
- U2F Security Key: Llaves USB como YubiKey

Cuándo usar MFA:
- SIEMPRE en el usuario root
- Usuarios con permisos administrativos
- Usuarios con acceso a datos sensibles
- Acceso a la consola AWS

Puntos Clave

  • MFA combina algo que sabes (contraseña) + algo que tienes (token)
  • Protege contra compromiso de contraseñas
  • Virtual MFA es gratis y fácil de configurar
  • Puedes forzar MFA mediante políticas de IAM

💻 Política que fuerza MFA para todas las acciones

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

Mejores Prácticas de IAM

Seguir las mejores prácticas de IAM es crucial para mantener una cuenta AWS segura.

Top 10 Mejores Prácticas:

1. Bloquear el usuario root: Habilita MFA y no uses root para tareas diarias
2. Principio de menor privilegio: Otorga solo los permisos necesarios
3. Usa grupos: Asigna permisos a grupos, no a usuarios individuales
4. Políticas gestionadas: Usa políticas gestionadas en lugar de inline
5. Roles para aplicaciones: Usa roles IAM, no credenciales hardcoded
6. Rotar credenciales: Rota access keys y contraseñas regularmente
7. Habilita MFA: Especialmente para usuarios privilegiados
8. Usa condiciones: Restringe acceso por IP, hora, MFA, etc.
9. Audita permisos: Revisa políticas con IAM Access Analyzer
10. Monitorea actividad: Usa CloudTrail para auditar llamadas API

Puntos Clave

  • La seguridad es responsabilidad compartida
  • Usa AWS Security Hub para recomendaciones
  • Implementa separación de responsabilidades
  • Documenta tus políticas y roles
  • Usa tags para organizar recursos IAM