Fluxheim/Дакументацыя/Пашырення WASM

Пашырення WASM

Асобная зборка Wasm на аснове поўнага вытворчага профілю з абмежаванымі перахопнікамі палітык, ACME, метрыкамі і OpenTelemetry

Што гэта дае

Асобная зборка Wasm на аснове поўнага вытворчага профілю з абмежаванымі перахопнікамі палітык, ACME, метрыкамі і OpenTelemetry.

МожливістьВыкарыстоўвайце для
Рашэнні доступуЖывыя native HTTP/1 access-decision hooks выкарыстоўваюць парадак прыярытэтаў, кампазіцыю first-deny-wins і паводзіны fail-closed.
Хукі загалоўкаўHooks request-headers і response-headers могуць задаваць або выдаляць толькі дазволеныя сінтэтычныя headers, як у прыкладзе 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

Зацверджаныя карані плагінаў

Файлы плагінаў павінны быць звычайнымі файламі з абсалютнымі шляхамі ў зацверджаных каранях, без сімвалічных спасылак або бацькоўскіх шляхоў.

[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, памяці, табліц, асобнікаў, часу кампіляцыі, compile worker-аў і 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.
  • Захоўвайце config files і ўсе існыя parent directories пад надзейнай ownership і без права запісу для group або іншых users.
  • Фіксуйце версіі выпуску або image digests.
  • Трымайце сакрэты ў файлах, environment або container secrets, не ў публічнай дакументацыі.

Full docs on GitHub

Беларуская