Evita que un usuario no confiable ejecute el bytecode Java

2

Supongamos que los usuarios de Windows tienen una necesidad legítima de ejecutar ciertas aplicaciones Java. ¿Es posible evitar que los usuarios introduzcan y ejecuten su propio código de bytes JVM?

Solo he encontrado métodos para ejecutar código java no confiable en un recinto de seguridad, por ejemplo.

java -Djava.security.manager=COM.abc.MySecMgr SomeApp

Sin embargo, un usuario que no sea de confianza puede simplemente especificar su propio administrador de seguridad o archivo de políticas.

java -Djava.security.manager -Djava.security.policy=pURL SomeApp

¿Es posible dar a los usuarios acceso a algunas aplicaciones basadas en Java preinstaladas, pero evitar que introduzcan y ejecuten otras aplicaciones Java?

    
pregunta 11.11.2016 - 04:25
fuente

1 respuesta

2

Una forma de realizar lo que quiere que use un usuario delegado. Eso funciona mejor con las tareas que no tienen una GUI, pero también podría funcionar con las tareas de la GUI (si realmente funciona o no, depende de demasiados detalles para ser descritos aquí: necesita experimentar)

Debe evitar que los usuarios de Windows ejecuten cualquier aplicación Java (por ejemplo, a través de un cambio en los permisos en el sistema de archivos donde se encuentra el JRE).

Luego creas un usuario diferente que tiene los derechos necesarios para ejecutar tu aplicación y escribe un pequeño script que inicia tu aplicación. Ese script también debe estar protegido contra modificaciones (al menos) por parte del usuario regular.

Finalmente, creas una tarea programada para ejecutar tu script (opcionalmente, puedes ejecutar la línea de comandos whol JRE desde esa tarea programada pero es menos ajustable) y configurarlo para que se ejecute como el usuario delegado. Debe proporcionar al usuario habitual una forma de iniciar la tarea: puede explicar cómo hacerlo desde el propio programador de tareas o, como prefiero hacer, configurarlo para que se ejecute cuando aparezca un evento específico en el registro de eventos y use la función de creación de eventos. comando en un archivo por lotes para agregar ese evento.

Otra forma es usar Citrix o RemoteApp en una máquina diferente (con una aplicación perfecta). Tendrá que bloquear la sesión bastante para evitar que el usuario ejecute una línea de comandos.

Finalmente, en Windows 10/2016, puedes intentar usar un contenedor docker. Para tareas automatizadas, eso funcionará bien. Para las aplicaciones GUI, no estoy seguro de que pueda funcionar: sé que es posible en Linux pero no lo he probado en Windows.

    
respondido por el Stephane 11.11.2016 - 10:10
fuente

Lea otras preguntas en las etiquetas