🛡️ امنیت در 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