Saltar al contenido principal

Seguridad de claves API: mejores prácticas para desarrolladores

Lectura de 8 min aprox.

Las claves API y los secretos son las credenciales que otorgan acceso programático a servicios y datos. Una clave API filtrada puede llevar a acceso no autorizado, violaciones de datos y cargos inesperados. Este artículo cubre los riesgos de la exposición de claves API y métodos prácticos para una gestión segura.

¿Por dónde debería empezar?

Mejore la gestión de claves API en el siguiente orden de prioridad. Los principiantes deben primero agregar archivos .env a .gitignore y migrar las claves codificadas en el código fuente a variables de entorno. Los intermedios deben habilitar git-secrets o el escaneo de secretos de GitHub para detectar filtraciones automáticamente. Los avanzados deben implementar AWS Secrets Manager o HashiCorp Vault y configurar la rotación automática de claves.

Por qué las filtraciones de claves API son peligrosas

A diferencia de las contraseñas que protegen cuentas de usuario individuales, las claves API a menudo otorgan acceso amplio a servicios completos, bases de datos o infraestructura en la nube. Una sola clave filtrada puede crear una vulnerabilidad crítica que comprometa un sistema completo.

Los bots automatizados escanean continuamente repositorios públicos en busca de credenciales expuestas. Una vez que se encuentra una clave, los atacantes pueden explotarla en minutos para minar criptomonedas, exfiltrar datos o lanzar ataques a otros sistemas. Con el modelo de pago por uso de los servicios en la nube, los cargos por uso no autorizado pueden acumularse enormemente en poco tiempo. En los últimos años, los ataques a la cadena de suministro que inyectan código malicioso en bibliotecas legítimas también se han convertido en un vector creciente de robo de claves API.

Causas comunes de exposición de claves API

Codificación directa en el código fuente

Incrustar claves API directamente en el código fuente es la causa más común de filtraciones. Incluso si el repositorio es privado, las claves en el código pueden exponerse a través del intercambio de código, capturas de pantalla o cambios en el acceso al repositorio. Una vez que una clave se ha confirmado en el historial de Git, permanece en el historial incluso si se elimina del código, requiriendo `git filter-branch` o BFG Repo-Cleaner para una eliminación completa.

Confirmar archivos .env

Los archivos de entorno que contienen secretos a veces se confirman accidentalmente cuando .gitignore no está configurado correctamente. Verifique siempre que los archivos sensibles estén excluidos del control de versiones. Configure .gitignore correctamente al inicio del proyecto para asegurar que archivos como .env, .env.local y .env.production estén excluidos.

Para construir un entorno de desarrollo seguro, libros de seguridad API y gestión de credenciales (Amazon) son útiles.

Exposición del lado del cliente

Las claves API incrustadas en JavaScript del frontend son visibles para cualquiera que inspeccione el código fuente de la página. Las claves que otorgan acceso de escritura o acceso a datos sensibles nunca deben usarse en código del lado del cliente. Una clave expuesta puede servir como puerta trasera a su sistema para los atacantes. Si es necesario, diseñe la arquitectura para retransmitir solicitudes a través de una API backend. Incluso para claves API públicas usadas en el frontend (como claves de Google Maps API), es importante configurar restricciones de referrer HTTP y límites de uso.

Mejores prácticas para la gestión segura de claves

Variables de entorno

Almacene las claves API en variables de entorno en lugar de en el código. Use archivos .env para desarrollo local y configure variables de entorno a través de su plataforma de despliegue para producción. Siempre agregue archivos .env a .gitignore e incluya un archivo de plantilla como .env.example (solo nombres de claves sin valores) en el repositorio.

Gestores de secretos

Para entornos de producción, use servicios dedicados de gestión de secretos como AWS Secrets Manager, HashiCorp Vault o Google Secret Manager. Estos proporcionan cifrado en reposo, control de acceso y rotación automática. La rotación automática limita el período de validez de las claves, minimizando el alcance del impacto en caso de filtración. AWS Secrets Manager cuesta aproximadamente $0.40 por secreto al mes.

Rotación de claves

Rote regularmente las claves API para limitar la ventana de exposición si una clave se ve comprometida. Automatice el proceso de rotación para reducir errores humanos. Tenga en cuenta que invalidar inmediatamente la clave antigua durante la rotación puede causar interrupciones temporales del servicio. Establezca un período de operación paralela de claves antiguas y nuevas.

Principio de mínimo privilegio

Otorgue a las claves API solo los permisos mínimos necesarios para su caso de uso específico. Evite usar claves maestras o credenciales de nivel administrador en el código de la aplicación. Use políticas IAM de AWS o roles IAM de Google Cloud para implementar control de acceso granular. El principio de mínimo privilegio es el principio de seguridad más fundamental en la gestión de claves API.

Para aprender más sobre diseño de permisos y patrones de implementación de control de acceso, libros de diseño de IAM y control de acceso (Amazon) son útiles.

Generación de claves API fuertes con Passtsuku.com

Cuando necesite generar claves API o secretos personalizados, Passtsuku.com proporciona cadenas aleatorias criptográficamente seguras. Configure la longitud a 32 caracteres o más con todos los tipos de caracteres habilitados para máxima entropía. Los símbolos pueden no ser aceptados por algunos servicios, así que verifique las especificaciones del servicio objetivo. Si el medidor de fortaleza muestra 120 bits o más de entropía, es suficiente como clave API.

Para generar múltiples claves a la vez, use la función de generación masiva. Cada clave será única y criptográficamente aleatoria, adecuada para diferentes servicios y entornos. Las claves generadas se procesan completamente dentro del navegador y nunca se transmiten externamente.

Detección de claves filtradas

Use herramientas como git-secrets, truffleHog o el escaneo de secretos integrado de GitHub para detectar credenciales confirmadas accidentalmente. Configure hooks de pre-commit para prevenir que los secretos se confirmen. Si una clave se filtra, invalídela inmediatamente y emita una nueva. También es importante verificar los registros de acceso para confirmar si la clave filtrada fue utilizada de forma no autorizada. Consulte también cómo responder a una violación de datos.

Actúa ahora

  1. Verifique que .gitignore incluya .env, .env.local y .env.production, y agréguelos si faltan
  2. Busque claves API codificadas en el código fuente y migre las encontradas a variables de entorno
  3. Genere cadenas aleatorias de más de 32 caracteres con Passtsuku.com para usar como claves API o secretos personalizados
  4. Habilite la función de escaneo de secretos de GitHub para detectar filtraciones automáticamente
  5. Configure un programa de rotación de 90 días o menos para claves críticas de producción

Preguntas frecuentes

¿Qué debo hacer si codifiqué accidentalmente una clave API en el código fuente?
Revoque inmediatamente la clave y emita una nueva. Como permanece en el historial de Git, use git filter-branch o BFG Repo-Cleaner para reescribir el historial.
¿Con qué frecuencia debo rotar las claves API?
Las claves críticas de producción deben rotarse en 90 días, las de desarrollo en 180 días. Use AWS Secrets Manager para automatizar la rotación.
¿Qué hago si necesito usar una clave API en el código frontend?
Nunca use claves con acceso de escritura en código frontend. Retransmita solicitudes a través de una API backend. Incluso para claves públicas, configure restricciones de referrer y límites de uso.

¿Te resultó útil este artículo?

Términos relacionados

XHatena