Módulo sandbox — Aislamiento de Red

Archivo: stdlib/std/sandbox.fa

¿Por qué existe?

Controla el acceso a recursos del sistema (red, archivos y procesos) desde código Forja. Por defecto todo está habilitado; este módulo permite restringir el acceso cuando sea necesario. La política es de whitelist: una vez que se restringe un host, puerto, directorio o comando, solo los elementos restringidos quedan permitidos.

Se usa con importar std/sandbox y es la capa Forja sobre las funciones nativas _sandbox_* implementadas en Rust en src/sandbox.rs (ver la página Sandbox (sandbox.rs)).

Funciones que expone

FunciónNativa que llamaDescripción
restringir_host(host: Texto)_sandbox_restringir_hostRestringe un host de red. Luego de restringir uno, solo los hosts restringidos están permitidos
restringir_puerto(puerto: Entero)_sandbox_restringir_puertoRestringe un puerto de red. Solo los puertos restringidos quedan accesibles
restringir_directorio(dir: Texto)_sandbox_restringir_directorioRestringe el acceso a un directorio. Solo los directorios restringidos están permitidos
restringir_comando(comando: Texto)_sandbox_restringir_comandoRestringe la ejecución de un comando. Solo los comandos restringidos se pueden ejecutar
estado()_sandbox_estadoRetorna el estado actual del sandbox como un mapa, p. ej. {red: "abierto", archivos: "abierto", procesos: "abierto"}

Ejemplo

importar std/sandbox

# Restringir host de red
sandbox.restringir_host("google.com")

# Restringir directorio de archivos
sandbox.restringir_directorio("/etc")

# Restringir comando de procesos
sandbox.restringir_comando("rm")

# Consultar estado
variable estado = sandbox.estado()
escribir(estado)  # {red: "restringido", archivos: "restringido", procesos: "restringido"}
Modelo de permisos: restringir un elemento no suma a una lista de bloqueo, sino que cambia la política a permitir solo los elementos restringidos. Pensá cada llamada como "habilitar únicamente este elemento".