تغییرات اخیر

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

نحوه استفاده از اسکن آسیب‌ پذیری در Kubescape


۵ اردیبهشت ۱۴۰۴

Kubescape یک ابزار متن باز است که برای تحلیل و ارزیابی امنیتی Kubernetes طراحی شده است. این ابزار برای شناسایی آسیب‌پذیری‌ها و پیکربندی‌های نادرست در کلاستر Kubernetes، تحلیل ریسک‌ها، اسکن تصاویر کانتینری، بررسی مجوزها و نقش‌های RBAC، و مشاهده گزارش‌های امنیتی در داشبورد ابری Armosec ساخته شده است.

این ابزار به صورت رایگان در نسخه‌های Community Edition ارائه می‌شود و از محیط‌های مختلفی مانند رابط خط فرمان (CLI)، پورتال ابری، و ابزارهای دیگر برای تحلیل امنیتی استفاده می‌کند. علاوه بر این، Kubescape از چارچوب‌های امنیتی مختلف مانند MITRE و NSA پشتیبانی می‌کند و می‌تواند به صورت یکپارچه با سیستم‌های CI/CD برای اسکن آسیب‌پذیری‌ها در هر مرحله از توسعه استفاده شود.

اگر به دنبال افزایش امنیت کلاستر Kubernetes خود هستید و می‌خواهید روندهای تغییرات امنیتی را تحلیل کنید، Kubescape گزینه‌ای مناسب خواهد بود و این آموزش از لیارا هم به این موضوع پرداخته است.

همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری
اسکن آسیب‌ پذیری در Kinescope

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

  • Kubescape چیست؟
  • ویژگی‌ های کلیدی Kubescape
  • روش‌ های استفاده از Kubescape
  • آیا Kubescape رایگان است؟
  • پیش‌ نیازها
  • آموزش جامع استفاده از Kubescape CLI
  • نمونه دستورات کاربردی Kubescape CLI:
  • آشنایی کامل با داشبورد ابری Armosec
  • تحلیل امتیاز ریسک و روند Kubescape
  • درک امتیاز ریسک در Kubescape
  • راهکارهای پیشنهادی برای رفع مشکلات امنیتی
  • فعال‌ سازی اسکن‌ های کلاستر از رابط کاربری وب
  • پیکر برندی اسکن های خودکار Kubescape برای DOKS
  • ارائه اجزای کلاستر Armo به DOKS
  • بررسی وضعیت اجرای کامل مولفه‌ های Armo در خوشه
  • تنظیم مقادیر Helm برای چارت Armo Cluster Components
  • یکپارچه‌سازی Kubescape در خط لوله CI/CD برای بررسی آسیب‌ پذیری
  • تغییرات امنیتی اعمال‌شده در فایل پیکربندی Kubernetes
  • بررسی نهایی در Kubernetes برای اطمینان از رفع مشکلات امنیتی
  • مدیریت استثناها (Exceptions) در Kubescape
  • استفاده از Kubescape در محیط توسعه (IDE)
  • اجرای خودکار Kubescape در CI/CD
  • سوالات متداول
  • جمع بندی

Kubescape چیست؟

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

ویژگی‌ های کلیدی Kubescape

  • شناسایی خطاهای پیکربندی در Kubernetes و ارائه تعدادی راه‌کار اصلاحی از طریق پورتال ابری Armosec.
  • تحلیل ریسک و مشاهده روند تغییر آن ها در گذر زمان از طریق پورتال ابری.
  • پشتیبانی از چندین چهار چوب امنیتی مانند MITRE , NSA , ArmoBest و Best Practices مخصوص تیم های دواپس (DevOps).
  • مدیریت استثنا ها برای تعریف میزان ریسک قابل قبول توسط مدیران Kubernetes.
  • ادغام با ابزارهای نظیر Prometheus , Github Workflows , Jenkins و سایر ابزارهای دواپس (DevOps).
  • اسکن تصاویر کانتینری برای شناخت آسیب پذیری ها با قابلتی فیلتر و اولویت بندی برای اصطلاح سریع تر.
  • ساده سازی ساختار پیچیده RBAC از طریق نمودار های گرافیکی قابل فهم که نقش ها و دسترسی ها را به صورت بصری نمایش می‌دهد.

