Ես աշխատում եմ ՏՏ ոլորտում ավելի քան 20 տարի, բայց ինչ-որ կերպ երբեք չեմ հասել կոնտեյներների մոտ: Տեսականորեն ես հասկացա, թե ինչպես են դրանք կառուցված և ինչպես են աշխատում: Բայց քանի որ ես երբեք գործնականում չէի հանդիպել նրանց, ես վստահ չէի, թե ինչպես են նրանց գլխարկի տակ գտնվող փոխանցումները պտտվում և պտտվում:
Բացի այդ, ես չէի պատկերացնում, թե ինչպես է նրանց անվտանգությունը։ Բայց նորից, տեսությունը լավ է հնչում, և իմ գլխում մնաց հին երգը՝ «որպես անվտանգությունը մեծանում է, օգտագործելիությունը նվազում է»: Այսպիսով, ես մտածեցի, որ քանի որ ամեն ինչ այնքան հեշտ է անել բեռնարկղերի հետ, ապա այնտեղ անվտանգությունը ցածր է: Ինչպես պարզվեց, ես ճիշտ էի։
Արագ սկսելու համար ես գրանցվեցի դասընթացներին
Դասընթացը, որը վարում էին Շեյլա Ա. Բերտան և Սոլ Օզզանը, անմիջապես սկսվեց նկարագրությամբ, թե ինչպես են աշխատում Docker բեռնարկղերը և ինչ ճանապարհորդում են նրանք, երբ տեղակայվում են Կուբերնետես: Սա լիովին գործնական դաս էր. ուսանողները դասից առաջ պետք է տեղադրեին Docker-ը և microk8-երը իրենց մեքենաների վրա. հիանալի միջոց էր տեսնելու, թե ինչպես են գործիքները փոխազդում միմյանց հետ, գտնել թույլ կետեր և, ամենակարևորը, փորձել արգելափակել դրանք:
Ցավոք սրտի, թեև դասընթացները խոստանում էին երկու օր հետո դառնալ «արքայազն», ես զգացի, որ ամեն ինչ նոր է սկսվում, և ես դեռ շատ բան ունեմ սովորելու։
Նախքան իմ վեհ դիտարկումների մեջ սուզվելը, կարևոր է բացատրել, թե ինչ է կոնտեյները: Զարգացման աշխարհում նորմալ է համարվում, որ ձեր անձնական մեքենայի վրա գրված կոդը կատարյալ աշխատում է, բայց երբ փորձում եք այն գործարկել ինչ-որ տեղ սերվերի վրա, այն պարզապես չի աշխատում։ Կոնտեյներները փորձում են հաղթահարել այս խնդիրը՝ տրամադրելով ինքնուրույն մեքենաներ, որոնք հեշտությամբ կարող եք տեղափոխել մի սերվերից մյուսը՝ իմանալով, որ դրանք միշտ կաշխատեն: Ինչպես անունն է հուշում, դրանք պարունակում են կոդը, գրադարաններ և այլ ծրագրեր, որոնք անհրաժեշտ են աշխատանքը կատարելու համար: Kubernetes-ը, մյուս կողմից, է
Ստորև բերված են իմ որոշ բացահայտումներ կարմիր և կապույտ թիմի տեսանկյունից:
Կարմիր թիմ
Կոնտեյների բովանդակության մեծ մասն աշխատում է որպես արմատՍա նշանակում է, որ եթե բեռնարկղը վտանգված է, դուք լիարժեք մուտք կունենաք դեպի կոնտեյներ: Սա շատ ավելի հեշտ է դարձնում հետագա քայլերը:
Docker.sock-ը կոնտեյների ներսում տեղադրելը վտանգավոր էԵթե դուք արմատ ունեք կոնտեյների ներսում, ինչպես նաև տեղադրել եք Docker կոնտեյների ներսում, որն ունի Docker վարդակից (/var/run/docker.sock), դուք հնարավորություն ունեք ուսումնասիրելու ամբողջ կլաստերը, ներառյալ ցանկացած այլ կոնտեյների հասանելիություն: Նման մուտքը հնարավոր չէ կանխել ցանցի մեկուսացման կամ այլ միջոցներով:
Շրջակա միջավայրի փոփոխականները հաճախ պարունակում են գաղտնի տվյալներՇատ դեպքերում մարդիկ գաղտնաբառեր են ուղարկում կոնտեյներ՝ օգտագործելով սովորական միջավայրի փոփոխականներ: Այսպիսով, եթե դուք մուտք ունեք հաշիվ, կարող եք լրտեսել այս միջավայրի փոփոխականները, որպեսզի հետագայում ընդլայնեք ձեր լիազորությունները:
Docker API-ն կարող է շատ տեղեկություններ տալDocker API-ն, երբ կարգավորվում է լռելյայն, աշխատում է առանց թույլտվության և կարող է արտադրել մի տոննա տեղեկատվություն: Օգտագործելով Shodan-ը, դուք կարող եք հեշտությամբ գտնել բաց նավահանգիստների ցանկը, այնուհետև ստանալ մանրամասն տեղեկություններ կլաստերի մասին և անցնել դրա ամբողջական գրավմանը: Այս մասին գրել է TrendMicro-ն
Կապույտ թիմ
Մի գործարկեք կոնտեյների բովանդակությունը որպես արմատԹեև ավելի հեշտ է գործարկել որպես root, դուք չպետք է դա անեք: Փոխարենը գործարկեք վերակայման թույլտվություններ ունեցող հավելվածները՝ ցուցադրելով uid-ը, կա՛մ օգտագործելով --user տարբերակը CLI-ից աշխատելիս, կա՛մ նշելով USER Dockerfile-ում:
Թույլ մի տվեք, որ ծրագրակազմը տեղադրվի տարաներումԳրեթե յուրաքանչյուր հարձակում սկսվում է ինչ-որ բան տնկելուց: nmap-ից մինչև ifconfig մինչև հենց Docker-ը (կոնտեյների ներսում), ինչ-որ բան տեղադրելը բեռնարկղում սովորական բան է եղել: Նույն պատճառով, դուք միշտ պետք է արգելափակեք բոլոր չօգտագործված նավահանգիստները: Սա նաև օգնում է կանխել կառավարման հրամանների փոխանցումը, երբ ձեր մեքենան վարակված է: Բացի ծրագրերի տեղադրումը կանխելուց, արժե համոզվել, որ առաջադրանքը կատարելու համար անհրաժեշտ հավելվածների նվազագույն քանակը տեղադրված է հենց կոնտեյներով:
Պաշտպանեք docker.sock-ըԱյն պետք է պաշտպանված լինի, քանի որ կոնտեյների և կլաստերի միջև հաղորդակցությունը մշակվում է այս վարդակից: Քանի որ այս հոդվածում չեմ ուզում մանրամասնել, կարդացեք
Օգտագործեք Docker գաղտնիքները շրջակա միջավայրի փոփոխականների փոխարենԳաղտնիքներ կան
Եթե հոդվածը ձեր հետաքրքրությունն է առաջացրել բեռնարկղերի նկատմամբ, կարող եք հեշտությամբ տեղադրել Docker կամ microk8s (Kubernetes-ի փոքր տարբերակը):
Տեղադրվելուց հետո կարող եք գնալ
Եթե ցանկանում եք կամ պետք է անցնեք Docker-ի վերաբերյալ համապարփակ դասընթաց, որտեղ գործնական բանախոսները կուսումնասիրեն դրա բոլոր գործիքները՝ հիմնական վերացականություններից մինչև ցանցային պարամետրեր, տարբեր օպերացիոն համակարգերի և ծրագրավորման լեզուների հետ աշխատելու նրբերանգներ, ապա փորձեք «
Source: www.habr.com