Jonatan Matajonmatum.com
conceptosnotasexperimentosensayos
© 2026 Jonatan Mata. All rights reserved.v2.1.1
Conceptos

AWS IAM

Servicio de gestión de identidad y acceso de AWS que controla quién puede hacer qué en tu cuenta, con políticas granulares basadas en el principio de mínimo privilegio.

evergreen#aws#iam#security#identity#access-control#policies

¿Qué es?

AWS IAM (Identity and Access Management) es el servicio central de autenticación y autorización de AWS que controla quién puede acceder a qué recursos y bajo qué condiciones. Define identidades (usuarios, roles, grupos), políticas de permisos y mecanismos de autenticación para cada interacción con la API de AWS.

IAM opera bajo el modelo de «deny by default» — todo está prohibido hasta que se otorga explícitamente. Cada llamada a la API de AWS pasa por el motor de evaluación de políticas de IAM, que determina si la acción está permitida basándose en las políticas adjuntas a la identidad y al recurso.

El servicio implementa el principio de zero trust donde cada solicitud debe ser autenticada y autorizada independientemente del origen. Esta arquitectura es fundamental para cualquier implementación de infrastructure as code segura en AWS.

Componentes principales

Identidades

Users: Representan personas físicas con credenciales permanentes. En entornos de producción, se prefieren roles sobre usuarios para reducir la superficie de ataque de credenciales de larga duración.

Roles: Identidades asumibles temporalmente por usuarios, servicios o aplicaciones. Los roles no tienen credenciales permanentes — AWS genera tokens temporales mediante STS (Security Token Service). Son la práctica recomendada para servicios como AWS Lambda.

Groups: Colecciones lógicas de usuarios que comparten permisos similares. Facilitan la gestión de permisos a escala organizacional.

Políticas y permisos

Las políticas son documentos JSON que definen permisos usando el lenguaje de políticas de AWS. Siguen la estructura Effect-Action-Resource-Condition:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

Tipos de políticas

TipoAlcanceCaso de uso
Identity-basedAdjuntas a users, groups, rolesPermisos generales de identidades
Resource-basedAdjuntas a recursos específicosControl granular por recurso
Permission boundariesLímite máximo de permisosDelegación segura de administración
Service control policiesLímites a nivel de organizaciónGovernance empresarial
Access control listsControl a nivel de objetoCompatibilidad con sistemas legacy
Session policiesLímites temporales en sesionesRestricciones adicionales en asunción de roles

Principio de mínimo privilegio

La implementación efectiva del mínimo privilegio requiere un enfoque iterativo:

Estrategia de implementación

  1. Baseline restrictivo: Comenzar sin permisos y agregar según necesidad documentada
  2. Monitoreo continuo: Usar IAM Access Analyzer para identificar permisos no utilizados
  3. Rotación regular: Implementar rotación automática de access keys y revisión periódica de roles
  4. Segregación de funciones: Separar permisos de lectura, escritura y administración

