Tiện ích mở rộng WASM
Bản dựng Wasm chuyên dụng dựa trên hồ sơ sản xuất đầy đủ, với các điểm nối chính sách được giới hạn, ACME, số liệu và OpenTelemetry
Bạn nhận được gì
Bản dựng Wasm chuyên dụng dựa trên hồ sơ sản xuất đầy đủ, với các điểm nối chính sách được giới hạn, ACME, số liệu và OpenTelemetry.
| Tính năng | Sử dụng nó cho |
|---|---|
| Quyết định truy cập | Live native HTTP/1 access-decision hooks dùng priority ordering, first-deny-wins composition và fail-closed behavior. |
| Hook tiêu đề | request-headers và response-headers hooks chỉ có thể đặt hoặc xóa synthetic headers trong allow-list, như ví dụ policy-tier. |
| Quyết định định tuyến | route-decision hook chỉ có thể tiếp tục, từ chối hoặc chọn các nhánh route canary và mirror đã cấu hình và khớp. |
| Quyết định cache | cache-lookup hook có thể continue, pass, bypass hoặc deny. cache-store hook có thể continue, skip storage hoặc deny trước khi ghi vào memory/disk cache. |
Chạy
Dùng gói hoặc image profile-wasm chuyên dụng; bản dựng đầy đủ thông thường được chủ ý giữ không có Wasm.
Image Wasm chính thức có môi trường chạy nhưng không chứa plugin của người vận hành. Chỉ gắn các mô-đun đã được duyệt ở chế độ chỉ đọc và ghim từng mô-đun bằng 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
Gốc plugin đã được phê duyệt
Tệp plugin phải là tệp thường với đường dẫn tuyệt đối, nằm dưới các root đã phê duyệt, không qua symlink hoặc parent path.
[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"]
Thực thi có giới hạn
Các giới hạn fuel, memory, table, instance, compile-timeout, compile-worker và watchdog theo từng lần gọi giữ sandbox trong phạm vi kiểm soát.
[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
Ghi chú production
Việc gắn kết chỉ đọc trong container không bảo vệ các tệp trên máy chủ. Hãy để một tài khoản đáng tin cậy không có quyền ghi sở hữu cấu hình máy chủ và thư mục plugin.
- Manifest công khai phải ghim giá trị SHA-256. Toàn bộ tiến trình chỉ biên dịch đồng thời tối đa hai tác vụ; sản phẩm biên dịch có giới hạn mặc định 32 MiB và giới hạn tuyệt đối 256 MiB.
- Đặt config file và mọi parent directory hiện có dưới ownership đáng tin cậy, đồng thời không cho group hoặc user khác quyền ghi.
- Phiên bản phát hành ghim hoặc thông báo hình ảnh.
- Giữ secrets trong file, environment hoặc container secrets, không đặt trong public docs.