אבטחת קונטיינרים של Docker ו-Kubernetes

מבוא לאבטחת קונטיינרים

קונטיינרים חוללו מהפכה בפריסת אפליקציות, אך הם מציגים וקטורי תקיפה חדשים. האבטחה חייבת לכסות הכול, מ-base images ועד תזמור Kubernetes, כולל הגנת runtime ו-network policies.

אבטחת Docker Images

1. בחירת Base Image

  • שימוש ב-images רשמיים ומאומתים (Docker Hub verified publishers)
  • העדפת Alpine Linux או Distroless למשטח תקיפה קטן יותר
  • הימנעות מ-images עם :latest - תמיד לציין גרסאות
  • מזעור layers והסרת כלים מיותרים

2. סריקת פגיעויות

  • Trivy: סורק קוד פתוח של Aqua Security
  • Grype: סריקת פגיעויות ב-images וב-filesystems
  • Clair: ניתוח סטטי של פגיעויות
  • Snyk Container: אינטגרציה עם CI/CD
  • סריקה אוטומטית ב-CI/CD pipeline לפני ה-push

3. חתימת Images

  • Docker Content Trust (Notary) לחתימת images
  • Sigstore/Cosign עבור supply chain security
  • אימות שלמות לפני ה-deployment

אבטחת Runtime של Docker

הקשחת קונטיינרים של Docker:

  • User Namespaces: לא להריץ כ-root (USER directive)
  • Capabilities: Drop all + להוסיף רק את הנחוצים (--cap-drop=ALL)
  • Read-only Filesystem: --read-only לקונטיינרים בלתי-משתנים
  • No New Privileges: --security-opt=no-new-privileges
  • Resource Limits: --memory, --cpus למניעת DoS
  • Seccomp Profiles: סינון syscalls מסוכנים
  • AppArmor/SELinux: Mandatory access control

אבטחת Kubernetes

1. RBAC ובקרת גישה

  • הרשאה מינימלית: Roles ו-RoleBindings ספציפיים
  • Service Accounts ייעודיים לכל אפליקציה
  • הימנעות מ-ClusterAdmin למעט אוטומציה קריטית
  • Audit logging של כל ה-API calls

2. Pod Security Standards

  • Privileged: ללא הגבלות (להימנע)
  • Baseline: מונע הסלמות ידועות
  • Restricted: הקשחה מרבית לסביבת ייצור
  • Pod Security Admission controller לאכיפה

3. Network Policies

  • Default deny all + allow מפורש לפי הצורך
  • חלוקה לפי namespace ו-labels
  • בקרת egress למניעת חילוץ נתונים
  • אינטגרציה עם CNI plugins (Calico, Cilium)

ניהול Secrets

  • לעולם אל תקודדו secrets בקוד קשיח ב-images או בקוד
  • Kubernetes Secrets: מקודדים ב-Base64 (לא מוצפנים!)
  • External Secrets Operator: אינטגרציה עם vaults חיצוניים
  • Sealed Secrets: הצפנה אסימטרית עבור GitOps
  • HashiCorp Vault: Dynamic secrets ורוטציה אוטומטית
  • AWS Secrets Manager / Azure Key Vault: Cloud-native options
  • Encryption at rest עבור etcd (--encryption-provider-config)

אבטחת Runtime

כלי הגנת runtime:

  • Falco: זיהוי איומים ב-runtime עם eBPF (CNCF)
  • Tetragon: eBPF-based security observability (Cilium)
  • Sysdig Secure: Container forensics ו-compliance
  • Aqua Security: Full lifecycle container security
  • Prisma Cloud: CWPP (Cloud Workload Protection Platform)

הם מזהים: יצירת תהליכים חריגה, חיבורי רשת חשודים, שינויים ב-file system, ניסיונות הסלמת הרשאות

אבטחת Service Mesh

  • Istio: mTLS אוטומטי, authorization policies, הצפנת תעבורה
  • Linkerd: service mesh קליל עם zero-trust networking
  • Consul Connect: הצפנה והרשאה service-to-service
  • רוטציה אוטומטית של תעודות
  • בקרת גישה מדויקת בין microservices
  • Observability: distributed tracing ו-metrics

אבטחת שרשרת האספקה

  • SBOM (Software Bill of Materials): Syft, Tern ליצירה
  • Admission Controllers: OPA/Gatekeeper, Kyverno עבור policy enforcement
  • Image Provenance: תאימות ל-SLSA framework
  • Registry Security: Harbor, Artifactory עם סריקה משולבת
  • חתימה ואימות של artifacts (Cosign, Notary v2)
  • ניהול פגיעויות מתמשך

שיטות עבודה מומלצות

  • [OK] סריקת images בכל שלבי ה-pipeline
  • [OK] יישום Pod Security Standards ברמת Restricted
  • [OK] network policies של default deny לכל ה-namespaces
  • [OK] secrets חיצוניים (לעולם לא ב-Git או ב-images)
  • [OK] runtime monitoring עם Falco או שווה ערך
  • [OK] audit logs מופעלים וממורכזים
  • [OK] עדכונים שוטפים של ה-cluster וה-components
  • [OK] גיבוי מוצפן של etcd
  • [OK] תוכניות disaster recovery שנבדקו
  • [OK] zero-trust networking עם service mesh