IAM: Primeros Pasos en AWS
Clase 5 de 69 • Curso de AWS Certified Solutions Architect Associate
Resumen
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": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "*"
}
]
}
- 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.