Nota: esta es una publicación cruzada de mi pregunta en SO . Siéntase libre de guardar el que está en la ubicación más relevante y cerrar el otro.
Tenemos una aplicación de rieles que se implementará en torquebox / jboss. (De alguna manera, esto no importa demasiado para la pregunta, ya que se aplicaría a cualquier aplicación web, no solo a Rails). Recupera ciertas variables de configuración sensibles al nivel de la aplicación del entorno, como ENV['DATABASE_URL']
(que incluye Las credenciales de autenticación se ven como drivername://user:pass@host:port/dbname
) y ENV['PEPPER']
cuando se inicia, para hacer procesos esenciales como conectarse a la base de datos. Las variables no están encriptadas en este momento. En esencia, el uso del entorno para mantener estas variables sigue la aplicación de 12 factores Heroku playbook.
Hay de alguna manera dos preguntas aquí:
-
¿Es compatible con PCI almacenar tales variables sin cifrar en el entorno?
-
Las variables de entorno no tienen que venir del shell del sistema operativo (el lugar normal donde vivirían). Igualmente, podrían establecerse en jboss o torquebox si eso fuera más seguro, por ejemplo, contra un ataque como el de un shellshock. ¿Qué almacén de variables ENV se debe utilizar?
Soy consciente de que existen alternativas, como el cifrado con DPAPI (pero eso es solo Windows), el uso de almacenes de claves Java (pero eso está limitado a la autenticación basada en certificados de cliente AFAIK, no las contraseñas antiguas), pero son más Me cuesta mucho utilizarlo, y el uso de variables de entorno parece tan recomendado, incluso por los propios proveedores de PaaS, que me pregunto si realmente debemos hacer un esfuerzo adicional.