La gestión de identidades y accesos en AWS (IAM) es fundamental para mantener la seguridad de tu infraestructura en la nube. Un error en la configuración puede tener consecuencias graves, como el caso mencionado donde un pasante logró cambiar credenciales de un administrador y extraer datos no autorizados. Dominar IAM es esencial para quien busca convertirse en arquitecto de soluciones AWS, ya que permite controlar quién accede a qué recursos y bajo qué condiciones, estableciendo así una base sólida de seguridad para cualquier implementación en la nube.
¿Qué es IAM y por qué es tan importante en AWS?
Identity and Access Management (IAM) es uno de los módulos más críticos dentro de AWS. Este servicio permite configurar y gestionar la lista de usuarios que pueden acceder a nuestra cuenta de AWS, así como definir los permisos y políticas que cada uno tendrá. Su importancia radica en que nos permite implementar el principio de privilegio mínimo, otorgando a cada usuario exactamente los permisos que necesita para realizar sus tareas, ni más ni menos.
En AWS existen dos categorías principales de usuarios:
Usuario root: Es el usuario con el que se crea la cuenta AWS. Tiene acceso completo a todos los servicios y recursos. Por su naturaleza de "superusuario", se recomienda:
Asignarle una contraseña robusta
Configurar autenticación multifactor (MFA)
Evitar su uso para operaciones cotidianas
Usuarios IAM: Son usuarios más controlados donde puedes definir permisos específicos. Son ideales para el uso diario y la asignación a personas o roles dentro de la organización.
¿Cuáles son los diferentes tipos de identidades en IAM?
Dentro de la categoría de usuarios IAM, existen cuatro tipos principales de identidades:
Usuarios: La unidad más básica. Puedes crear un usuario para una persona específica o para un rol determinado dentro de tu organización.
Grupos: Permiten organizar usuarios según roles o funciones (desarrolladores, administradores, finanzas, etc.). Esto facilita enormemente la administración de permisos, ya que cuando existen movimientos de personal, los permisos permanecen asociados al grupo.
Usuarios federados: Se conectan con otras plataformas de identidad que ya existan en la empresa (como Azure Active Directory o Google Workspace). Esto evita la duplicidad de identidades y permite usar las credenciales existentes.
Roles: Son identidades especiales que no poseen credenciales permanentes. Sus credenciales son temporales y se utilizan para:
Otorgar permisos especiales temporales a usuarios
Permitir que los servicios AWS se comuniquen entre sí (por ejemplo, una instancia EC2 o una función Lambda que necesita acceder a un bucket S3)
Veamos un ejemplo práctico:
Un usuario IAM llamado Bob puede acceder a AWS de dos formas:
Usuario y contraseña para la consola web
Access Keys para la línea de comandos (CLI), SDK o aplicaciones
Por otro lado, un usuario específico para un sistema CI/CD solamente tendrá Access Keys para comunicarse programáticamente mediante CLI o SDK.
¿Cómo funcionan las políticas de acceso en AWS IAM?
Las políticas son el mecanismo que define quién tiene acceso a qué recursos dentro de AWS. Son documentos JSON que establecen permisos específicos, y pueden estar basadas en identidades o en recursos. Una cuenta AWS típica contiene varios tipos de identidades (usuarios individuales, grupos, roles e identidades federadas) con diferentes políticas asociadas.
Existen tres tipos principales de políticas:
Políticas gestionadas por AWS: Preconfiguradas para casos de uso comunes.
Políticas personalizadas (custom): Creadas por nosotros para casos específicos.
Políticas en línea (inline): Existen solamente para un usuario o rol específico y no pueden reutilizarse.
¿Cómo crear un rol y asociar políticas en la práctica?
Para implementar estos conceptos, veamos un ejemplo práctico de cómo crear un rol que permita a una instancia EC2 acceder a recursos en S3:
En la consola AWS, ir a la sección de roles
Crear un nuevo rol
Seleccionar EC2 como caso de uso
Asignar una política (en el ejemplo se usó una política de acceso completo a S3, aunque en producción se recomienda seguir el principio de privilegio mínimo)
Nombrar el rol (por ejemplo, "EC2AccessS3")
Este rol tendrá una política gestionada por AWS que permite el acceso a S3. También podemos crear políticas personalizadas que definan permisos más específicos.
¿Cuál es la estructura de una política IAM?
Las políticas en formato JSON tienen varios componentes esenciales:
Version: Especifica la versión del lenguaje de política
Statement: Contiene uno o más permisos
Effect: Define si se permite ("Allow") o se deniega ("Deny") el acceso
Action: La operación que se permite o deniega (por ejemplo, "s3:ListBucket")
Resource: El recurso sobre el que se aplica la política (el "*" indica todos los recursos)
Se pueden añadir múltiples sentencias (statements) para definir permisos más granulares. Las políticas se pueden crear tanto desde la interfaz visual como editando directamente el JSON.
¿Cuáles son las mejores prácticas de IAM?
Para mantener un entorno AWS seguro, considera estas recomendaciones:
Aplicar autenticación multifactor (MFA) para todos los usuarios, especialmente el usuario root
Utilizar principalmente usuarios IAM para las operaciones cotidianas
Minimizar el uso del usuario root
Seguir el principio de privilegio mínimo, otorgando solo los permisos estrictamente necesarios
Preferir políticas personalizadas sobre las de acceso completo cuando sea posible
Usar roles para comunicaciones entre servicios en lugar de compartir credenciales
Evitar políticas inline cuando se necesite reutilizar los permisos
Implementar estas prácticas te ayudará a evitar situaciones como la mencionada, donde un pasante pudo cambiar credenciales de un administrador y acceder a datos no autorizados. La configuración correcta de IAM es la base de la seguridad en AWS y un componente esencial en la preparación para la certificación de arquitecto de soluciones.
La gestión adecuada de identidades y permisos es crucial para proteger tus recursos en la nube. ¿Has tenido alguna experiencia con configuraciones incorrectas en IAM? Comparte en los comentarios qué errores has encontrado y cómo los resolverías para mejorar la seguridad de tu infraestructura.
TL;DR: me imagino que un pasante pudo cambiar la contraseña del ADMIN porque tenía iam:UpdateLoginProfile y sobre resources * y el ADMIN no tenía MFA. Inició sesión con la contraseña temporal y tomó el control.
Recuerden hay que tener prevención:
least priviledge real (no comodines)
permission boundaries/SCPs, MFA obligatorio,
trust policies estrictas!
alertas sobre eventos IAM críticos - digo yo aunque de pereza
Esto pudo haber pasao:
El setting (muy común pues, solo que me imagino que lo hicieron a la rápida)
Empresa con cuentas multi-equipo en AWS.
Para dar autonomía al helpdesk, crean un rol de apoyo para contraseñas y acceso a la consola.
Se hace el JSON “principio de mínimo privilegio” pero, con prisas, alguien copia/pega una política “temporal”.
La (mala) política que creo que empezó todo
Se adjunta a un grupo/rol que el pasante puede asumir:
Error clave #1: confundir iam:ChangePassword (solo cambia tu propia contraseña) con iam:UpdateLoginProfile/CreateLoginProfile (pueden resetear o crear la contraseña de otros usuarios).
Error clave #2:Resource: "*". No limita a quién se le puede resetear la contraseña.
Error clave #3: el usuario ADMIN no tenía MFA. 1) El pasante con el rol de helpdesk Enumera usuarios para “ayudar” (tiene iam:ListUsers por otra política básica).
2) Ejecuta un reset accidental o malintencionado sobre el ADMIN:```
aws iam update-login-profile
--user-name AdminUser
--password 'Temp!234'
--password-reset-required
> Aunque `--password-reset-required` fuerce cambio al siguiente inicio, **quien conoce la contraseña temporal puede iniciar sesión y cambiarla**.1. Inicia sesión en la consola como **AdminUser** (sin MFA, entra directo). 2. (Opcional) Crea **nuevas access keys** para persistencia:
aws iam create-access-key --user-name AdminUser
Gracias por compartir este aporte
Excelente descripción y feedback, complementa mucho la clase!!!
¿Cuál era el rol IAM del pasante? Creo que no lo agregaron en el resumen o comentarios.
IAM: Identity and Access Management
Se configuran los usuarios que van a tener acceso a la cuenta en AWS.
Lo ideal es dar la mínima cantidad de privilegios necesarios. ->
Además de sus permisos y políticas. Así podremos controlar quién hace qué cosa.
Existen dos tipos de usuarios:
Usuario Root (Superusuario)
Usuario IAM
En los usuarios IAM existen 4 tipos de identidades:
Usuarios: asignados a personas o a roles dentro de la organización.
Grupos: utilizados cuando deseamos agrupar por sector o equipos.
Usuarios federados: se conectan con plataformas de identidad.
Roles: no tienen credenciales permanentes, son temporales y se utilizan para darle a un usuario/servicio/plataforma un permiso especial en un momento específico. Esto favorece considerablemente la seguridad.
Las políticas:
Son las que conceden permisos; existen dos: basadas en identidad y en recursos.
Definen quién tiene acceso a qué en nuestra cuenta.
No dice cómo crear un usuario IAM o ¿hay otro curso básico de AWS que toca hacer primero?
Sí amigo, este curso es nivel intermedio-avanzado
Deberías haber tomado primero el curso de introducción a la nube
3 cursos de introducción a AWS, 2 cursos prácticos de AWS y el curso para la certificación cloud practitioner
y luego puedes regresar a este curso