Cloud Security Maturity Model·AWS v3.0.0

Arrastra para explorar · pellizca para ampliar

Fundacional Seguridad de las aplicaciones

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 --scan

Có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

AWS Secrets Manager Amazon Q Developer

Precios

Prueba gratuita · 30 días

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.

Mapeos de frameworks

AWS CAF

Well-Architected

NIST CSF

Referencias