روش‌ های استفاده از Kubescape

  • از طریق رابط خط فرمان (CLI): این روش برای استفاده در اسکریپت‌ها و اتوماسیون‌ها، مانند CI/CD، مناسب است. همچنین می‌توان نتایج را برای تحلیل به پورتال ابری Armosec ارسال کرد.
  • از طریق cronjob در داخل کلاستر Kubernetes: در این حالت، Kubescape مداوم تغییرات کلاستر را زیر نظر گرفته و نتایج را به پورتال ارسال می‌کند. این ویژگی تنها در صورت نصب Armo Cluster Components در کلاستر DOKS فعال خواهد بود.
  • از طریق رابط کاربری پورتال ابری Armosec: با استفاده از این روش می‌توان اسکن پیکربندی‌ها، اسکن تصاویر، بررسی قوانین RBAC، سفارشی‌سازی چارچوب‌ها را انجام داد. این قابلیت نیز نیاز به نصب Armo Cluster Components دارد.
  • از طریق محیط توسعه Visual Studio Code: به کمک این افزونه می‌توان در مراحل ابتدایی توسعه، مشکلات احتمالی را شناسایی کرد.

آیا Kubescape رایگان است؟

بله، ابزار و نسخه‌ی جامع (Community Edition) کاملاً رایگان است. البته بسیاری از ویژگی‌های جدید و سرویس‌های سمت سرور در پورتال ابری ممکن است رایگان نباشند. Kubescape محدودیتی در تعداد نودهای هر کلاستر که می‌توان اسکن کرد دارد و این محدودیت حداکثر 10 نود است. همچنین، داده‌های مربوط به گزارش‌های اسکن تنها به‌مدت یک ماه در پورتال ابری Armo نگهداری می‌شود.

نصب و راه‌اندازی Kubernetes روی سرور فیزیکی (بدون مجازی‌سازی)
نصب و راه‌اندازی Kubernetes

پیش‌نیازها

برای اجرای کامل مراحل این راهنما، به موارد زیر نیاز خواهید داشت:

  • یک کلاستر DOKS فعال با نسخه Kubernetes برابر یا بالاتر از 1.21 که به آن دسترسی داشته باشید.
  • یک رجیستری Docker.
  • ابزار خط فرمان kubectl برای تعامل با Kubernetes.
  • ابزار Helm برای نصب Kubescape در کلاستر Kubernetes.
  • ابزار خط فرمان Kubescape برای اسکن آسیب‌پذیری‌ها توسط Kubescape.
  • یک حساب رایگان در پورتال ابری Armosec برای ارسال دوره‌ای نتایج اسکن کلاستر Kubernetes و مشاهده آن‌ها بر روی داشبورد.
  • یک فضای کاری در Slack که در مالکیت شما باشد و یک اپلیکیشن اختصاصی در Slack برای دریافت اعلان‌های مربوط به آسیب‌پذیری‌های شناسایی‌شده توسط Kubescape.

آموزش جامع استفاده از Kubescape CLI

با استفاده از رابط خط فرمان Kubescape می‌توان به‌صورت دستی آسیب‌پذیری‌ها را اسکن کرد. این CLI طوری طراحی شده که در اسکریپت‌ها و سیستم‌های اتوماسیون مانند CI/CD با ابزارهایی مثل Tekton , Jenkins یا GitHub Workflows قابل استفاده باشد.

