প্রকল্প সম্পর্কে

# Nirmata Runtime For Kyverno Nirmata Runtime হলো একটি Kubernetes-নেটিভ রানটাইম সিকিউরিটি টুল, যা কার্নেল স্তরে ওয়ার্কলোডের আচরণ মনিটর ও এনফোর্স করতে eBPF ব্যবহার করে। এটি প্রতি-নোড DaemonSet হিসেবে কাজ করে এবং ক্লাস্টার-স্কোপড `RuntimePolicy` কাস্টম রিসোর্স দ্বারা নির্বাচিত পডে eBPF প্রোগ্রাম সংযুক্ত করে। ## মূল সক্ষমতা `RuntimePolicy` পাঁচ ধরনের ওয়ার্কলোড আচরণ নিয়ন্ত্রণ করে: 1. **ফাইল ওপেন** – একটি প্রসেস কোন ফাইল ওপেন করে 2. **বাইনারি এক্সিকিউশন** – কোন বাইনারি এক্সিকিউট করে 3. **নেটওয়ার্ক গন্তব্য** – কোথায় ট্রাফিক পাঠায় 4. **অ্যাপ্লিকেশন প্রোটোকল** – কোন প্রোটোকল ব্যবহার করে 5. **DNS রেজোলিউশন** – কোন ডোমেইন নাম রেজলভ করে সিদ্ধান্ত কার্নেলে নেওয়া হয়, তাই প্রত্যাখ্যাত অপারেশন কখনো সম্পন্ন হয় না। এটি Kyverno-এর মতো অ্যাডমিশন কন্ট্রোলারের পরিপূরক, যা স্টার্টআপের আগে পড স্পেক যাচাই করে, প্রকৃত রানটাইম আচরণ এনফোর্স করে। ## প্রধান বৈশিষ্ট্য - **Enforce বা monitor মোড**: পলিসি অপারেশন ব্লক করতে পারে (`mode: enforce`) বা শুধু ফলাফল রিপোর্ করতে পারে (`mode: monitor`), প্রতি-পলিসি কনফিগারেশনসহ। - **CEL-চালিত রুল**: Kyverno-এর লাইব্রেরিসহ Common Expressions Language (CEL) ব্যবহার করে, লিটারেল ভ্যালু, এক্সপ্রেশন এবং পুনঃব্যবহারযোগ্য ভেরিয়েবল সমর্থন করে। - **Allow-list সহ ডিফল্ট deny**: `deny.values: ["*"]` সেট করে একটি আচরণকে deny-all-except-allowed-এ পরিবর্তন করা যায়। - **Kubernetes-নেটিভ আউটপুট**: ফলাফল পডের নেমস্পেসে OpenReports `Report` অবজেক্ট হিসেবে লেখা হয়, প্রতি-নোড স্ট্যাটাস কন্ডিশন এবং Prometheus কাউন্টারসহ। - **Selector স্কোপিং**: পলিসি লেবেল সিলেক্টরের মাধ্যমে পড ও নেমস্পেস টার্গেট করতে পারে, ক্লাস্টার-ওয়াইড। - **পর্যায়ক্রমিক পুনঃমূল্যায়ন**: `evaluationInterval` পলিসি এক্সপ্রেশন পুনরায় চালায় যাতে বাহ্যিকভাবে উৎসকৃত deny লিস্ট হালনাগাদ থাকে। ## দ্রুত শুরু Helm-এর মাধ্যমে ইনস্টল: ```bash helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace ``` উদাহরণ: একটি পডের জন্য নির্দিষ্ট IP ঠিকানা ব্লক করা: ```yaml apiVersion: runtime.nirmata.io/v1alpha1 kind: RuntimePolicy metadata: name: block-address-sample spec: mode: enforce podSelector: matchLabels: app: egress-client behaviors: - network: deny: values: - "8.8.8.8" ``` ## সীমাবদ্ধতা (Pre-1.0) - Egress শুধুমাত্র IPv4; IPv6 লিটারেল সমর্থিত নয়। - ফাইল ওপেন এবং exec এনফোর্সমেন্টের জন্য কার্নেলে BPF-LSM সক্রিয় থাকা প্রয়োজন (`lsm=` বুট প্যারামিটার)। - নেটওয়ার্ক, প্রোটোকল, open এবং exec পর্যবেক্ষণ eBPF কাউন্টার থেকে পোল করা হয়, তাই ফলাফল বিলম্বিত হতে পারে এবং ক্রমের বদলে কাউন্ট বহন করে। DNS প্রশ্ন রিয়েল-টাইমে স্ট্রিম হয়। - ব্যতিক্রম এখনো সমর্থিত নয়। ## ডকুমেন্টেশন এতে quickstart, concepts, installation, platform support (EKS, GKE, AKS, Bottlerocket), examples, shadow AI detection, troubleshooting এবং RuntimePolicy CRD, CEL expressions ও metrics-এর রেফারেন্স ডকুমেন্টেশন অন্তর্ভুক্ত। ## লাইসেন্স Apache License 2.0