Middle
Kubernetes-də konteyneri root istifadəçi kimi işlətmək niyə pis təcrübə hesab olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Kubernetes-də root istifadəçisi kimi konteynerlərin işə salınması təhlükəsizlik risklərini artırır:
- Yüksək üstünlüklər səviyyəsi: Konteynerin pozulması halında, hücumçu konteyner daxilində root hüquqları əldə edir. Bu, host sistemində üstünlüklərin artırılmasına və ya klasterin digər resurslarına girişə imkan verə bilər.
- Hostun fayl sisteminə giriş: Əgər düzgün məhdudiyyətlər yoxdursa, konteyner daxilindəki root prosesi, işlədiyi nodun fayl sisteminə giriş edə bilər, bu da icazəsiz dəyişikliklər və ya məlumat sızması ehtimalını artırır.
- Kernel zəiflikləri: Konteynerdəki root istifadəçisi Linux kernel zəifliklərindən istifadə edərək, konteynerdən çıxıb, hostu idarə edə bilər.
- Audit çətinliyi: Root istifadəçisinin fəaliyyətlərini izləmək daha çətindir, bu da təhlükəsizlik hadisələrinin aşkarlanmasını və araşdırılmasını çətinləşdirir.
- Əmlak mirası: Əgər digər proseslər root istifadəçisindən başlayıbsa, onlar da yüksək üstünlüklərə malik olacaqlar.
Ən yaxşı praktika olaraq, konteynerləri üstünlükləri olmayan istifadəçi ilə işə salmaq tövsiyə olunur. Bu, securityContext vasitəsilə pod manifestində konfiqurasiya edilə bilər:
securityContext:
runAsUser: 1000 # ID ilə üstünlüksüz istifadəçi istifadəsi
runAsGroup: 3000 # 3000 ID ilə qrupa aid olma (istəyə bağlı)
allowPrivilegeEscalation: false # üstünlüklərin artırılmasını qadağan et
readOnlyRootFilesystem: true # konteynerin kök fayl sisteminə yazmağı qadağan et
Əlavə olaraq, istifadə edilə bilər:
- Pod Təhlükəsizlik Siyasətləri / Pod Security Admission: Pod səviyyəsində təhlükəsizlik siyasətlərinin tətbiqi üçün.
- AppArmor / SELinux: Konteynerlərin əlavə izolyasiyası üçün.
- Açıq şəkildə göstərilən üstünlüksüz istifadəçi ilə konteyner şəkillərindən istifadə:
Dockerfile-dəUSERgöstərişi ilə.
# İstifadəçi göstərən Dockerfile nümunəsi
FROM ubuntu:latest
# Üstünlüksüz istifadəçi yaratmaq
RUN useradd -ms /bin/bash myuser
# Bu istifadəçiyə keçmək
USER myuser
CMD ["/bin/bash"]