¿Puede almacenar configuraciones de aplicaciones confidenciales en el entorno y ser compatible con PCI?

2

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í:

  1. ¿Es compatible con PCI almacenar tales variables sin cifrar en el entorno?

  2. 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.

    
pregunta user1475135 04.11.2014 - 14:53
fuente

1 respuesta

1

La URL de la base de datos (que no sea el nombre de usuario y la contraseña) y Pepper no son valores confidenciales. Es posible que no desee anunciarlos, pero debe asumir que son conocidos de todos modos. Si su seguridad depende de que sean seguros, es casi seguro que no es compatible con PCI. Cualquier "seguridad" que proporcione ese secreto es solo seguridad por oscuridad.

La base de datos debe ser inaccesible de otra manera que no sea desde sus servidores web y su pepper solo existe para dificultar el hashing. No veo por qué estos valores particulares, al ser accesibles al medio ambiente, serían un problema, ya que de todos modos no son secretos.

El principal problema posible sería que sus credenciales de base de datos estén volando en el viento, pero en realidad no hay demasiada forma de tener que almacenarlas en algún lugar. Debería intentar restringir el acceso a los datos de configuración, incluido el nombre de usuario y la contraseña de la base de datos tanto como sea posible, pero, a menos que sea bastante elaborado, tiene que estar en un archivo en algún lugar. Haga que sea lo más inaccesible posible y asegúrese de que solo los sistemas que necesitan acceso al servidor DB tengan acceso y su riesgo sea limitado.

Dejaré que alguien más pronuncie el nombre de usuario y la contraseña específicamente, ya que ha pasado un poco desde la última vez que tuve que lidiar con PCI-DSS y no confío especialmente en mi memoria ni tengo tiempo para buscar Los detalles en este momento.

    
respondido por el AJ Henderson 04.11.2014 - 15:34
fuente

Lea otras preguntas en las etiquetas