Ir al contenido
  1. Posts/

Ejecutar Código Python en un Sandbox con MicroPython y WebAssembly

··312 palabras·2 mins·

🔒 Python Seguro en un Sandbox
#

¿Necesitas ejecutar código Python sin que tenga acceso a archivos, red o recursos del sistema? Ahora es posible gracias a MicroPython compilado a WebAssembly.

🤔 ¿Por qué necesitas un sandbox?
#

Los plugins y la ejecución de código dinámico son extremadamente útiles, pero inseguros si no están aislados. Imagina ejecutar un plugin que:

  • Lee archivos privados
  • Hace llamadas de red no autorizadas
  • Consume toda tu CPU o memoria

Un sandbox lo previene todo esto.

🏗️ ¿Cómo funciona?
#

MicroPython (una versión “lean” de Python 3 para sistemas embebidos) se compila a WebAssembly. Los motores WASM como wasmtime ofrecen:

Control de memoria: límites estrictos ✅ Control de CPU: mediante el concepto “fuel” de wasmtime ✅ Control de archivos: acceso solo a lo que permitas ✅ Control de red: ninguna comunicación sin tu mediación ✅ Funciones host: exponer selectivamente APIs del sistema

💡 Explicación en pocas palabras
#

WebAssembly es un formato binario que actúa como una “máquina virtual portátil”. Los navegadores lo usan para ejecutar código JavaScript compilado de forma segura. Al compilar MicroPython a WebAssembly, obtienes un intérprete Python que corre en un entorno completamente aislado: no puede acceder a tu disco, conectarse a internet o consumir recursos sin límites.

En la práctica, ahora puedes hacer:

with MicroPythonSession() as session:
    session.run("x = 10")
    session.run("print(x * 2)")

Y todo sucede en un sandbox seguro, incluso si el código es malicioso.

🚀 Caso de uso real
#

Simon Willison lo usa para Datasette Agent — permite ejecutar plugins de Python de forma segura sin riesgo de romper la aplicación principal.

Más información en el link 👇

También publicado en LinkedIn.
Juan Pedro Bretti Mandarano
Autor
Juan Pedro Bretti Mandarano