Fluxheim/Τεκμηρίωση/WASM επεκτάσεις

WASM επεκτάσεις

Ειδική έκδοση Wasm βασισμένη στο πλήρες προφίλ παραγωγής, με οριοθετημένα άγκιστρα πολιτικής, ACME, μετρικές και OpenTelemetry

Τι σου δίνει

Ειδική έκδοση Wasm βασισμένη στο πλήρες προφίλ παραγωγής, με οριοθετημένα άγκιστρα πολιτικής, ACME, μετρικές και OpenTelemetry.

Feature λειτουργίαΧρησιμοποίησέ το για
Αποφάσεις πρόσβασηςΤα ζωντανά native HTTP/1 access-decision hooks χρησιμοποιούν σειρά προτεραιότητας, σύνθεση first-deny-wins και συμπεριφορά fail-closed.
Hooks κεφαλίδωνΤα request-headers και response-headers hooks μπορούν να ορίσουν ή να αφαιρέσουν μόνο επιτρεπτά συνθετικά 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.

Εκτέλεση

Χρησιμοποιήστε το ειδικό αρχείο ή image 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

Τα αρχεία plugin πρέπει να είναι απόλυτα κανονικά αρχεία κάτω από εγκεκριμένες ρίζες, χωρίς symlinked αρχεία ή 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 σημειώσεις

Μια προσάρτηση κοντέινερ μόνο για ανάγνωση δεν προστατεύει τα αρχεία στον κεντρικό υπολογιστή. Αναθέστε τη ρύθμιση του κεντρικού υπολογιστή και τον κατάλογο προσθέτων σε αξιόπιστο λογαριασμό χωρίς δικαίωμα εγγραφής.

  • Τα δημόσια manifest προσθέτων πρέπει να περιλαμβάνουν σταθερό αποτύπωμα SHA-256. Σε ολόκληρη τη διεργασία μεταγλωττίζονται ταυτόχρονα το πολύ δύο μονάδες. Η μεταγλωττισμένη έξοδος έχει προεπιλεγμένο όριο 32 MiB και δεν μπορεί να υπερβεί τα 256 MiB.
  • Διατηρείτε τα αρχεία ρυθμίσεων και κάθε υπάρχοντα γονικό κατάλογο υπό αξιόπιστη ιδιοκτησία και χωρίς δικαίωμα εγγραφής για την ομάδα ή άλλους χρήστες.
  • Κάνε pin release versions ή image digests.
  • Κράτα secrets σε files, environment ή container secrets, όχι σε public docs.

Full docs on GitHub

Ελληνικά