c2.21 Mantener los secretos fuera del código
Codificar secretos en el código arriesga exponer una credencial a cualquiera que pueda leer el repositorio. Obtenga los secretos en tiempo de ejecución desde AWS Secrets Manager y escanee el código para atrapar un secreto subido antes de que llegue a producción.
Guía de implementación
No codifique secretos
Un secreto en el código puede leerlo cualquiera con acceso al repositorio, se filtra con facilidad a repositorios públicos y es difícil de rotar. Si el secreto codificado es una access key, prefiera credenciales temporales vía roles.
Obtenga secretos de larga duración en tiempo de ejecución
Cuando su código necesita un secreto genuino de larga duración (una contraseña de base de datos, una API key de terceros), guárdelo en AWS Secrets Manager y recupérelo en tiempo de ejecución. Otorgue a la carga permiso para leer el secreto a través de su rol IAM (instance profile, rol de ejecución de Lambda/ECS), de modo que no haya credenciales embebidas en el código. Secrets Manager puede rotar automáticamente los secretos compatibles; vea las buenas prácticas.
Atrape los secretos antes de que lleguen a producción
Escanee el código en busca de secretos subidos con herramientas como git-secrets, e integre el escaneo de secretos en su pipeline para que un secreto detectado bloquee la promoción. Amazon Q Developer también marca secretos mientras se escribe el código.
Obtén en runtime, escanea antes del commit
Recupera el secreto en tiempo de ejecución en lugar de codificarlo:
aws secretsmanager get-secret-value \
--secret-id prod/db/password \
--query SecretString --output text
Agrega un escaneo del repositorio para que un secreto commiteado bloquee el pipeline:
git secrets --install
git secrets --register-aws
git secrets --scanCómo validar
- ¿Usa AWS Secrets Manager (o similar) para almacenar y rotar secretos como contraseñas de bases de datos?
- ¿Está evitando que se suban secretos al código (escaneo, verificaciones pre-commit)?
- ¿Los desarrolladores están capacitados para no almacenar secretos en el código?
- ¿El pipeline se detiene cuando se detecta un secreto?
Amenazas que atiende
- Los secretos en el código pueden tomarlos quienes tengan acceso de lectura (testers, revisores) y usarlos fuera del código o venderlos a adversarios.
- Los desarrolladores pueden subir código a repositorios públicos como GitHub, exponiendo las credenciales; los adversarios rastrean activamente los repositorios en su búsqueda.
- Los secretos codificados son difíciles de rotar rápido, algo crítico durante un compromiso conocido. Los mismos riesgos aplican a secretos en archivos de configuración subidos junto al código.
Servicios AWS
Precios
AWS Secrets Manager cuesta USD 0.40 por secreto al mes más USD 0.05 por cada 10,000 llamadas a la API, con una prueba gratuita de 30 días. Vea precios de Secrets Manager.
Cloud Security Maturity Model