Fluxheim/Dokumentáció/WASM bővítmények

WASM bővítmények

A teljes éles profilra épülő külön Wasm-build, korlátozott szabályhookokkal, ACME-vel, metrikákkal és OpenTelemetryvel

Mit ad

A teljes éles profilra épülő külön Wasm-build, korlátozott szabályhookokkal, ACME-vel, metrikákkal és OpenTelemetryvel.

FunkcióErre használd
Hozzáférési döntésekAz élő natív HTTP/1 access-decision hookok prioritási sorrendet, first-deny-wins kompozíciót és fail-closed viselkedést használnak.
Header-hookokA request-headers és response-headers hookok csak engedélyezett szintetikus headereket állíthatnak be vagy távolíthatnak el, például a policy-tier példában.
Útvonal-döntésekA route-decision hookok csak folytathatnak, elutasíthatnak vagy kiválaszthatnak konfigurált, illeszkedő canary és mirror útvonalágakat.
Cache döntésekA cache-lookup hookok folytathatnak, továbbengedhetnek, megkerülhetik a cache-t vagy elutasíthatnak. A cache-store hookok folytathatnak, kihagyhatják a tárolást vagy elutasíthatnak a memória-/lemez-cache írása előtt.

Futtatás

Használja a külön profile-wasm archívumot vagy konténerképet; a szokásos teljes build szándékosan Wasm nélküli marad.

A hivatalos Wasm-konténerkép tartalmazza a futtatókörnyezetet, de üzemeltetői bővítményeket nem. Az ellenőrzött modulokat csak olvashatóan csatolja, és minden modult rögzítsen SHA-256-tal.

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

Jóváhagyott plugingyökerek

A pluginfájloknak jóváhagyott gyökerek alatti, abszolút útvonalú normál fájloknak kell lenniük, szimbolikus linkek és szülőútvonalak nélkül.

[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"]

Korlátozott futtatás

Fuel, memory, table, instance, compile-timeout, compile-worker and per-call watchdog limits keep the sandbox bounded.

[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 megjegyzések

A csak olvasható konténercsatolás nem védi a gazdagépen lévő fájlokat. A gazdagép konfigurációját és a bővítménykönyvtárat megbízható, írásra nem jogosult tulajdonos kezelje.

  • A nyilvános bővítményjegyzékeknek rögzített SHA-256 kivonatot kell tartalmazniuk. A teljes folyamatban egyszerre legfeljebb két modul fordítható. A lefordított kimenet alapértelmezett korlátja 32 MiB, és nem haladhatja meg a 256 MiB értéket.
  • A konfigurációs fájlok és minden meglévő szülőkönyvtár megbízható tulajdonban legyen, és a csoport vagy más felhasználók ne írhassák őket.
  • Rögzíts release versionöket vagy image digesteket.
  • A secretek file-okban, environmentben vagy container secretekben legyenek, ne public docsban.

Full docs on GitHub

Magyar