IAM - identidad y acceso
La identidad es el nuevo perímetro: la seguridad en la nube empieza por saber quién es cada workload, cada humano y cada servicio, y limitar exactamente lo que cada uno puede tocar.
Qué es
IAM () es el sistema que decide quién existe en tu entorno cloud, qué puede hacer cada uno y bajo qué condiciones. En lugar de un firewall en el borde, el control se distribuye en cada llamada de API: cada request lleva una identidad, y esa identidad se evalúa contra políticas antes de tocar cualquier recurso.
Tres piezas sostienen todo: el principal (humano, servicio, workload), la acción que quiere realizar (s3:GetObject, ec2:TerminateInstance) y el recurso objetivo (bucket, instancia, función). La respuesta es siempre sí o no, y el motor registra quién pidió qué, cuándo y cómo.
Usuarios, roles y policies
Los usuarios son identidades persistentes asociadas a alguien (o a un secreto estático). Los roles son identidades asumibles: en lugar de contraseña, alguien cambia de rol vía AssumeRole y obtiene credenciales temporales por minutos u horas. Para workloads casi siempre es así: nada de usuarios fijos, todo mediante roles.
Las policies son documentos JSON que describen permisos. Hay tres tipos que encuentras todo el tiempo: identity policies (asociadas al principal), resource policies (asociadas al recurso, como una bucket policy) y session policies (límites adicionales durante AssumeRole). La evaluación las combina todas, y basta un solo deny explícito para bloquear la acción.
Cuando todo es una policy, se puede revisar, versionar y probar el acceso como código. Cuando la mitad es un clic en la consola y la otra mitad es un JSON pegado en Slack, el caos aparece en el primer incidente.
Wildcard versus least privilege
La política de abajo es el antipatrón clásico: admin con todo sobre cualquier recurso. Aparece cada semana en algún taller y en la mitad de los incidentes de buckets públicos de internet.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessForDev",
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}La política que debería existir
Incluso un job simple rara vez necesita todo. Esta política concede solo la lectura del bucket correcto, en la región correcta, con un condition que limita el origen a un rol específico:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadSiteAssets",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::appsec-kb-static",
"arn:aws:s3:::appsec-kb-static/*"
],
"Condition": {
"StringEquals": {
"aws:PrincipalTag/Team": "frontend"
}
}
}
]
}Trust policy: quién puede asumir el rol
Todo rol tiene dos extremos. El primero es la trust policy, que define quién puede llamar a sts:AssumeRole. El segundo es la permission policy, que define qué gana quien lo asume. Mezclar ambos es donde nacen los incidentes de escalamiento: el rol permite s3:* en cualquier lugar, y la trust acepta Principal: "*", así que cualquier cuenta autenticada entra.
Una buena trust policy nombra cuentas, servicios e incluso condiciones externas (MFA, hora del día, proveedor federado). Cuando ves "Principal": "*" sin Condition explícita, vale la pena detenerse y preguntar por qué.
Permission boundaries: el cinturón de seguridad
Las permission boundaries funcionan como un techo: el permiso efectivo de un principal es la intersección entre lo que permite la boundary y lo que permite la identity policy. Es la herramienta estándar para dar autonomía a los equipos sin ceder el control central.
En la práctica, defines una boundary por equipo o entorno (producción, staging) y dejas que el equipo escriba las identity policies dentro de ese envelope. El desarrollador puede abrir el abanico cuanto quiera, pero nunca pasa del techo.
Dónde aparece en el día a día
- onboarding de una persona nueva: el identity provider (SAML/OIDC) emite tokens cortos, la nube nunca ve una contraseña
- deploy de aplicación: el workload recibe un rol vía OIDC/IRSA e intercambia un token por credenciales, sin secretos en el repositorio
- revocación inmediata: quitas el rol, terminas la sesión STS y el acceso muere al minuto siguiente, sin rotar secretos
- auditoría: cada llamada se vuelve un evento en CloudTrail/equivalente, con ARN del principal, IP de origen y user agent
Puntos fuertes
- control granular por acción, recurso, tag y condición, sin necesidad de red privada
- revocación central: bajas el rol y todos pierden el acceso al mismo tiempo
- modelo auditable: cada decisión pasa por políticas versionadas que pueden revisarse en un PR
Limitaciones
- las políticas se vuelven espagueti: sin herramientas de visualización y lint, es fácil mantener 4.000 statements contradictorios
- el exige descubrimiento continuo: lo que el equipo necesita cambia cada sprint, y la política se queda atrás
- el modelo confunde humano y workload: tratar a un workload como si fuera humano (con usuario fijo + Access Key estática) es la puerta de entrada de casi toda filtración
conexiones en el mapa
- Zero-trust - modelo de confianzaguía el modeloIAM - identidad y acceso
- CSPM - postura cloudauditaIAM - identidad y acceso
- Logging & detection - señales y alertasdocumenta decisionesIAM - identidad y acceso
- IAM - identidad y accesoautoriza el acceso a clavesKMS & crypto - claves y envelopes
- Respuesta a incidentes en la nuberevoca credencialesIAM - identidad y acceso
actualizado el 14/10/2026 · fuentes para profundizar · reportar un error
en otros dominios
- Rutas de ataque y escalada de privilegiosoffseclos caminos de ataque nacen de permisos de más
- A01 Broken Access Controlowaspla misma regla de mínimo privilegio, en la nube
- Agent frameworksai-agentsel mínimo privilegio vale también para el agente
Desbloquea
pon a prueba lo que entendiste
Cargando preguntas…