Kubescape قادر است کل کلاستر Kubernetes را به‌صورت کامل اسکن کند (از جمله بارهای کاری، کانتینرها). البته در صورت نیاز، می‌توان اسکن را محدود به یک Namespace خاص کرد. از ویژگی‌های دیگر آن می‌توان به اسکن میزبان‌ها (نودهای کاری)، اسکن مخازن محلی یا راه‌دور (به عنوان مثال GitHub) و شناسایی خطاهای پیکربندی در فایل‌های YAML یا چارت‌های Helm اشاره کرد. همچنین امکان استفاده از چارچوب‌های مختلف از طریق دستور framework وجود دارد، مانند ArmoBest , NSA , MITRE.

در اولین اجرای Kubescape CLI، پایگاه داده آسیب‌پذیری‌های شناخته‌شده روی سیستم محلی دانلود یا به‌روزرسانی می‌شود. سپس فرآیند اسکن آغاز شده و نتایج به‌صورت خلاصه در خروجی استاندارد نمایش داده می‌شود. همچنین امکان خروجی‌گیری در فرمت‌های مختلف مانند JSON , HTML , SARIF وجود دارد. می‌توان با استفاده از سویچ --submit نتایج اسکن را به پورتال ابری Armosec ارسال کرد تا در آینده نیز قابل مشاهده و تحلیل باشد.

نکته: ارسال نتایج به پورتال Armosec الزامی نیست. اما استفاده از آن مزیت بزرگی دارد، زیرا داشبورد دارد که تمام گزارش‌های اسکن و امتیاز کلی ریسک را نمایش می‌دهد و برای تحلیل و اصلاح مشکلات مفید خواهد بود.

نمونه دستورات کاربردی Kubescape CLI:

  • اسکن کامل کلاستر Kubernetes و نمایش گزارش خلاصه در کنسول: kubescape scan
  • اسکن فقط یک Namespace خاص: kubescape scan --include-namespaces microservices
  • حذف برخی Namespace ها از فرآیند اسکن: kubescape scan --exclude-namespaces kube-system,kube-public
  • اسکن یک Namespace مشخص و ارسال نتایج به پورتال: Armosec: kubescape scan --include-namespaces default --submit
  • اسکن کلاستر با استفاده از چارچوب خاص (مثلاً NSA): kubescape scan framework nsa --exclude-namespaces kube-system,kube-public

Kubescape این امکان را نیز دارد که میزبان‌های کلاستر (نودهای کاری) را برای یافتن آسیب‌پذیری‌های سیستم‌عامل اسکن کند. برای فعال‌سازی این ویژگی باید از سویچ --enable-host-scan استفاده کنید. در این حالت، Kubescape سنسورهایی را از طریق DaemonSet در هر نود کلاستر مستقر می‌کند که پس از پایان اسکن، به‌همراه منابع مربوطه حذف خواهند شد.

برای مشاهده راهنمای کامل دستورات موجود در CLI از دستور زیر استفاده کنید.

kubescape --help

خروجی این دستور به شکل زیر خواهد بود.

Kubescape is a tool for testing Kubernetes security posture. Docs: https://hub.armo.cloud/docs

Usage:
  kubescape [command]

Available Commands:
  completion  Generate autocompletion script
  config      Handle cached configurations
  delete      Delete configurations in Kubescape SaaS version
  download    Download controls-inputs,exceptions,control,framework,artifacts
  help        Help about any command
  list        List frameworks/controls will list the supported frameworks and controls
  scan        Scan the current running cluster or yaml files
  submit      Submit an object to the Kubescape SaaS version
  version     Get current version

برای هر دستور در Kubescape، یک راهنمای اختصاصی نیز وجود دارد که با دستور kubescape [command] --help قابل دسترسی است.

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

آشنایی کامل با داشبورد ابری Armosec

