Fluxheim/Документация/WASM разширения

WASM разширения

Специална Wasm компилация, базирана на пълния производствен профил, с ограничени програмни куки, ACME, метрики и OpenTelemetry

Какво дава

Специална Wasm компилация, базирана на пълния производствен профил, с ограничени програмни куки, ACME, метрики и OpenTelemetry.

ФункцияИзползвай за
Решения за достъпЖивите native HTTP/1 access-decision hook-ове използват приоритетен ред, first-deny-wins композиция и fail-closed поведение.
Header-hook-овеrequest-headers и response-headers hook-овете могат да задават или премахват само позволени синтетични header-и, като примера policy-tier.
Решения за маршрутиroute-decision hooks могат само да продължат, да откажат или да изберат конфигурирани съвпадащи canary и mirror маршрутни клонове.
Cache решенияcache-lookup hooks могат да правят continue, pass, bypass или deny. cache-store hooks могат да правят continue, skip storage или deny преди записите в memory/disk cache.

Стартирай

Използвайте специалния архив или образ profile-wasm; обичайната пълна компилация умишлено остава без Wasm.

Официалният Wasm образ съдържа средата за изпълнение, но не и операторски приставки. Монтирайте проверените модули само за четене и фиксирайте всеки модул чрез 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

Одобрени корени на плъгини

Plugin файловете трябва да са абсолютни регулярни файлове под одобрени roots, без symlink файлове или 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"]

Ограничено изпълнение

Лимитите за fuel, memory, table, instance, compile-timeout, compile-worker и per-call watchdog държат sandbox-а ограничен.

[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 бележки

Монтиране на контейнер само за четене не защитава файловете му върху хоста. Дръжте конфигурацията на хоста и директорията с приставки под надеждна собственост без права за запис.

  • Публичните манифести на добавки трябва да съдържат фиксиран SHA-256 дайджест. В целия процес могат да се компилират едновременно най-много два модула. Компилираният резултат е ограничен по подразбиране до 32 MiB и не може да надвишава 256 MiB.
  • Съхранявайте конфигурационните файлове и всяка съществуваща родителска директория под доверена собственост и без права за запис от групата или други потребители.
  • Фиксирай release version или image digest.
  • Дръж secret-и във file, environment или container secrets, не в public docs.

Full docs on GitHub

Български