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.