saltar al contenido
volver al mapa
técnica
etapa: proteger
4 min de lectura

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.

AWS IAMOktaMicrosoft Entra IDPalo Alto Prisma Cloud

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.

policy.json - permisiva (NO la uses)json
{
  "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:

policy.json - least privilegejson
{
  "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
IAMidentity and access managementEl conjunto de políticas, roles y credenciales que dice quién es cada humano, servicio o workload, y qué puede hacer cada uno. En la nube, IAM se convirtió en el nuevo perímetro: el borde de red se volvió poroso, así que la identidad carga la autorización.ver en el glosario →Mínimo privilegioleast privilegePrincipio de darle a cada identidad solo los permisos estrictamente necesarios para su función, y nada más. Es lo opuesto a 'usuario admin por defecto': cada rol extra es un camino más que un atacante puede usar después de un compromiso.ver en el glosario →

conexiones en el mapa

actualizado el 14/10/2026 · fuentes para profundizar · reportar un error

en otros dominios

Desbloquea

pon a prueba lo que entendiste

Cargando preguntas…