Amazon IAM
Resumen General
IAM (Identity and Access Management) es un servicio de AWS que permite controlar de forma segura el acceso a los recursos de AWS mediante la gestión de usuarios, grupos, roles y políticas.
Links de Contenido
Anotaciones:
Conceptos básicos de IAM
IAM permite administrar el acceso a los recursos de AWS mediante identidades (usuarios, grupos, roles) y políticas de permisos.
- Usuario: entidad que representa a una persona o aplicación que interactúa con AWS.
- Grupo: colección de usuarios con políticas asociadas.
- Rol: identidad que puede asumir cualquier entidad para ejecutar acciones.
- Política: documento JSON que define permisos mediante Effect, Action, Resource y Condition.
Claves de acceso (Access Keys)
Las claves de acceso (Access Key ID y Secret Access Key) permiten autenticarse programáticamente a servicios de AWS.
- Se generan para usuarios IAM.
- Usar solo cuando no sea posible usar roles.
- Evitar compartirlas o almacenarlas en texto plano.
- Rotar periódicamente por seguridad.
Creación de usuarios y grupos
Al crear un usuario IAM, se puede definir si tendrá acceso mediante consola, CLI o SDK.
- Generar contraseña automáticamente y permitir cambio al primer login.
- Guardar el CSV con username y password.
- Crear un grupo con políticas asignadas (como AdministratorAccess).
- Agregar el nuevo usuario al grupo correspondiente.
Políticas en IAM (Policies)
Las políticas son documentos JSON que especifican permisos sobre recursos de AWS.
- Effect: Allow | Deny
- Action / NotAction: indica qué se puede (o no) hacer.
- Resource / NotResource: especifica los recursos permitidos o denegados.
- Condition: restricciones adicionales (ej. horario, MFA, etiquetas)
- Deny siempre prevalece sobre Allow.
Generación de políticas personalizadas
Podés usar el generador visual de políticas o escribirlas manualmente en JSON.
- Se puede declarar un array de recursos.
- Variables como ${aws:username} permiten políticas dinámicas.
- Se pueden usar condiciones temporales, de red o autenticación multifactor.
- IAM Policy Simulator ayuda a testear la política antes de aplicarla.
Tipos de políticas en IAM
IAM permite aplicar distintos tipos de políticas según la necesidad.
- Managed policies de AWS (predefinidas, no editables)
- Customer managed policies (creadas por el usuario, reutilizables)
- Inline policies (asociadas directamente a una identidad específica)
- Permissions boundaries (límite superior de permisos que puede tener una entidad)
- Session policies (se aplican durante sesiones temporales)
Roles en IAM
Los roles permiten delegar permisos de forma segura sin utilizar credenciales a largo plazo.
- Service Role: EC2 asume un rol para acceder a S3, por ejemplo.
- Service-linked Role: administrado por AWS para servicios específicos (no modificable)
- Cross-account role: una cuenta permite a otra asumir un rol.
- Identity provider role: acceso federado mediante OIDC, Google, Facebook, etc.
- Custom trust policy: define quién puede asumir el rol.
RBAC y ABAC
IAM soporta dos modelos de control de acceso: basado en roles (RBAC) y en atributos (ABAC).
- RBAC: permisos según función del usuario (ej. Developer, Admin, Auditor)
- ABAC: permisos según etiquetas, útil en entornos con muchos recursos y usuarios.
- Ejemplo ABAC: acceso a recursos con tag Departament=Marketing si el usuario tiene aws:PrincipalTag/Departament igual.
Auditoría y análisis
IAM ofrece herramientas para auditar el uso de identidades y permisos.
- Credential Report: listado de usuarios y estado de credenciales.
- Access Advisor: muestra cuándo un usuario accedió por última vez a un servicio.
- Access Analyzer: detecta permisos externos (cross-account, public) y permite archivarlos o corregirlos.
- IAM Policy Validator: verifica errores de seguridad en las políticas JSON.
Seguridad y buenas prácticas
Aplicar buenas prácticas de seguridad reduce el riesgo de accesos no autorizados.
- No usar la cuenta root salvo para configuración inicial.
- Proteger la root con MFA obligatorio.
- Usar roles en vez de claves de acceso siempre que sea posible.
- Rotar periódicamente las claves.
- Aplicar principio de menor privilegio (Least Privilege).
- Deshabilitar usuarios y roles no utilizados.
- Utilizar contraseñas fuertes y políticas de expiración.
- Habilitar MFA para todos los usuarios IAM.
- Limitar acceso con condiciones (IP, tiempo, tags, etc.).
IAM Identity Center (ex AWS SSO)
Permite acceso federado y centralizado a múltiples cuentas de AWS con identidades externas.
- Gestión de acceso para usuarios de Active Directory, Google Workspace, etc.
- Asigna permisos a usuarios externos mediante grupos y políticas comunes.
- Simplifica el acceso sin necesidad de múltiples claves o usuarios IAM por cuenta.