Tenemos una aplicación web Java que se ejecuta en JBoss y Linux. Los parámetros de conexión de la base de datos del entorno de producción provienen de un archivo de configuración que solo existe en los servidores de aplicaciones del entorno de producción. Ese archivo de configuración solo es legible por el ID de usuario que también ejecuta la aplicación (llamemos a ese usuario del usuario) y las únicas personas que pueden iniciar sesión en los servidores del entorno de producción y sudo al usuario de la aplicación son miembros de nuestro equipo de Operaciones. El entorno de producción en sí está separado de todos los demás entornos.Asegurar contraseñas en el entorno de producción
Queremos que sea más seguro. Específicamente, nos gustaría evitar que el equipo de operaciones lea la contraseña de conexión de la base de datos y otras claves que se encuentran actualmente en el archivo de configuración.
Otro factor a tener en cuenta es que el equipo de operaciones es responsable de crear y desplegar la aplicación.
¿Cuáles son nuestras opciones? La solución debe ser compatible con el reinicio manual de la aplicación y el inicio automático de la aplicación si el SO se reinicia.
actualización
La solución estoy investigando ahora (punta a Adamski por su sugerencia, que se podría traducir en el paso 1):
escribir una ejecutable envoltorio que es
setuid
a un usuario que inicia/detiene las aplicaciones y posee los archivos de configuración y todo lo que está en el árbol de directorios de JBoss.Utilice
jarsigner
para firmar WAR después de que se haya creado. La construcción de la GUERRA se hará por desarrollo. El contenedorsetuid
verificará la firma, validando que WAR no ha sido alterado.Cambie el proceso de implementación para desplegar solo el WAR firmado. El contenedor
setuid
también puede mover el WAR en su lugar en el directorio de implementación de JBoss.
Nota: Cualquier firma solo tiene sentido si usa un certificado real y no uno autofirmado. Además, la JVM todavía puede ser manipulada. –
Correcto, la instalación de JDK también debería estar bloqueada, especialmente el directorio 'cacerts'. – sourcedelica