¿Son las variables de entorno de Elastic Beanstalk un lugar apropiado para almacenar valores secretos?

15

Implementé mi aplicación Django en Elastic Beanstalk con la intención de usar su interfaz de configuración variable de entorno para almacenar mis claves API en lugar de almacenarlas en mi fuente (como se describe aquí /programming//a/17878600 ).

Después de hacer esto, descubrí que lo que Beanstalk llama variables de entorno no son realmente variables de entorno de shell (como se menciona aquí /programming//a/24564832/378638 ) y se almacenan en la instancia en un archivo de configuración (como descrito aquí /programming//a/24566283/378638 ).

Esto me parece un problema de seguridad. ¿No vence esto el propósito de mantener las claves secretas fuera de la fuente? Entiendo que ya no están en el repositorio, pero aún son accesibles en la instancia.

¿Estoy malinterpretando el riesgo? Soy administrador de sistemas por herencia, así que disculpe mi ignorancia aquí. ¿Debo cargar las variables de Beanstalk como variables de entorno de shell a través del archivo de configuración y continuar ya que solo se puede acceder al archivo a través de la raíz, o mi preocupación es válida? Gracias.

M. Keller
fuente

Respuestas:

12

El punto de mantener los secretos fuera del código fuente es para que no entren en el control de la fuente . Esto es particularmente útil en proyectos de código abierto.

Cuando se implementa, no importa si el secreto está en un archivo o envvar. Lo importante es que solo el usuario del sistema operativo que ejecuta su programa pueda leerlo. Este es el valor predeterminado para envvars, lo cual es conveniente.

Root siempre puede leer todo. Entonces Amazon puede conocer sus valores secretos si lo desean, porque son root.

Sin embargo, admiten módulos de seguridad de hardware (HSM) caros, lo que haría que sus claves no se puedan leer. Por supuesto, aún podrían usar el HSM para descifrar sus cosas, solo que nunca obtendrían la clave real.

Entonces, o necesita confiar en Amazon, o alojar cosas usted mismo, o colocar.

Neil McGuigan
fuente