Tengo un montón de proyectos de python con aplicaciones WSGI que no son de confianza dentro de ellos. Necesito ejecutarlos de forma simulada y segura. Por lo tanto, necesito restricciones para el acceso al directorio, el uso del módulo python y las limitaciones para CPU y memoria.código de Python encarcelamiento
considero dos enfoques:
de importación a través de imp-módulo WSGI a objetos de archivo definido, y ejecutarlo con pysandbox. Ahora tengo
SandboxError: Read only object
cuando se hace:self.config = SandboxConfig('stdout') self.sandbox = Sandbox(self.config) self.s = imp.get_suffixes() wsgi_obj = imp.load_module("run", open(path+"/run.py", "r"), path, self.s[2]).app … return self.sandbox.call(wsgi_obj, environ, start_response)
Modificar intérprete de Python, excluir a los módulos de riesgo potencial, se ejecutan en procesos paralelos, comunicarse a través de tomas ZMQ/Unix. Incluso no sé por dónde empezar aquí.
¿Qué podrías recomendar?
La separación del proceso es definitivamente una buena idea. Aún mejor sería usar la virtualización. No sé sobre pysandbox, pero escuché que las soluciones existentes para el código de sandboxing Python no son especialmente buenas. –
El espacio aislado en CPython no es muy bueno, pero otros intérpretes de Python, particularmente PyPy, tienen un soporte de espacio aislado más completo. –
Probé el sandboxing PyPy. Es muy complicado. – sashab