ما به کسب و کارهای نوپا مانند شما کمک می کنیم تا حرفه ای شوند.

ما به کسب و کارهای نوپا مانند شما کمک می کنیم تا حرفه ای شوند.

امنیت در Kubernetes: راهنمای جامع برای حفاظت از کلاسترها

🛡️ امنیت در Kubernetes: راهنمای جامع برای حفاظت از کلاسترها

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

📌 چرا امنیت در Kubernetes اهمیت دارد؟

Kubernetes از معماری پیچیده‌ای تشکیل شده: از kubelet و API Server گرفته تا etcd، Scheduler و کانتینرهایی که اجرا می‌شوند. این اجزا در تعامل با یکدیگر هستند و اگر حتی یکی از آن‌ها به‌درستی ایزوله یا محدود نشده باشد، مهاجم می‌تواند با دسترسی محدود، کنترل کل سیستم را به‌دست بگیرد.

🧱 ۱. کنترل دسترسی با RBAC

RBAC (Role-Based Access Control) یکی از پایه‌های امنیت در Kubernetes است. با RBAC شما مشخص می‌کنید که چه کاربری یا سرویس‌اکانتی به چه منابعی با چه مجوزی دسترسی داشته باشد.

  • ایجاد Role و RoleBinding برای namespace خاص
  • استفاده از ClusterRole و ClusterRoleBinding برای منابع سراسری
  • رعایت اصل کمترین دسترسی (Least Privilege)
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: default
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

🔐 ۲. ایزوله‌سازی شبکه با Network Policies

با استفاده از NetworkPolicy، شما می‌توانید تعیین کنید که کدام پادها مجاز به ارتباط با یکدیگر هستند.

مثلاً: فقط پادهای frontend بتوانند به backend دسترسی داشته باشند.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend

🧍 ۳. محدود کردن سطح دسترسی پادها (Security Context)

Security Context به شما امکان می‌دهد تا سطح دسترسی و محدودیت‌هایی را روی پادها یا کانتینرها تنظیم کنید.

  • عدم اجرای پاد به‌صورت root
  • غیرفعال کردن privilege mode
  • استفاده از readOnlyRootFilesystem
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true

🔒 ۴. استفاده از Pod Security Standards (PSS)

Kubernetes از نسخه‌های جدیدتر از مکانیزم Pod Security Admission استفاده می‌کند که شامل ۳ سطح امنیتی است:

  • Privileged: بدون محدودیت (برای محیط‌های تست)
  • Baseline: محدودیت‌های پایه
  • Restricted: سطح امنیتی بالا برای تولید

شما می‌توانید این سطوح را برای namespaceها فعال کنید.

🛑 ۵. جلوگیری از استفاده از تصاویر ناسالم

  • فقط از ریجستری‌های امن استفاده کنید (مثل Harbor)
  • امضای دیجیتال برای imageها با cosign یا Notary
  • اسکن تصاویر با ابزارهایی مثل Trivy یا Clair
نوشته های مرتبط

دیدگاه خود را بنویسید