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.
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.
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.
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"
}
}
}
]
}| Tipo | Alcance | Caso de uso |
|---|---|---|
| Identity-based | Adjuntas a users, groups, roles | Permisos generales de identidades |
| Resource-based | Adjuntas a recursos específicos | Control granular por recurso |
| Permission boundaries | Límite máximo de permisos | Delegación segura de administración |
| Service control policies | Límites a nivel de organización | Governance empresarial |
| Access control lists | Control a nivel de objeto | Compatibilidad con sistemas legacy |
| Session policies | Límites temporales en sesiones | Restricciones adicionales en asunción de roles |
La implementación efectiva del mínimo privilegio requiere un enfoque iterativo:
{
"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 utiliza razonamiento automatizado (automated reasoning) para identificar recursos compartidos externamente y generar políticas basadas en el uso real:
La integración con policy as code permite automatizar la revisión y actualización de políticas basándose en estos hallazgos.
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"
}
}
}
]
}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/*"
}
]
}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:
AWSServiceRoleForAutoScalingAWSServiceRoleForECSAWSServiceRoleForLambdaReplicatorEstos 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.
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": "*"
}
]
}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.
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.
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.
Arquitectura de seguridad que verifica rigurosamente cada solicitud independientemente de su origen, eliminando la confianza implícita en redes internas.
Prácticas y herramientas para almacenar, distribuir y rotar credenciales, API keys y otros datos sensibles de forma segura en aplicaciones y pipelines.
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.
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.
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».
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.
Servicio de almacenamiento de objetos de AWS con durabilidad del 99.999999999%, escalabilidad ilimitada y múltiples clases de almacenamiento para optimizar costos.