¿No es seguro usar variables ambientales para datos secretos?

6

Después de leer esta publicación de blog en el que el autor presenta argumentos en contra del uso de variables ambientales para almacenar secretos, no estoy seguro de cómo proceder con el despliegue de mi aplicación.

Sus argumentos principales son los siguientes:

  
  • Dado que el entorno está implícitamente disponible para el proceso, es difícil, si no imposible, rastrear el acceso y cómo se obtienen los contenidos.   expuesto (ps -eww).

  •   
  • Es común que las aplicaciones tomen todo el entorno y lo impriman para la depuración o el informe de errores. Tantos secretos consiguen   filtrado a PagerDuty que tienen un proceso interno bien engrasado para   elimínelos de su infraestructura.

  •   
  • Las variables de entorno se transmiten a procesos secundarios, lo que permite un acceso no deseado. Esto rompe el principio de lo menos   privilegio. Imagina que como parte de tu aplicación, llamas a un   herramienta de terceros para realizar alguna acción, de repente, eso   La herramienta de terceros tiene acceso a su entorno, y Dios sabe lo que hace.   hará con él.

  •   
  • Cuando las aplicaciones fallan, es común que almacenen las variables de entorno en los archivos de registro para su posterior depuración. Esto significa   secretos de texto plano en el disco.

  •   
  • Poner secretos en variables ENV se convierte rápidamente en conocimiento tribal. Nuevos ingenieros que no son conscientes de la naturaleza sensible de   Las variables de entorno específicas no las manejarán adecuadamente / con   atención (filtrando a subprocesos, etc.).

  •   

Esto me parece muy razonable, pero no soy un profesional de seguridad. Su sugerencia alternativa es usar la funcionalidad de guardar secretos de Docker, pero eso es suponer que estás usando Docker ... lo cual no. Estoy en Heroku. Así que ahora no estoy seguro de esto. Parece que no hay soporte para usar Vault en Heroku, lo mejor que puedo decir.

    
pregunta temporary_user_name 16.11.2018 - 08:22
fuente

1 respuesta

1

En general, almacenar secretos en variables de entorno tiene algunas desventajas, como dice Diogo en su publicación.

En general, para plataformas como Heroku, o el uso de tecnologías como Docker donde se espera que la aplicación sea efímera, las herramientas de administración de secretos dedicadas son la mejor manera de hacerlo. La idea es que debería haber una herramienta que contenga el secreto en forma encriptada y la proporcione a la aplicación en tiempo de ejecución.

El secreto puede vivir dentro de la aplicación, generalmente como un archivo, que se puede leer y los secretos de ese archivo, según sea necesario.

Dos ejemplos de herramientas en esta área son Hashicorp Vault y Key's Keywhiz .

Además de esto, si está implementando en una nube, generalmente el proveedor de la nube debería tener algún tipo de facilidad de administración de secretos, por ejemplo, AWS Secrets Manager .

No he tenido mucha experiencia con la administración de secretos en Heroku, sin embargo, parecen tener un complemento llamado ice que opera en esta área.

    
respondido por el Rоry McCune 16.11.2018 - 10:16
fuente

Lea otras preguntas en las etiquetas