Armosec یک پورتال ابری کاربردی ارائه می‌دهد که با استفاده از آن می‌توانید نتایج اسکن ابزار Kubescape را آپلود کرده و تحلیل‌های امنیتی دقیق‌تری انجام دهید. این قابلیت زمانی مفید است که بخواهید گزارش‌های اسکن را به‌صورت تصویری بررسی کنید، مشکلات را برطرف کرده و دوباره اسکن بگیرید تا ببینید تغییرات شما چه تأثیری داشته‌اند. وجود نمودارها، امتیاز ریسک، و نمایش تصویری گزارش‌ها کمک می‌کند تا در طول زمان، امنیت کلاستر خود را بهتر بررسی کنید.

در این پورتال، می‌توانید یک حساب رایگان ایجاد کنید که به شما اجازه می‌دهد تا اسکن‌ حداکثر 10 نود را مدیریت کرده و گزارش‌های آن‌ها را تا یک ماه ذخیره کنید. این امکانات برای بیشتر تیم‌ها، به‌خصوص در محیط‌های تست و توسعه، کاملاً کافی است.

بعد از ایجاد حساب، یک شناسه کاربری (User ID) اختصاصی به شما داده می‌شود. این شناسه برای بارگذاری نتایج اسکن به کار می‌رود و مخصوصا در زمانی اهمیت دارد که چندین پروژه یا محیط مختلف را در اختیار دارید. به عنوان مثال در فرایند‌های خودکار CI/CD، این شناسه کمک می‌کند تا اسکن‌ها به درستی به حساب شما نسبت داده شوند.

تحلیل امتیاز ریسک و روند Kubescape

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

درک امتیاز ریسک در Kubescape

در هر اسکن، Kubescape منابع شما را از نظر ریسک‌های امنیتی احتمالی بررسی می‌کند. این بررسی‌ها بر اساس مجموعه‌ای از کنترل‌ها (Controls) صورت می‌گیرند. کنترل‌ها در واقع تست‌هایی هستند که هر کدام جنبه‌ای از منابع یا کلاستر شما را مورد بررسی قرار می‌دهند. چارچوب‌ها (Frameworks) نیز مجموعه‌ای از این کنترل‌ها هستند که بسته به انتخاب شما، مجموعه‌ای از تست‌ها را اجرا می‌کنند. به‌عنوان مثال، چارچوب NSA یا MITRE هر یک از مجموعه تست‌های خاصی استفاده می‌کنند.

امتیاز نهایی ریسک به‌صورت عددی بین 0 تا 100 درصد محاسبه می‌شود. هرچه این عدد کمتر باشد، وضعیت امنیتی بهتر است و برعکس. بنابراین، برای داشتن امنیت بیشتر، باید به‌دنبال امتیازهایی نزدیک به صفر باشید. در عمل، امتیازی کمتر یا برابر با 30 درصد می‌تواند نقطه شروع مناسبی برای امنیت قابل قبول تلقی شود.

راهکارهای پیشنهادی برای رفع مشکلات امنیتی

یکی دیگر از قابلیت‌های مفید پورتال ابری Armosec، ارائه‌ی پیشنهادهایی برای رفع هر مشکل امنیتی شناسایی‌شده توسط Kubescape است. این ویژگی بسیار کاربردی است به این دلیل که فرآیند اصلاح و رفع مشکلات را ساده کرده و هر چرخه بررسی و اسکن را کامل می‌کند.

فعال‌ سازی اسکن‌ های کلاستر از رابط کاربری وب

پورتال ابری Armo این امکان را فراهم می‌کند که بتوانید اسکن‌های کلاستر را از طریق رابط کاربری وب نیز فعال کنید، به شرطی که چارت Helm اجزای ابری Armo در کلاستر DOKS شما نصب شده باشد. هم اسکن پیکربندی و هم اسکن تصویر را می‌توان با یک کلیک در پورتال فعال کرد. برای اینکه این ویژگی کار کند، باید منتظر بمانید تا اجزای ابری Armo اسکن کلاستر شما را در پس‌زمینه انجام دهند و نتایج را بارگذاری کنند.

