אבטחת קונטיינרים של 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
