¿Puedo asegurar un servidor en el que estoy permitiendo deliberadamente la ejecución de código?

2

Contexto: competición AI. Los usuarios cargan una DLL con una clase que implementa una interfaz provista, luego el corredor de competencia crea una instancia de esa clase e invoca varios métodos en la interfaz.

Obviamente, esto significa que estoy permitiendo intencionalmente que los usuarios ejecuten el código que deseen siempre que lo envuelvan en un punto de entrada que se parezca a mi interfaz.

En este momento es un asunto interno de la compañía, por lo que confiamos al 100% en todos los empleados ( no hay discusión de esto, por favor ), pero sería bueno poder hacerlo más público. / p>

¿Es posible hacer que un sistema como este sea seguro? ¿Cómo se puede hacer la caja de arena de los archivos DLL? Actualmente se está ejecutando en Azure. ¿Supongo que la caja está respaldada por algunas cosas automatizadas de Azure? (No configuré el cuadro de Azure)

A) ¿Puedo evitar que interactúen con cualquier otra cosa en la caja? B) ¿Puedo evitar que accedan a cualquier cosa fuera del cuadro de Azure? C) ¿Puedo evitar que accedan a las copias de seguridad de Azure (es decir, si digo que no me importa si destruyen la caja, porque podría restaurar desde una copia de seguridad, entonces es seguro?)

    
pregunta Brondahl 10.11.2017 - 17:37
fuente

1 respuesta

1

Dado que ya está ejecutando en un entorno virtual, la forma más sencilla sería dar a cada usuario un entorno pequeño y separado para trabajar. Si su equipo de operaciones es bueno, utilizarán plantillas estándar y / o secuencias de comandos para crear y eliminar entornos virtuales en cualquier caso, por lo que esto debería ser sencillo.

Si estuviera utilizando un servidor Linux, el enfoque más sencillo sería la virtualización a través de Docker.

    
respondido por el Julian Knight 12.11.2017 - 14:26
fuente

Lea otras preguntas en las etiquetas