تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

۸ نکته امنیتی Kubernetes که هر متخصص دواپس باید بداند!

کوبرنتیز بدون شک یکی از قدرتمندترین ابزارهای مدیریت کانتینرهاست، اما با وجود مزایای فراوانش، چالش‌های امنیتی خاصی دارد، زیرا کوبرنتیز به‌علت معماری پیچیده‌ و داینامیک بودن اجزای مختلفش، همیشه در معرض خطراتی قرار دارد که حتی به ذهن هم خطور نمی‌کند. آیا شما به عنوان یک مهندس دواپس، امنیت کوبرنتیز را جدی گرفته‌اید؟ طبق گزارش‌ها، بسیاری از تیم‌ها هنوز به درستی از تهدیدات امنیتی در کوبرنتیز آگاه نیستند و این غفلت می‌تواند هزینه‌های سنگینی داشته باشد. حملات به کانتینرها، نفوذ به شبکه‌ها، یا دزدی اطلاعات، سازمان‌ها را در معرض بحران‌های جدی قرار می‌دهد. با به‌کارگیری اقداماتی که در این مقاله از کوبرنتیز بلاگ لیارا، توضیح می‌دهیم، می‌توانید از خطرات احتمالی جلوگیری کرده و کوبرنتیز خود را با امنیت کامل مدیریت کنید.

آنچه در این مقاله می‌خوانید:

  • آشنایی با امنیت کوبرنتیز
  • راهکارهای افزایش امنیت کوبرنتیز
  • جمع‌بندی
  • سوالات متداول

آشنایی با امنیت کوبرنتیز

قبل از اینکه وارد نکات امنیتی شویم، بد نیست نگاهی به وضعیت فعلی امنیت کوبرنتیز بندازیم:

براساس نظرسنجی اخیر Red Hat بیش از ۶۰۰ مهندس و متخصص دواپس، معتقدند که یا امنیت کوبرنتیز به‌اندازه کافی مورد توجه قرار نگرفته است، به‌طوری‌که:

  • ۲۱٪ از شرکت‌ها گزارش داده‌اند که یک حادثه امنیتی باعث اخراج یکی از کارکنان شده است.
  • ۳۷٪ از افراد گفته‌اند که یک حادثه امنیتی در کوبرنتیز منجر به از دست دادن مشتریان یا کاهش درآمد آن‌ها شده است.
  • ۶۷٪ از تیم‌ها گزارش داده‌اند که نگرانی‌های امنیتی در مورد کوبرنتیز باعث شده تا سرعت استقرار پروژه‌هایشان کاهش یابد.
  • ۲۵٪ از سازمان‌ها گفته‌اند که به دلیل مشکلات امنیتی جریمه شدند.
  • ۹۰٪ از تیم‌ها حداقل یک بار در ۱۲ ماه گذشته با یک حادثه امنیتی در کوبرنتیز مواجه شدند.

با توجه به این آمارها، به وضوح می‌بینیم که امنیت کوبرنتیز مساله‌ای جدی است.

۸ نکته امنیتی Kubernetes که هر متخصص دواپس باید بداند!
برای آشنایی با کوبرنتیز (Kubernetes) و چگونگی کارکرد آن، مقاله زیر را می‌توانید مطالعه کنید.
کوبرنتیز(Kubernetes) چیست؟

راهکارهای افزایش امنیت کوبرنتیز

در فضایی که خطرات امنیتی هر روز پیچیده‌تر می‌شوند، آشنایی با اصول و راهکارهای امنیتی برای حفاظت از کلاسترهای کوبرنتیز، تنها یک انتخاب نیست، بلکه یک ضرورت جدی است. امنیت در فضای کوبرنتیز صرفا محدود به فایروال یا کنترل دسترسی نیست، حملاتی مانند اجرای کد مخرب داخل کانتینر، آلوده شده شدن پایپ‌لاین‌ها، به‌راحتی می‌توانند زیرساخت شما را فلج کنند.

