Fluxheim/Tài liệu/Tiện ích mở rộng WASM

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ăngSử dụng nó cho
Quyết định truy cậpLive native HTTP/1 access-decision hooks dùng priority ordering, first-deny-wins composition và fail-closed behavior.
Hook tiêu đềrequest-headersresponse-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ếnroute-decision hook chỉ có thể tiếp tục, từ chối hoặc chọn các nhánh route canarymirror đã cấu hình và khớp.
Quyết định cachecache-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.

Full docs on GitHub

Tiếng Việt