برای فعال‌سازی اسکن پیکربندی، کافی است به صفحه اسکن پیکربندی بروید و روی دکمه Scan کلیک کنید. تصویر زیر نحوه انجام این کار را نشان می‌دهد: همچنین می‌توانید برنامه زمانبندی اسکن‌های خودکار را تنظیم یا تغییر دهید، در صورت تمایل، با کلیک بر روی دکمه Schedule در پنجره پاپ‌آپی که پس از کلیک بر روی دکمه Scan باز می‌شود. در همان پنجره، می‌توانید چارچوب‌های کنترلی مورد نظر برای اسکن را انتخاب کنید.

پیکر برندی اسکن های خودکار Kubescape برای DOKS

Kubescape می‌تواند به‌صورت خودکار تمام کلاسترهای Kubernetes شما را در بازه‌های زمانی مشخص یا هر بار که یک تصویر جدید از برنامه مستقر می‌شود، اسکن کند. برای فعال‌سازی این قابلیت، لازم است اجزای Armo را از طریق Helm در کلاستر Kubernetes نصب کنید. همچنین داشتن یک حساب کاربری در پورتال ابری Armosec بسیار ضروری است تا بتوانید نتایج اسکن را بارگذاری و بررسی کنید.

نصب و پیکربندی Ingress Controller با استفاده از Ambassador
نصب و پیکربندی Ingress Controller

ارائه اجزای کلاستر Armo به DOKS

مراحل مستقر کردن Kubescape در کلاستر Kubernetes با استفاده از Helm به صورت زیر است.

افزودن مخزن Helm و فهرست چارت‌های موجود.

helm repo add armo https://armosec.github.io/armo-helm/
helm repo update armo
helm search repo armo

خروجی مشابه زیر خواهد بود.

NAME                            CHART VERSION   APP VERSION     DESCRIPTION                
armo/armo-cluster-components    1.7.15          v1.7.15         ARMO Vulnerability Scanning

توجه: چارت مورد نظر armo/armo-cluster-components است که اجزای Armo را در کلاستر Kubernetes شما نصب خواهد کرد. برای اطلاعات بیشتر، به صفحه مخزن armo-helm مراجعه کنید.

دریافت شناسه کاربری حساب Armo خود با استفاده از Kubescape CLI به صورت زیر است.

kubescape config view

خروجی که به شما نشان می‌دهد به صورت زیر خواهد بود.

{
"accountID": "c952b81f-77d5-4afb-80cc-59b59ec2sdfr"
}

توجه: اگر قبلاً از Kubescape CLI برای ارسال نتایج اسکن به پورتال ابری Armosec استفاده نکرده‌اید، دستور بالا کار نخواهد کرد. در این صورت باید به پورتال وارد شوید و شناسه کاربری خود را از آنجا دریافت کنید.

نصب اجزای کلاستر Armo Kubescape با استفاده از Helm – یک فضای نام اختصاصی به نام armo-system نیز ایجاد خواهد شد (مطمئن شوید که مقادیر <> را به‌درستی جایگزین کرده‌اید).

ARMO_KUBESCAPE_CHART_VERSION="1.7.15"
helm install armo armo/armo-cluster-components \
--version "$ARMO_KUBESCAPE_CHART_VERSION" \
--namespace armo-system \
--create-namespace \
--set clusterName="$(kubectl config current-context)" \
--set accountGuid=<YOUR_ARMO_ACCOUNT_ID>

در این قسمت باید بررسی کنید که آیا تمام اجزای کلاستر Armo به درستی نصب و در حال اجرا هستند یا خیر. برای این منظور از دستور زیر استفاده کنید.

kubectl get deployments -n armo-system

خروجی زیر را به شما نمایش خواهد داد.

NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
armo-collector              1/1     1            1           5d6h
armo-kubescape              1/1     1            1           5d6h
armo-notification-service   1/1     1            1           5d6h
armo-vuln-scan              1/1     1            1           5d6h
armo-web-socket             1/1     1            1           5d6h

