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.