واقعیت این است که، یک رخنه امنیتی در کوبرنتیز، ممکن است نه تنها اطلاعات را افشا کند، بلکه هزینه‌های مالی و حقوقی زیادی به همراه داشته باشد. در این مطلب، به سراغ راهکارهایی می‌رویم که کمک می‌کنند امنیت کلاستر کوبرنتیز شما، از حالت حداقلی به سطح قابل اعتماد و پایدار برسد، در ادامه روش‌های افزایش امنیت کوبرنتیز را به‌طور کامل بررسی می‌کنیم:

برای آشنایی با نحوه راه‌اندازی کلاستر K3s Kubernetes در اوبونتو 22.04، مقاله زیر را مطالعه کنید.
راه‌اندازی کلاستر K3s Kubernetes

۱. داده‌های خود را رمزگذاری کنید

رمزگذاری داده‌ها یکی از استاندارهای پایه برای حفاظت از داده‌ها در هر سیستمی از جمله امنیت کوبرنتیز است. بنابراین باید بررسی کنید، آیا ارائه دهنده خدمات ابری شما به‌صورت پیش‌فرض این قابلیت را ارائه می‌دهد یا خیر. کد مربوط به فعال‌سازی رمزگذاری در کوبرنتیز به صورت زیر است:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: encrypted-storage-class
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: encrypted-storage-class
provisioner: kubernetes.io/aws-ebs
parameters:
  encrypted: "true"

کد بالا، یک نمونه است و با توجه به پیکربندی سرویس شما تنظیمات امنیتی ممکن است متفاوت باشد.

خط "encrypted: true" در کد بالا تایید می‌کند که حجم‌های پایدار (Persistent Volumes) در کوبرنتیز، به‌صورت پیش‌فرض رمزنگاری شدند.

آموزش نصب و استفاده از داکر کامپوز (Docker Compose) در اوبونتو را از دست ندهید.
نصب داکر کامپوز

۲. کنترل دسترسی (Access Control) را به‌دقت تنظیم کنید

نکته بعدی در امنیت کوبرنتیز، این است که چه کسی چه کارهایی را می‌تواند انجام دهد. این موضوع از روش‌های متنوعی قابل مدیریت است.

RBAC (کنترل دسترسی مبتنی بر نقش)، سیستم داخلی کوبرنتیز برای تعیین مجوزهای کاربران است. این سیستم اجازه می‌دهد مشخص شود که یک کاربر می‌تواند اقداماتی مانند تغییر پیکربندی‌ها یا دسترسی به داده‌ها را انجام دهد یا نه. در این ساختار، ابتدا باید کاربر احراز هویت شود و سپس مجوزهای لازم برای انجام تغییرات به او داده می‌شود، بنابراین این فرآیند دو لایه امنیتی دارد. برای مدیریت نقش‌ها در سطح کلاستر، از ClusterRoles استفاده کنید و حتماً قانون حداقل دسترسی را رعایت کنید، به این معنا که هر کاربر تنها دسترسی‌هایی را داشته باشد که برای انجام وظایف خود نیاز دارد.

IAM (مدیریت هویت و دسترسی)، برای سازمان‌های بزرگ یا کسانی که در محیط‌های ابری فعالیت می‌کنند، گزینه‌ای مناسب است. این روش به مدیران اجازه می‌دهد به‌طور دقیق مشخص کنند که چه کسی و چه بخش‌هایی از زیرساخت ابری را می‌تواند دسترسی داشته باشد. این روش به ویژه برای سازمان‌هایی که در سیستم‌های ابری مشغول به کار هستند، بسیار مفید است.

ابزارهای متن‌باز مانند Auth0 هم این امکان را به توسعه‌دهندگان می‌دهند که اپلیکیشن‌ها را به هر زبان و استک برنامه‌نویسی متصل کنند و هویت‌های خارجی را به‌طور آسان مدیریت کنند.

OpenID Connect (OIDC) یکی از مطمئن‌ترین روش‌ها برای مدیریت دسترسی به کلاستر است. این سیستم از ارائه‌دهندگانی مانند Google، Facebook و GitHub استفاده می‌کند و به کاربران این امکان را می‌دهد که از شناسه‌های موجود خود استفاده کنند و توکن‌های هویتی دریافت کنند که به‌صورت رمزنگاری‌شده توسط گواهی X509 تایید می‌شوند.

