2⃣مقاله دوم: ارتباط Podها و خطر حرکت جانبی در Kubernetes
در Kubernetes، اجزای مختلف یک برنامه باید با یکدیگر ارتباط داشته باشند. برای مثال، Web Pod درخواست کاربر را دریافت میکند، آن را به API Pod میفرستد و API نیز برای بازیابی اطلاعات به Database Pod متصل میشود.
این ارتباطات برای عملکرد برنامه ضروریاند؛ اما اگر کنترل نشوند، مسیر حمله ایجاد میکنند. فرض کنید Web Pod دارای آسیبپذیری باشد و مهاجم کنترل آن را به دست آورد. اگر محدودیت شبکهای مناسبی وجود نداشته باشد، مهاجم میتواند از همان Pod به پایگاهداده، پنل مدیریتی یا دیگر سرویسهای داخلی متصل شود. این جابهجایی از نقطه اولیه نفوذ به بخشهای دیگر، Lateral Movement نام دارد.
برای جلوگیری از این وضعیت، Kubernetes مفهومی به نام Network Policy دارد. این سیاست مشخص میکند کدام Pod اجازه دارد با چه مقصدی و روی چه Port یا Protocol ارتباط برقرار کند.
مثلاً میتوان تعیین کرد Web Pod فقط به API و API فقط به Database دسترسی داشته باشد. همچنین میتوان ارتباط مستقیم Web با Database را مسدود کرد.
مسئله این است که در یک Cluster واقعی صدها Pod، دهها Namespace و تعداد زیادی Policy وجود دارد. در چنین محیطی، حتی اگر همهچیز روی کاغذ امن به نظر برسد، ترکیب چند مجوز کوچک ممکن است یک مسیر خطرناک بسازد. بنابراین صرفاً داشتن Network Policy کافی نیست؛ باید اثر نهایی همه سیاستها را نیز مشاهده و ارزیابی کنیم.