Proteger la contraseña de mi base de datos de los desarrolladores

Proteger la contraseña de mi base de datos de los desarrolladores

Tenemos una aplicación que utiliza una base de datos en mi lugar de trabajo. Actualmente, utiliza una contraseña de nombre de usuario para autenticarse (aunque podríamos usar conexiones de IP confiables). No queremos usar la confianza debido al movimiento que haremos con las IP de máquinas particulares en las que residen la aplicación y la base de datos.

Actualmente, debido a que aplicamos el nombre de usuario/contraseña establecidos en los archivos de configuración de la aplicación, tenemos a los desarrolladores además de mi jefe, que es el administrador del sistema, y ​​a nosotros, sus seis subordinados, conscientes de la contraseña (siendo yo el jefe), porque cualquiera de nosotros Administrador de forma rotativa, mantiene e implementa la aplicación. Como tal, el riesgo de mantener la contraseña segura recae en todos nosotros.

Que he hecho Recientemente hemos comenzado a cambiar la contraseña con más frecuencia, pero ahora quiero que sólo yo sepa esta contraseña. Soy el único que debería ejecutar consultas en la base de datos directamente por directiva de mi jefe. Incluso mi jefe no tiene necesidad de saberlo (tal vez en mi ausencia y en acta). He pensado en hacer a continuación:

  1. Cree un archivo de texto en el servidor que solo sea legible para la aplicación.
  2. Haga que los desarrolladores codifiquen la aplicación para consultar este archivo y obtener una contraseña en texto sin formato.
  3. La aplicación utiliza esto para iniciar sesión.

Estoy pensando que los desarrolladores aún podrán revelar la contraseña si en la aplicación almacenan un código que haga esto por ellos (NO es que sean siniestros, solo estamos tratando de optimizar colectivamente el riesgo colectivo)

Pregunta ¿Existe una mejor manera de perfeccionar este enfoque? ¿Existe también otra forma que pueda utilizar además de esta?

Plataformas: Linux (servidor Ubuntu), PostgreSQL, Java

Respuesta1

La antigua forma Unix/Linux es:

vi /etc/my_app.conf
database_ip=192.168.123.123
database_instance=db1
database_user=my_app
database_password=secret_in_plaintext

Esto no resuelve su problema inmediatamente, pero... En el futuro podrá implementar exactamente los mismos binarios de aplicación (war/jar) endiferenteServidores de aplicaciones (producción, preproducción, pruebas, desarrollo). Todos estos pueden tener diferentes bases de datos (prod, pre, test, dev). De esta manera, los desarrolladores eventualmente no necesitarán ningún acceso a la producción.

información relacionada