در نهایت، رعایت اصول امنیتی پایه‌ای مانند حذف کاربران غیرفعال یا ترک کرده و اطمینان از تنظیم صحیح سیاست‌های امنیتی و شبکه زیرساخت، همیشه باید در اولویت باشد.

برای آموزش نصب و راه‌اندازی Kubernetes روی سرور فیزیکی (بدون مجازی‌سازی)، مقاله زیر را می‌توانید مطالعه کنید.
نحوه نصب و راه‌اندازی Kubernetes

۳. مانیتورینگ دقیق Endpointsها را فعال کنید

گاهی اوقات Endpointهای عمومی به اشتباه در دسترسی عموم قرار می‌گیرند. این موضوع می‌تواند به سادگی با اضافه کردن یک لودبالانسر خارجی به پیکربندی یک کوبرنتیز رخ دهد و به‌طور ناخواسته اجازه دسترسی به کاربران غیرمجاز داده شود.

به‌عنوان مثال، شرکت امنیتی Cyble در سال گذشته بیش از ۹۰۰,۰۰۰ نمونه کوبرنتیز را پیدا کرد که به‌طور تصادفی در اینترنت افشا شده بودند، و این نشان‌دهنده خطرات امنیتی جدی در مقیاس جهانی است.

در اوایل سال ۲۰۲۲، محققان امنیتی از Apiiro یک آسیب‌پذیری در پلتفرم تحویل مداوم ArgoCD پیدا کردند که به مهاجمان اجازه می‌داد اطلاعات حساس مانند پسوردها و کلیدهای API را از کلاسترها استخراج کنند. این نوع نقص‌ها پیش‌تر در شرکت‌های بزرگی مانند Weight Watchers، Honda، Tesla و Universal نیز اتفاق افتاده است.

برای جلوگیری از این اتفاقات، باید دسترسی به Endpointsها را فقط به توسعه‌دهندگان مورد اعتماد محدود کرد. از IAM یا RBAC برای کنترل دسترسی‌ها استفاده کنید، هر اتصال خارجی جدید را دستی تائید کنید، نقشه شبکه را ایجاد کنید و آدرس‌های IP مهم را در لیست سفید قرار دهید.

آموزش گام به گام راه‌ اندازی رجیستری خصوصی داکر در اوبونتو را در مقاله زیر بخوانید.
راه‌ اندازی رجیستری خصوصی داکر
امنیت کوبرنتیز

۴. خطاهای IaC را از قبل شناسایی کنید

اگر از سرویس‌های Infrastructure as Code (IaC) مثل HashiCorp Terraform برای مدیریت زیرساخت Kubernetes استفاده کنید، می‌توانید استقرارهای خودکار ایجاد کنید و در هر زمانی که لازم بود، آن‌ها را دوباره راه‌اندازی کنید. اما مسئله اینجاست که با IaC حتی اشتباهات کوچک انسانی می‌توانند تاثیرات بزرگی بگذارند. مثلا یک خطا می‌تواند خیلی سریع به production منتقل شود و روی هزاران سیستم اجرا شود، که این خود می‌تواند باعث مشکلات امنیتی و وابستگی‌های غیرضروری شود.

برای کاهش این خطرات امنیتی، اول از همه، توسعه‌دهندگان باید مسئولیت بازرسی دقیق کدهای خود را بپذیرند. اگر سازمان شما فرایند مرور کد همتا (peer review) نداشته باشد، باید این فرایند را هر چه زودتر پیاده‌سازی کنید. علاوه‌بر این، ابزارهای زیادی برای اسکن کد وجود دارند، از جمله ابزارهای اتوماتیک که کدهای ناامن را شناسایی کرده و از انتقال آن‌ها به محیط production جلوگیری می‌کنند. در آخر، دسترسی به مخزن کد باید محدود به افرادی باشد که واقعا نیاز به دسترسی دارند. با اینکار می‌توانید جلوی مشکلات امنیتی ناشی از کد را بگیرید.

