Fluxheim/Dokumentacija/WASM ekstenzije

WASM ekstenzije

Namjenska Wasm verzija temeljena na punom produkcijskom profilu, s ograničenim programskim kukama, ACME-om, metrikama i OpenTelemetryjem

Što dobivaš

Namjenska Wasm verzija temeljena na punom produkcijskom profilu, s ograničenim programskim kukama, ACME-om, metrikama i OpenTelemetryjem.

FunkcijaKoristi za
Odluke o pristupuŽivi native HTTP/1 access-decision hookovi koriste redoslijed prioriteta, first-deny-wins kompoziciju i fail-closed ponašanje.
Header-hookovirequest-headers i response-headers hookovi mogu postaviti ili ukloniti samo dopuštene sintetičke headere, kao u policy-tier primjeru.
Odluke ruteroute-decision hookovi mogu samo nastaviti, odbiti ili odabrati konfigurirane podudarne canary i mirror grane rute.
Cache odlukecache-lookup hooks mogu napraviti continue, pass, bypass ili deny. cache-store hooks mogu napraviti continue, skip storage ili deny prije upisa u memory/disk cache.

Pokreni

Upotrijebite namjensku arhivu ili sliku profile-wasm; uobičajena puna verzija namjerno ostaje bez Wasma.

Službena Wasm slika sadrži izvršno okruženje, ali ne i operaterske dodatke. Pregledane module montirajte samo za čitanje i svaki modul vežite uz SHA-256.

podman pull ghcr.io/valkyoth/fluxheim:v1.8.0-wasm

podman run --rm \
  -v ./fluxheim.toml:/etc/fluxheim/fluxheim.toml:ro,Z \
  -v /srv/infra/fluxheim/plugins:/etc/fluxheim/plugins:ro,Z \
  ghcr.io/valkyoth/fluxheim:v1.8.0-wasm

Odobreni korijeni dodataka

Plugin datoteke moraju biti apsolutne regularne datoteke ispod odobrenih rootova, bez symlink datoteka ili parent paths.

[wasm]
enabled = true
plugin_roots = ["/etc/fluxheim/plugins"]
max_total_concurrent_executions = 256
max_total_preview_concurrent_executions = 32
max_total_cache_concurrent_executions = 256

[[wasm.plugins]]
name = "security_headers"
path = "/etc/fluxheim/plugins/security_headers.wasm"
sha256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
abi = "fluxheim-policy-v1"
host_call_namespace = "fluxheim-policy-v1"
phases = ["response-headers"]
fail_mode = "fail-closed"

[[wasm.attachments]]
plugin = "security_headers"
vhost = "example"
priority = 100
phases = ["response-headers"]

Ograničeno izvršavanje

Limiti za fuel, memory, table, instance, compile-timeout, compile-worker i per-call watchdog drže sandbox ograničenim.

[wasm.plugins.limits]
max_module_bytes = "1MiB"
max_compiled_artifact_bytes = "32MiB"
max_memory_bytes = "16MiB"
max_table_elements = 10000
fuel = 5000000
timeout_ms = 50
compile_timeout_ms = 500

Production napomene

Montiranje spremnika samo za čitanje ne štiti njegove datoteke na hostu. Konfiguracija hosta i direktorij dodataka trebaju pripadati pouzdanom računu bez prava pisanja.

  • Javni manifesti dodataka moraju sadržavati fiksni SHA-256 sažetak. U cijelom procesu istodobno se mogu kompajlirati najviše dva modula. Kompajlirani izlaz zadano je ograničen na 32 MiB i ne može prijeći 256 MiB.
  • Konfiguracijske datoteke i svaki postojeći nadređeni direktorij držite u pouzdanom vlasništvu, bez dopuštenja pisanja za grupu ili druge korisnike.
  • Fiksiraj release version ili image digest.
  • Drži secret u file, environment ili container secrets, ne u public docs.

Full docs on GitHub

Hrvatski