WASM এক্সটেনশন
সম্পূর্ণ প্রোডাকশন প্রোফাইলের উপর ভিত্তি করে তৈরি স্বতন্ত্র Wasm বিল্ড, যাতে সীমাবদ্ধ পলিসি হুক, ACME, মেট্রিক্স এবং OpenTelemetry রয়েছে
এটি আপনাকে যা দেয়
সম্পূর্ণ প্রোডাকশন প্রোফাইলের উপর ভিত্তি করে তৈরি স্বতন্ত্র Wasm বিল্ড, যাতে সীমাবদ্ধ পলিসি হুক, ACME, মেট্রিক্স এবং OpenTelemetry রয়েছে.
| feature | জন্য এটি ব্যবহার করুন |
|---|---|
| অ্যাক্সেস সিদ্ধান্ত | Live native HTTP/1 access-decision hooks priority order, first-deny-wins composition এবং fail-closed behavior ব্যবহার করে। |
| হেডার hooks | request-headers ও response-headers hooks কেবল allow-listed synthetic headers, যেমন policy-tier example, set বা remove করতে পারে। |
| রুট সিদ্ধান্ত | route-decision hooks শুধুমাত্র continue, deny বা configured matching canary এবং mirror route branches নির্বাচন করতে পারে। |
| Cache সিদ্ধান্ত | cache-lookup hooks continue, pass, bypass বা deny করতে পারে। cache-store hooks memory/disk cache writes-এর আগে continue, skip storage বা deny করতে পারে। |
চালান
স্বতন্ত্র 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 roots
Plugin ফাইল অবশ্যই অনুমোদিত root-এর নিচে absolute path-সহ regular file হতে হবে; symlink বা 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"]
সীমিত execution
Fuel, memory, table, instance, compile-timeout, compile-worker এবং প্রতি-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
উত্পাদন নোট
কনটেইনারের শুধু-পঠন মাউন্ট হোস্টের ফাইলগুলোকে সুরক্ষিত করে না। হোস্ট কনফিগারেশন ও প্লাগইন ডিরেক্টরি এমন একটি বিশ্বস্ত অ্যাকাউন্টের মালিকানায় রাখুন যার লেখার অনুমতি নেই।
- পাবলিক প্লাগইন ম্যানিফেস্টে একটি নির্দিষ্ট SHA-256 ডাইজেস্ট থাকতে হবে। পুরো প্রক্রিয়ায় একই সময়ে সর্বাধিক দুটি মডিউল কম্পাইল করা যায়। কম্পাইল করা আউটপুটের ডিফল্ট সীমা 32 MiB এবং তা 256 MiB অতিক্রম করতে পারে না।
- config file এবং তার প্রতিটি বিদ্যমান parent directory বিশ্বস্ত ownership-এর অধীনে রাখুন এবং group বা অন্য user-এর লেখার অনুমতি বন্ধ রাখুন।
- release version বা image digest pin করুন।
- secret file, environment বা container secret-এ রাখুন, public docs-এ নয়।