¿Qué es AWS IAM?
AWS Identity and Access Management (IAM) es un servicio web que te permite controlar de manera granular los permisos y accesos a los servicios y recursos de AWS. Con IAM, puedes crear usuarios, grupos y roles, asignarles políticas de seguridad, y definir quién tiene permiso para hacer qué en tu cuenta de AWS.
Antes de profundizar, es esencial entender que IAM opera bajo el modelo de privilegio mínimo: a cada usuario, aplicación o servicio se le deben otorgar únicamente los permisos estrictamente necesarios para realizar sus tareas específicas. Este principio es fundamental para mantener la seguridad en la nube.
Componentes Principales de IAM
1. Usuarios de IAM
Un usuario de IAM es una identidad dentro de AWS que representa a una persona específica o una aplicación. Cada usuario tiene su propio conjunto de credenciales (nombre de usuario, contraseña, claves de acceso) que pueden ser gestionadas de forma independiente.
Los usuarios son ideales para:
- Representar a empleados que necesitan acceder a la consola de AWS
- Identificar aplicaciones que requieren acceso programático a servicios de AWS
- Gestionar accesos con auditorías detalladas por usuario
2. Grupos de IAM
Los grupos de IAM son colecciones de usuarios que comparten los mismos permisos. Imagina un grupo como un departamento en una empresa: todos los desarrolladores pueden pertenecer al grupo "Desarrolladores", todos los analistas al grupo "Analistas", etc.
Los grupos simplifican la administración porque:
- Permiten asignar permisos a múltiples usuarios simultáneamente
- Facilitan la auditoría al saber qué permisos tiene cada grupo
- Reducen la complejidad al no tener que gestionar permisos individualmente
3. Roles de IAM
Un rol de IAM es una identidad con permisos específicos que puede ser asumida por cualquier persona o servicio que lo necesite. A diferencia de los usuarios, los roles no tienen credenciales permanentes; en su lugar, proporcionan acceso temporal mediante un proceso llamado "asunción de rol".
Los roles son perfectos para:
- Permitir que un servicio de AWS acceda a otro servicio (por ejemplo, una función Lambda accediendo a S3)
- Otorgar acceso temporal a usuarios de otra cuenta AWS
- Habilitar acceso federado desde sistemas externos (como tu proveedor de identidad corporativo)
- Permitir que aplicaciones EC2 accedan a otros servicios de AWS
4. Políticas de IAM
Las políticas de IAM son documentos JSON que definen explícitamente los permisos. Son el mecanismo mediante el cual se otorgan o deniegan permisos a usuarios, grupos y roles.
Una política típica tiene la siguiente estructura:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": "arn:aws:s3:::mi-bucket/*"
}
]
}donde:
- Effect: Puede ser "Allow" (permitir) o "Deny" (denegar)
- Action: Especifica las acciones permitidas o denegadas
- Resource: Indica a qué recursos se aplica la política
Tipos de Políticas
| Tipo de Política | Descripción | Casos de Uso |
|---|---|---|
| Gestionada por AWS | Políticas predefinidas por AWS que no puedes modificar | Permisos estándar como AdministratorAccess, PowerUserAccess |
| Gestionada por el cliente | Políticas que creas y gestionas tú mismo | Requisitos específicos de tu organización |
| En línea (Inline) | Políticas incrustadas directamente en un usuario, grupo o rol | Permisos temporales o de un solo uso |
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucket-ejemplo",
"arn:aws:s3:::bucket-ejemplo/*"
]
}
]
}Esta política permite a un usuario leer objetos y listar el contenido de un bucket específico de S3, pero no permite eliminar, modificar o crear objetos.
Autenticación Multifactor (MFA)
La Autenticación Multifactor (MFA) añade una capa adicional de seguridad requiriendo no solo tu contraseña sino también un código generado por un dispositivo físico o virtual. Es altamente recomendable, especialmente para:
- La cuenta root de tu cuenta AWS
- Usuarios con permisos administrativos
- Acceso programático a recursos sensibles
Acceso Programático vs Acceso a la Consola
| Tipo de Acceso | Credenciales | Uso |
|---|---|---|
| Consola de AWS | Nombre de usuario + contraseña | Gestión visual y administrativa |
| Acceso Programático | Access Key ID + Secret Access Key | CLI, SDKs, APIs |
"La seguridad no es un producto, sino un proceso. IAM te proporciona las herramientas, pero la implementación correcta depende de ti." — Principio de seguridad en la nube.
Mejores Prácticas de Seguridad con IAM
- Habilita MFA para todos los usuarios, especialmente para la cuenta root y usuarios con permisos elevados.
- Implementa el principio de privilegio mínimo: otorga únicamente los permisos necesarios para cada tarea.
- Utiliza grupos para gestionar permisos en lugar de asignar políticas directamente a usuarios individuales.
- Rotación regular de credenciales: cambia las claves de acceso periódicamente.
- Revisa y audita permisos utilizando AWS Access Analyzer y revisiones de acceso periódicas.
- Evita credenciales embebidas: usa roles para acceder a servicios desde instancias EC2, funciones Lambda, etc.
- Configura políticas de contraseñas fuertes que requieran longitudes mínimas, mayúsculas, minúsculas, números y caracteres especiales.
AWS CLI y IAM
Puedes gestionar IAM directamente desde la línea de comandos usando AWS CLI. Aquí tienes algunos comandos esenciales:
# Crear un usuario
aws iam create-user --user-name nombre-usuario
# Agregar usuario a un grupo
aws iam add-user-to-group --user-name nombre-usuario --group-name nombre-grupo
# Crear una clave de acceso
aws iam create-access-key --user-name nombre-usuario
# Listar usuarios
aws iam list-users
# Listar políticas gestionadas
aws iam list-policiesVer más: Comandos útiles para auditoría# Listar todos los usuarios con sus claves de acceso
aws iam get-credential-report
# Ver cuándo fue la última vez que se usó una clave
aws iam get-access-key-last-used --access-key-id AKIAIOSFODNN7EXAMPLE
# Listar políticas attached a un usuario
aws iam list-attached-user-policies --user-name nombre-usuarioCasos de Uso Comunes
Desarrollo Local
Los desarrolladores suelen necesitar acceso a recursos de AWS durante el desarrollo. La mejor práctica es crear un usuario dedicado con permisos específicos para el entorno de desarrollo, nunca usar la cuenta root.
Aplicaciones en EC2
En lugar de guardar claves de acceso en una instancia EC2, utiliza roles de IAM. AWS proporcionará automáticamente credenciales temporales a la instancia:
# Crear un rol para una instancia EC2
aws iam create-role --role-name mi-rol-ec2 \
--assume-role-policy-document file://trust-policy.json
# Adjuntar una política al rol
aws iam attach-role-policy --role-name mi-rol-ec2 \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccessLambda Functions
Las funciones Lambda también utilizan roles de IAM para acceder a otros servicios AWS. Al crear una función, especificas un rol de ejecución que determina qué recursos puede acceder.
Costos de IAM
IAM es un servicio gratuito. No importa cuántos usuarios, grupos o políticas crees; no se te cobrará por ello. Esta gratuidad hace que no haya excusa para no implementar controles de acceso adecuados.
¿Cuál es el principio fundamental que aplica AWS a los permisos por defecto?
- A) Todos los permisos están concedidos por defecto
- B) Todos los permisos están denegados por defecto
- C) Los permisos dependen del tipo de cuenta
- D) Los permisos se heredan del nivel superior
¿Cuál es la diferencia principal entre un rol de IAM y un usuario de IAM?
- A) Los roles no tienen políticas, los usuarios sí
- B) Los roles proporcionan acceso temporal, los usuarios tienen credenciales permanentes
- C) Los roles son más seguros que los usuarios
- D) No hay diferencia, son intercambiables
Conclusión
AWS IAM es el pilar fundamental de la seguridad en AWS. Dominar sus conceptos te permitirá implementar controles de acceso robustos, cumplir con requisitos de auditoría y proteger tus recursos en la nube de manera efectiva.
Recuerda siempre aplicar el principio de privilegio mínimo, utilizar MFA, preferenciar roles sobre credenciales embebidas, y realizar auditorías periódicas de permisos. Con estos fundamentos, estás preparado para construir arquitecturas seguras en AWS.