Mən 20 ildən artıqdır ki, İT sahəsində işləyirəm, amma nədənsə konteynerlərə getməmişəm. Teorik olaraq, onların necə qurulduğunu və necə işlədiyini başa düşdüm. Ancaq praktikada onlarla heç vaxt qarşılaşmadığım üçün kapotun altındakı dişlilərin tam olaraq necə döndüyünə və döndüyünə əmin deyildim.
Üstəlik, onların təhlükəsizliyinin necə olması barədə heç bir fikrim yox idi. Ancaq yenə də nəzəriyyə gözəl səslənir və köhnə mahnı "təhlükəsizlik artdıqca istifadə qabiliyyəti azalır" fikri beynimdə ilişib qalıb. Ona görə də düşündüm ki, konteynerlərlə hər şeyi etmək çox asandır, deməli orada təhlükəsizlik normadan aşağıdır. Göründüyü kimi, mən haqlı idim.
Tez başlamaq üçün kurslara yazıldım
Sheila A. Berta və Sol Ozzan tərəfindən tədris edilən kurs dərhal Docker konteynerlərinin necə işlədiyini və Kubernetes-ə yerləşdirildikdə keçdikləri səyahətin təsviri ilə başladı. Bu, tamamilə praktiki dərs idi - tələbələr dərsdən əvvəl öz maşınlarında Docker və microk8-ləri quraşdırmalı idilər - bu alətlərin bir-biri ilə necə qarşılıqlı əlaqədə olduğunu görmək, zəif nöqtələri tapmaq və ən əsası onları bloklamağa çalışmaq üçün əla üsuldur.
Təəssüf ki, kurslar iki gündən sonra “şahzadə” olmağı vəd etsə də, hər şeyin yeni başladığını hiss etdim və hələ öyrənməli olduğum çox şey var.
Mənim yüksək müşahidələrimə dalmadan əvvəl konteynerin nə olduğunu izah etmək vacibdir. İnkişaf dünyasında şəxsi maşınınızda yazılan kodun mükəmməl işləməsi normal hesab olunur, lakin siz onu haradasa serverdə işə salmağa çalışdığınız zaman sadəcə işləmir. Konteynerlər hər zaman işləyəcəklərini bilərək bir serverdən digərinə asanlıqla keçə biləcəyiniz müstəqil maşınlar təqdim edərək bu problemi aradan qaldırmağa çalışırlar. Adından göründüyü kimi, onlar işi yerinə yetirmək üçün lazım olan kodu, kitabxanaları və digər proqramları ehtiva edir. Kubernetes, əksinə, belədir
Aşağıda qırmızı və mavi komandanın perspektivindən bəzi tapıntılarım var.
Qırmızı Komanda
Əksər konteyner məzmunu kök kimi işləyir: Bu o deməkdir ki, əgər konteyner təhlükə altında olarsa, sizin konteynerə tam girişiniz olacaq. Bu, növbəti addımları çox asanlaşdırır.
Docker.sock-un konteynerin içərisinə quraşdırılması təhlükəlidir: Konteynerin içərisində kökünüz varsa və həmçinin Docker yuvası (/var/run/docker.sock) olan konteynerin içərisində Docker quraşdırıbsınızsa, hər hansı digər konteynerə giriş daxil olmaqla, bütün klasteri araşdırmaq potensialınız var. Şəbəkənin izolyasiyası və ya digər vasitələrlə belə girişin qarşısı alına bilməz.
Ətraf mühit dəyişənləri çox vaxt gizli məlumatları ehtiva edir: Əksər hallarda insanlar normal mühit dəyişənlərindən istifadə edərək konteynerə parol göndərirlər. Beləliklə, hesabınıza girişiniz varsa, daha sonra səlahiyyətlərinizi genişləndirmək üçün bu mühit dəyişənlərinə casusluq edə bilərsiniz.
Docker API çoxlu məlumat verə bilər: Docker API, standart olaraq konfiqurasiya edildikdə, icazəsiz işləyir və bir ton məlumat istehsal edə bilər. Shodan istifadə edərək, siz asanlıqla açıq portların siyahısını tapa bilərsiniz, sonra klaster haqqında ətraflı məlumat əldə edə və onun tam ələ keçirilməsinə davam edə bilərsiniz. Bu barədə TrendMicro yazıb
Mavi Komanda
Konteyner məzmununu kök kimi işlətməyin: Kök kimi işləmək daha asan olsa da, bunu etməməlisiniz. Bunun əvəzinə, ya CLI-dən işləyərkən --user seçimindən istifadə edərək, ya da Dockerfile-də USER-i göstərərək uid-i göstərməklə tətbiqləri sıfırlama icazələri ilə işə salın.
Proqram təminatının konteynerlərdə quraşdırılmasına icazə verməyin: Demək olar ki, hər bir hücum bir şey əkməklə başlayır. Nmap-dan ifconfig-ə, Docker-in özünə (konteynerin içərisində) hər hansı bir şeyi konteynerə quraşdırmaq adi haldır. Eyni səbəbdən, siz həmişə istifadə olunmayan bütün portları bloklamalısınız. Bu, həmçinin maşınınız yoluxduqda idarəetmə əmrlərinin ötürülməsinin qarşısını almağa kömək edir. Proqramların quraşdırılmasının qarşısını almaqdan əlavə, tapşırığı yerinə yetirmək üçün tələb olunan minimum sayda tətbiqin konteynerin özündə quraşdırıldığından əmin olmağa dəyər.
docker.sock-u qoruyun: Konteyner və klaster arasında əlaqə bu rozetka vasitəsilə işləndiyi üçün qorunmalıdır. Bu yazıda təfərrüatlara varmaq istəmədiyim üçün oxuyun
Ətraf dəyişənləri yerinə Docker sirlərini istifadə edin: Sirr var
Məqalə konteynerlərə olan marağınızı artırıbsa, siz asanlıqla Docker və ya microk8-ləri (Kubernetes-in kiçik versiyası) quraşdıra bilərsiniz.
Quraşdırıldıqdan sonra gedə bilərsiniz
Əgər siz praktiki məruzəçilərin onun bütün alətlərini araşdırdıqları Docker-da hərtərəfli kurs almaq istəyirsinizsə və ya ehtiyacınız varsa: əsas abstraksiyalardan şəbəkə parametrlərinə, müxtəlif əməliyyat sistemləri və proqramlaşdırma dilləri ilə işləmək nüanslarına qədər, cəhd edin "
Mənbə: www.habr.com