تمامی اجزای کلاستر Armo باید در حال اجرا و آماده باشند.

Strapi چیست؟ چرا باید از آن استفاده کنید؟ [یک راهنمای جامع]
Strapi

بررسی وضعیت اجرای کامل مولفه‌ های Armo در خوشه

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

  • نتایج اسکن پیکربندی‌ها (Configuration scanning results)
  • نتایج اسکن تصاویر (Image scanning results)
  • نتایج تحلیل RBAC (RBAC visualizer results)

تنظیم مقادیر Helm برای چارت Armo Cluster Components

با ویرایش فایل مقادیر (values) مربوط به Helm، می‌توانید رفتار چارت مولفه‌های خوشه Armo را شخصی‌سازی کنید.

برخی از تنظیماتی که قابل تغییر هستند عبارت‌اند از:

  • فاصله زمانی اسکن‌ها با استفاده از مقادیر armoScanScheduler و armoKubescapeScanScheduler
  • فعال‌سازی اسکن خودکار برای تصاویر جدید از طریق triggerNewImageScan

برای اعمال این تغییرات، باید نسخه فعلی چارت Helm را به‌روزرسانی کنید. (مقادیر داخل <> را با اطلاعات خود جایگزین کنید).

ARMO_KUBESCAPE_CHART_VERSION="1.7.15"
helm upgrade armo armo/armo-cluster-components \
  --version "$ARMO_KUBESCAPE_CHART_VERSION" \
  --namespace armo-system \
  --set clusterName="$(kubectl config current-context)" \
  --set accountGuid=<YOUR_ARMO_ACCOUNT_ID> \
  -f <YOUR_CUSTOM_HELM_VALUES_FILE_HERE>
همین حالا، فایل‌های خودتون رو در فضایی سریع، پایدار و مقیاس‌پذیر ذخیره کنید.
✅ سازگار با Amazon S3 ✅ عملکرد بالا ✅۲.۵ گیگ فضای رایگان
خرید فضای ذخیره‌سازی ابری

یکپارچه‌سازی Kubescape در خط لوله CI/CD برای بررسی آسیب‌ پذیری

توسعه نرم‌افزار از پایه آغاز می‌شود و بهتر است برای هر مرحله، یک محیط جداگانه در نظر گرفته شود. در مراحل ابتدایی که کدها مرتب تغییر می‌کنند، محیط توسعه (development) استفاده می‌شود. سپس کد به محیط QA منتقل می‌شود تا آزمایش‌های دستی یا خودکار روی آن انجام گیرد. اگر همه چیز تأیید شود، برنامه وارد محیط‌های staging و production می‌شود.

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

CI/CD چیست؟
CI/CD

تغییرات امنیتی اعمال‌شده در فایل پیکربندی Kubernetes

موارد زیر برای افزایش امنیت کانتینرها به فایل deployment.yaml اضافه شدند.

  • readOnlyRootFilesystem: اجرای تصویر کانتینر در حالت فقط‌خواندنی. این گزینه باعث می‌شود که نتوانید از طریق دستور kubectl exec فایل‌های درون کانتینر را تغییر بدهید.
  • runAsNonRoot: کانتینر به‌عنوان یک کاربر غیر روت اجرا می‌شود. این کاربر از طریق دستور USER در Dockerfile پروژه game-2048 تعریف شده است.
  • allowPrivilegeEscalation: با تنظیم این گزینه روی false، هیچ فرایندی درون کانتینر نمی‌تواند سطح دسترسی بیشتری نسبت به فرایند والد خود به‌دست آورد.
  • capabilities.drop: برای افزایش امنیت، دسترسی‌های غیرضروری از کانتینر حذف می‌شوند. در عمل، ابتدا تمام دسترسی‌ها حذف می‌گردند و سپس تنها موارد مورد نیاز به‌صورت مرحله‌ای اضافه می‌شوند.