Ejemplo de política de mínimo privilegio

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::app-data-${aws:userid}/*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::app-data-${aws:userid}",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:userid}/*"
        }
      }
    }
  ]
}

IAM Access Analyzer

IAM Access Analyzer utiliza razonamiento automatizado (automated reasoning) para identificar recursos compartidos externamente y generar políticas basadas en el uso real:

  • External access findings: Detecta recursos accesibles desde fuera de la cuenta
  • Unused access findings: Identifica permisos otorgados pero no utilizados durante un período configurable
  • Policy generation: Crea políticas de mínimo privilegio basadas en CloudTrail logs

La integración con policy as code permite automatizar la revisión y actualización de políticas basándose en estos hallazgos.

Patrones de acceso cross-account

Cross-account roles

Para acceso entre cuentas AWS, se configuran roles con trust policies que permiten asunción desde cuentas específicas:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT-B:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "unique-external-id"
        }
      }
    }
  ]
}

Resource-based policies

Alternativamente, las políticas basadas en recursos permiten acceso directo sin asunción de roles:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT-B:role/CrossAccountRole"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::shared-bucket/*"
    }
  ]
}

Service-linked roles

Los service-linked roles son roles predefinidos por AWS que otorgan permisos específicos a servicios AWS para operar en tu cuenta. Se crean automáticamente cuando se habilita un servicio y no pueden ser modificados:

  • Auto-scaling groups: AWSServiceRoleForAutoScaling
  • ECS services: AWSServiceRoleForECS
  • Lambda@Edge: AWSServiceRoleForLambdaReplicator

Estos roles implementan el principio de mínimo privilegio a nivel de servicio y se integran con secrets management para el manejo seguro de credenciales temporales.

Permission boundaries

Las permission boundaries actúan como filtros de máximo privilegio, definiendo el límite superior de permisos que una identidad puede tener:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-east-1", "us-west-2"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "iam:CreateUser",
        "iam:DeleteUser",
        "organizations:*"
      ],
      "Resource": "*"
    }
  ]
}

¿Por qué importa?

IAM es el sistema nervioso de la seguridad en AWS — cada llamada a la API pasa por su motor de evaluación. Para ingenieros staff+, dominar IAM significa entender que la seguridad no es un add-on sino la arquitectura fundamental. Las decisiones de diseño de IAM impactan directamente la velocidad de desarrollo, la postura de seguridad y los costos operacionales.

El costo de una configuración incorrecta de IAM puede ser catastrófico: desde brechas de seguridad hasta bloqueos operacionales. La complejidad de las políticas crece significativamente con el tamaño de la organización, haciendo crítico establecer patrones consistentes desde el inicio. La inversión en automatización de IAM y governance proactiva es directamente proporcional a la escala de la infraestructura.

Referencias

  • IAM User Guide — AWS, 2024. Documentación oficial completa.
  • IAM Best Practices — AWS, 2024. Mejores prácticas de seguridad.
  • IAM Access Analyzer — AWS, 2024. Análisis de acceso y generación de políticas.
  • Security, Identity & Compliance — AWS Architecture Center, 2024. Patrones de seguridad empresarial.
  • IAM Policy Language Reference — AWS, 2024. Referencia completa del lenguaje de políticas.
  • Cross-Account Access — AWS, 2024. Tutorial de acceso entre cuentas.
  • Service-Linked Roles — AWS, 2024. Roles vinculados a servicios.

Contenido relacionado

  • AWS Lambda

    Servicio de cómputo serverless de AWS que ejecuta código en respuesta a eventos sin necesidad de aprovisionar ni administrar servidores, escalando automáticamente desde cero hasta miles de ejecuciones concurrentes.

  • Infrastructure as Code

    Práctica de definir y gestionar infraestructura mediante archivos de configuración versionados en lugar de procesos manuales. Fundamento de la automatización moderna de operaciones.

  • Zero Trust

    Arquitectura de seguridad que verifica rigurosamente cada solicitud independientemente de su origen, eliminando la confianza implícita en redes internas.

  • Gestión de Secretos

    Prácticas y herramientas para almacenar, distribuir y rotar credenciales, API keys y otros datos sensibles de forma segura en aplicaciones y pipelines.

  • Políticas como Código

    Práctica de definir políticas de seguridad, compliance y gobernanza como código versionado y ejecutable, automatizando su verificación en pipelines de CI/CD.

  • De prototipo a producción: un segundo cerebro serverless en AWS

    Diseño de arquitectura para escalar un segundo cerebro personal a un sistema de producción con AWS serverless — desde el prototipo actual hasta casos de uso especializados en legal, investigación y comunidad.

  • Segundo Cerebro Serverless

    Backend serverless de producción para un grafo de conocimiento personal — DynamoDB, Lambda, Bedrock, MCP, Step Functions. La implementación de la arquitectura descrita en el ensayo «Del prototipo a producción».

  • OAuth y OIDC

    Estándares de la industria para autorización delegada (OAuth 2.0) y autenticación federada (OpenID Connect), habilitando login con terceros y acceso seguro a APIs.

  • AWS S3

    Servicio de almacenamiento de objetos de AWS con durabilidad del 99.999999999%, escalabilidad ilimitada y múltiples clases de almacenamiento para optimizar costos.

Conceptos