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ón | Nativa que llama | Descripción |
|---|---|---|
restringir_host(host: Texto) | _sandbox_restringir_host | Restringe un host de red. Luego de restringir uno, solo los hosts restringidos están permitidos |
restringir_puerto(puerto: Entero) | _sandbox_restringir_puerto | Restringe un puerto de red. Solo los puertos restringidos quedan accesibles |
restringir_directorio(dir: Texto) | _sandbox_restringir_directorio | Restringe el acceso a un directorio. Solo los directorios restringidos están permitidos |
restringir_comando(comando: Texto) | _sandbox_restringir_comando | Restringe la ejecución de un comando. Solo los comandos restringidos se pueden ejecutar |
estado() | _sandbox_estado | Retorna 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".