نحوه بکاپ گیری کامل از PostgreSQL در اوبونتو 24.04 را در مقاله زیر بخوانید.
نحوه بکاپ گیری از PostgreSQL

۵. پیکربندی کانتینرها را از همان اول جدی بگیرید

زمانی که در حال ساخت کانتینر هستید، بسیار مهم است که تمام کامپوننت‌ها را به‌طور درست بسته‌بندی کنید تا اپلیکیشن به درستی اجرا شود. باید CI/CD را مانند یک کاربر خارجی در نظر بگیرید، نه فقط ابزاری که با کلاستر کوبرنتیزتان کار می‌کند! این یعنی حداقل دسترسی‌هایی که CI/CD نیاز دارد، شامل Container Registry برای ذخیره تصاویر کانتینرها و دسترسی به namespace‌های مختلف کلاستر می‌شود.

مهم‌تر از همه، باید این امکان وجود داشته باشد که بتوانید کلیدهای دسترسی را به‌راحتی حذف کنید؛ زمانی که دچار مشکل یا نفوذ شد. راه‌حل این مشکل، دقت در نوشتن کد می‌باشد. باید با دقت تمام، کد را بنویسید و هیچ بخشی را نادیده نگیرید.

۶. نودها را ایزوله و ایمن کنید؛ قلب کلاستر را دست‌کم نگیرید

یکی از اصول بنیادین امنیت IT که برای امنیت کوبرنتیز هم صدق می‌کند، محدود کردن سطح قابل حمله است. به عبارت دیگر، یعنی باید نودهای K8s خودتان را در یک شبکه خصوصی، ایزوله کنید تا از افشای غیرضروری یه اینترنت عمومی جلوگیری شود.

یکی دیگر از اقدامات کلیدی، محدود کردن دسترسی نودها به سرور (Secure Shell) SSH است. بعضی از ارائه ‌دهندگان سرویس ابری، این دسترسی را به‌صورت پیش‌فرض ارائه می‌دهند. دراین صورت باید بدانید، چگونه دسترسی SSH را روی نودها غیرفعال کنید.

هر آنچه باید درباره سرور مجازی، مزایا و کاربردهایش بدانید را می‌توانید در مقاله زیر مطالعه کنید.
سرور مجازی یا VPS چیست؟
امنیت کوبرنتیز

۷. ارتباطات شبکه‌ای را زیر ذره‌بین بگذارید

نظارت بر فعالیت‌های کلاسترهای کوبرنتیز بعد از راه‌اندازی آن‌ها، یکی دیگر از اصول اساسی امنیتی کوبرنتیز است. شما باید ترافیک داخلی و خارجی را برای هر فعالیت غیرعادی اسکن کنید. این فعالیت‌ها، می‌توانند شامل تعداد درخواست‌های API باشند که توسط ارائه‌دهنده اینترنت یا تهدیدات خارجی شبکه مسدود می‌شوند.

این نوع تهدیدات می‌توانند منجر به حملاتی شوند که در صورت موفقیت، دسترسی غیرمجاز به کلاستر را امکان‌پذیر می‌کنند. زمانی‌که هکرها به کلاستر شما دسترسی پیدا کنند، ممکن است برنامه‌های ماینینگ ارز دیجیتال را در کانتینرها نصب کنند، و زمانی متوجه می‌شوید که صورت‌حساب ماهانه‌تان، به طرز شدیدی بالا رفته باشد.

خود کوبرنتیز ابزار داخلی برای اسکن شبکه شما ندارد، بنابراین باید به ابزارهای امنیت شبکه استاندارد تکیه کنید که قادر به شناسایی اتفاقات غیرعادی هستند. یا از ابزارهای تخصصی مانند Falco استفاده کنید که خودش را به عنوان موتور تشخیص تهدیدات کوبرنتیز معرفی می‌کند. در تصویر زیر چند ابزار امنیتی متن‌باز برای کوبرنتیز را مشاهده می‌کنید.

ابزارهای امنیتی کوبرنتیز

