رفتن به محتوا
بازگشت به وبلاگ
دواپس

بهترین شیوه‌های امنیت کانتینر برای محیط تولیدی

ایمن‌سازی استقرارهای Docker و Kubernetes: اسکن Image، کانتینرهای non-root، seccomp، AppArmor، پالیسی‌های شبکه و امنیت Runtime.

دی ۱۴۰۴
۱۶ دقیقه مطالعه

مقدمه

امنیت container خودکار نیست - یک container Docker که به عنوان root اجرا می‌شود با محدودیت منابع صفر یک خطر امنیتی قابل توجه است. این راهنما سخت‌کاری امنیتی عملی container را برای محیط‌های production آموزش می‌دهد.

امنیت Image

DOCKERFILE
# اشتباه: استفاده از latest و اجرا به عنوان root

# درست: نسخه pin شده، کاربر غیر root
FROM ubuntu:22.04@sha256:2b7412e...

RUN groupadd -r appuser && useradd -r -g appuser appuser
COPY --chown=appuser:appuser . /app
USER appuser
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/app/server"]

اسکن برای آسیب‌پذیری

BASH
trivy image company/myapp:v1.2.3

# شکست pipeline برای CVE های CRITICAL
trivy image --exit-code 1 --severity CRITICAL company/myapp:latest

امنیت Pod در Kubernetes

YAML
securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  readOnlyRootFilesystem: true  # Filesystem غیرقابل تغییر
  capabilities:
    drop: ["ALL"]
    add: ["NET_BIND_SERVICE"]  # فقط آنچه لازم است اضافه کنید

resources:
  limits:
    cpu: "500m"
    memory: "512Mi"

NetworkPolicy

YAML
# انکار همه، اجازه فقط به آنچه لازم است
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: nginx-ingress
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres

امنیت container دفاع در عمق است: با image های غیر root و اسکن آسیب‌پذیری در CI شروع کنید، محدودیت‌های منابع و network policy در Kubernetes اضافه کنید، و از ابزارهای امنیت runtime برای تشخیص ناهنجاری‌ها استفاده کنید.