Entradas

AWS KMS: ¿Clave Administrada por AWS o CMK para Cifrar tu Bucket S3?

Cuando configuras cifrado en un bucket S3 por primera vez, la pantalla de la consola te presenta opciones que parecen equivalentes pero tienen implicaciones operativas y de costos muy distintas. Elegir entre una clave administrada por AWS y una clave administrada por el cliente (CMK) no es solo una decisión de seguridad — define quién controla el acceso, quién paga por cada operación criptográfica, y qué tan rápido puedes revocar acceso en una emergencia. TL;DR: AWS Managed Key vs. CMK para S3 Dimensión AWS Managed Key (aws/s3) Customer Managed Key (CMK) Creación y rotación Automática, gestionada por AWS Manual o programada, controlada por ti Política de clave No editable Totalmente configurable Costo por API call Sin cargo directo para S3 SSE-KMS Cargo por cada llamada a la API de KMS Auditoría ...

Beneficios de RDS Multi-AZ: Alta Disponibilidad, Failover y lo que Nadie te Cuenta

Cuando un equipo habilita Multi-AZ en una instancia RDS por primera vez, la pregunta inevitable es: '¿esto también mejora el rendimiento, o solo sirve para el failover?' La confusión es legítima — AWS menciona réplicas, sincronización y standby en el mismo párrafo, y es fácil mezclar Multi-AZ con Read Replicas. Esta guía aclara exactamente qué compras cuando activas Multi-AZ, qué no compras, y cuándo el failover automático puede sorprenderte en producción. TL;DR — Beneficios de RDS Multi-AZ Aspecto Con Multi-AZ Sin Multi-AZ Alta disponibilidad ✅ Failover automático (~60-120 s) ❌ Recuperación manual Durabilidad de datos ✅ Replicación síncrona ⚠️ Solo backups Rendimiento de escritura ❌ Sin mejora (standby no sirve lecturas) — Rendimiento de lectura ❌ Sin mejora (usar Read Replicas) — Mantenimiento con downtime reducido ✅ Failover antes del parche ❌ Ventana de mantenimiento completa Backups...

Errores CORS en API Gateway: Cómo habilitarlo y qué cabeceras debe devolver tu Lambda

Tu frontend hace una petición a API Gateway y el navegador la bloquea con un error CORS antes de que llegue ninguna respuesta útil. El problema casi nunca está en un solo lugar: API Gateway necesita responder al preflight OPTIONS , y tu función Lambda debe incluir las cabeceras correctas en cada respuesta. Si falla cualquiera de los dos lados, el navegador rechaza la llamada igualmente. TL;DR — Resumen rápido Capa Qué debes configurar Dónde API Gateway (REST) Habilitar CORS en el recurso, desplegar el stage Consola / CLI / SAM API Gateway (HTTP) Configurar CORS en la sección 'CORS' de la API Consola / CLI Lambda (ambos tipos) Incluir Access-Control-Allow-Origin y cabeceras relacionadas en la respuesta Código de la función Preflight OPTIONS Debe responder con 200 y las cabeceras correctas API Gateway o Lambda Cómo funciona CORS en API Gateway CORS (Cross-Origin Resource Sharing) es un meca...

¿Por qué usar Secrets Manager en lugar de hardcodear credenciales?

El repositorio es privado, el equipo es pequeño, la fecha de entrega es mañana — y la contraseña de la base de datos termina incrustada directamente en el código fuente. Es una decisión que se toma en segundos y que puede costar semanas de trabajo de remediación cuando ese repositorio se clona en un entorno de CI, se expone en un log de error, o simplemente un ex-colaborador conserva acceso al historial de Git. AWS Secrets Manager existe precisamente para eliminar esta clase de deuda de seguridad antes de que se convierta en un incidente. TL;DR — Secrets Manager vs. credenciales hardcodeadas Dimensión Credencial hardcodeada AWS Secrets Manager Exposición en repositorio Permanente en historial de Git El código nunca contiene la credencial Rotación de contraseña Manual, propensa a omisión Automática vía Lambda integrada Auditorí...

Cómo Encontrar Quién Eliminó un Recurso en AWS con CloudTrail

Una instancia EC2 desaparece en producción y nadie admite haberla terminado. Antes de escalar el incidente o revisar manualmente cada cuenta IAM, CloudTrail ya registró exactamente quién ejecutó TerminateInstances , desde qué IP y con qué credenciales. El problema no es que la información no exista — es saber dónde buscarla y cómo interpretarla correctamente. TL;DR — Resumen Rápido Paso Acción Resultado esperado 1 Abrir CloudTrail Event History en la consola Vista de eventos de los últimos 90 días 2 Filtrar por nombre de evento: TerminateInstances Lista de eventos de terminación 3 Filtrar por ID de recurso o rango de tiempo Evento específico de la instancia eliminada 4 Inspeccionar el campo userIdentity del evento Usuario IAM, rol asumido, o cuenta raíz responsable 5 Verificar sourceIPAddress y userAgent Contexto adicional del origen de la acción Cómo Funciona CloudTrail Event History CloudT...