بررسی نهایی در Kubernetes برای اطمینان از رفع مشکلات امنیتی

برای اینکه بتوانید مطمئن شوید که تنظیمات امنیتی به درستی اعمال شده است از روش‌های زیر استفاده کنید.

بررسی فقط‌ خواندنی بودن فایل‌ سیستم کانتینر

برای این کار دستور زیر را وارد نمایید.

kubectl exec -it deployment/game-2048 -n game-2048 -- /bin/bash -c "echo > /public/index.html"

خروجی کار به صورت زیر خواهد بود.

/bin/bash: /public/index.html: Read-only file system
command terminated with exit code 1

بررسی اجرای کانتینر با کاربر غیر‌ریشه

برای این عمل دستور زیر را وارد نمایید.

kubectl exec -it deployment/game-2048 -n game-2048 -- id -u

خروجی باید یک عدد صحیح غیر از صفر (به عنوان مثال 100) باشد.

اگر تمام این بررسی‌ها با موفقیت انجام شد، به این معنی است که تنظیمات امنیتی به‌درستی اعمال شده‌اند.

مدیریت استثناها (Exceptions) در Kubescape

گاهی ممکن است بخواهید برخی از مشکلات گزارش‌شده را نادیده بگیرید، به خصوص اگر تیم توسعه آن‌ها را بی‌خطر تشخیص داده باشد. Kubescape قابلیتی برای تعریف استثناها ارائه می‌دهد که امکان نادیده گرفتن برخی از موارد را فراهم می‌کند.

راهنمای استفاده از Nessus برای اسکن آسیب‌ پذیری‌ها در Ubuntu 22.04
Nessus برای اسکن آسیب‌ پذیری‌ها

استفاده از Kubescape در محیط توسعه (IDE)

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

Kubescape افزونه‌هایی برای محیط‌های زیر ارائه می‌دهد:

  • افزونه Visual Studio Code
  • افزونه Kubernetes Lens

اجرای خودکار Kubescape در CI/CD

برای اینکه خط CI/CD به‌صورت خودکار در هر commit یا Pull Request روی شاخه main اجرا شود، خطوط زیر را در ابتدای فایل game-2048-kubescape.yaml از حالت کامنت خارج کنید.

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

سپس فایل را commit کرده و به شاخه اصلی push کنید.

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

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

چرا باید از گزینه readOnlyRootFilesystem در کانتینر استفاده کنیم؟

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

اجرای کانتینر به‌عنوان کاربر غیر‌ روت چه مزیتی دارد؟

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

چه کاربردی برای گزینه allowPrivilegeEscalation: false وجود دارد؟

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

آیا می‌توان اعلان‌های اسکن امنیتی را به‌صورت خودکار در Slack دریافت کرد؟

بله، با پیکربندی Slack Bot و اتصال آن به پرتال Armo، می‌توان اعلان‌های مربوط به اسکن امنیتی را به‌صورت خودکار در کانال مشخصی از Slack دریافت کرد. این قابلیت به تیم کمک می‌کند تا در سریع‌ترین زمان ممکن نسبت به آسیب‌پذیری‌های جدید واکنش نشان دهد.

جمع بندی

در این مقاله، تنظیمات امنیتی مانند سیستم فایل فقط‌خواندنی، اجرای برنامه با کاربر غیر روت و غیرفعال‌سازی افزایش سطح دسترسی در کانتینر بازی 2048 اعمال شد. سپس فایل deployment.yaml به‌روزرسانی و به شاخه اصلی پروژه ارسال شد. با اجرای مجدد workflow و دریافت پیام موفقیت، اطمینان حاصل شد که تغییرات به‌درستی انجام شده‌اند. در نهایت، با فعال‌سازی هشدارهای Slack، امکان پایش مداوم آسیب‌پذیری‌های جدید فراهم شد.

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

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

برچسب‌ها: