مقدمه
امنیت 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 برای تشخیص ناهنجاریها استفاده کنید.