همچنین می‌توانید از ابزاری مانند Sysdig استفاده کنید که با آن می‌توانید زیرساخت و برنامه‌های Kubernetes خود را به طور لحظه‌ای نظارت کنید. Sysdig به‌طور کامل با اکوسیستم Kubernetes سازگار است، و برای شناسایی رفتارهای مشکوک و اعمال تغییرات غیرمجاز مفید است و برای تحلیل و گزارش‌دهی دقیق در زمینه امنیت کاربرد دارد.

۸. لاگ‌های احراز هویت کوبرنتیز را بررسی کنید

Kubernetes تنظیمات خودکارسازی زیادی دارد؛ بنابراین خیلی مهم است که هر فعالیت دستی مانند اتصال به کانتینرها را با دقت زیر نظر بگیرید. این اتصالات باید خیلی محدود باشند، زمانی هم که چنین اعمالی انجام می‌شود باید داخل Audit log در کنترل‌پنل K8s ثبت شود. اما ممکن است روزانه میلیون‌ها لاگ تولید شود، پس باید فقط به فعالیت‌هایی مانند kubectl exec یا kubectl attach توجه کنید، زیرا اینها بیشتر از بقیه مهم هستند.

با سرور اوبونتو لیارا، سرور خود را با هزینه به‌صرفه و بالاترین کارایی مدیریت کنید.
✅ استقرار سریع ✅ منابع بهینه ✅ امنیت پیشرفته
خرید سرور مجازی اوبونتو ساعتی لیارا

جمع‌بندی

در نهایت باید بگوییم، امنیت Kubernetes یک پروسه پیچیده و نیازمند دقت بالا است. از اینکه به Container Images و Persistent Volumes توجه می‌کنید تا تعیین دسترسی‌ها با استفاده از RBAC و IAM، همگی مهم‌اند. هیچ وقت فراموش نکنید که مدیریت دسترسی و نظارت دقیق روی فعالیت‌ها کلید اصلی امنیت است.

نهایتاً، استفاده از ابزارهایی مثل Terraform و CI/CD با دقت بالا، در کنار مستندسازی و نظارت دقیق روی کد و کانتینرها می‌تواند امنیت را در کلاستر بالا ببرد. در دنیای DevOps و Kubernetes، دقت و نظارت از همه چیز مهم‌تر است. بنابراین به کد، دسترسی‌ها و ترافیک نگاه دقیق‌تری داشته باشید.

سوالات متداول

کوبرنتیز چیست؟

کوبرنتیز توسط گوگل معرفی شده و یک پلتفرم متن‌باز و پرتابل است که برای استقرار، مدیریت و مقیاس‌بندی آسان برنامه‌های کانتینری طراحی شده است.

چه ابزارهایی برای مانیتورینگ Kubernetes وجود دارد؟

برای مانیتورینگ Kubernetes ابزارهایی مانند Prometheus و Grafana برای نظارت بر متریک‌ها، Kubernetes Dashboard برای مشاهده وضعیت کلاستر، و EFK Stack برای مدیریت لاگ‌ها وجود دارند. همچنین ابزارهایی مانند Sysdig و Datadog نیز برای تجزیه و تحلیل عملکرد سیستم استفاده می‌شوند

آیا باید از SSH برای دسترسی به نودهای Kubernetes استفاده کنم؟

استفاده از SSH برای دسترسی به نودهای Kubernetes توصیه نمی‌شود. بهتر است دسترسی‌ها محدود و امن شوند، و از روش‌های امن‌تری مانند استفاده از API یا ابزارهای مدیریت دسترسی مانند RBAC استفاده شود.

چطور می‌تونم فعالیت‌های مشکوک در کلاستر Kubernetes رو شناسایی کنم؟

برای شناسایی فعالیت‌های مشکوک در کلاستر Kubernetes، می‌توانید از ابزارهایی مانند Falco برای شناسایی تهدیدات استفاده کنید

کاربردهای کوبرنتیز چیست؟

  • مقیاس‌بندی خودکار برنامه‌ها
  • مدیریت پایداری و بازیابی از خرابی‌ها
  • استقرار سریع برنامه‌ها
  • مدیریت میکروسرویس‌ها
  • ایزوله‌سازی منابع در کلاستر

به اشتراک بگذارید