‫Wat vind je van distroloze afbeeldingen?
‫Is het een goede afweging tussen grootte en veiligheid?
‫Ik zou zeggen dat als je distroloze beelden
‫kunt maken, en wat we hiermee bedoelen, de
‫term in beweging is.
‫Ik heb het gevoel dat distroloze
‫beelden ingewikkeld zijn. Ik heb het gevoel dat alleen het zeggen
‫van krasafbeeldingen een gemakkelijkere manier is om het te zeggen. Maar het is correct om
‫een distroloos beeld te zeggen, wat betekent dat er geen basispakketsysteem
‫is. Er is geen geschikt. Er is geen jammie.
‫Er zijn niet al die verschillende commando's waarvan je
‫zou aannemen dat ze in een container zitten als je een
‫van de officiële afbeeldingen gebruikt. Het punt is dat distroloze
‫afbeeldingen om twee redenen niet erg gebruikelijk zijn.
‫Ten eerste hebben de meeste programma's
‫al die dingen nodig om te kunnen werken.
‫Ze hebben geschikte pakketafhankelijkheden nodig.
‫Ze hebben
‫hun eigen open SSL-bibliotheken nodig. Ze hebben allerlei dingen nodig naast het programma
‫dat erin zit, toch.
‫Dat zijn de meeste toepassingen vandaag.
‫Golang, C, sommige andere talen kunnen enkele binaire bestanden
‫bouwen die in principe alles hebben wat ze
‫nodig hebben om te draaien,
‫behalve de kernel. Die dingen zijn
‫technisch in staat om alles eronder te verwijderen.
‫Alle lagen en je afbeelding kunnen verdwijnen.
‫Ik zie ze nog niet veel in het wild omdat
‫ik niet werk met Google, en Netflix, en enorme teams
‫van mensen die hier super professioneel in zijn.
‫De twee redenen hier zijn, één, je moet een taal
‫hebben die dit ondersteunt, en je moet een team hebben dat begrijpt hoe
‫je deze op de juiste manier kunt bouwen.
‫Dan moet je echt goed zijn in het oplossen van problemen en
‫hoe containers in naamruimten werken.
‫Want op het moment dat die distroloze afbeelding in een container
‫loopt en je een probleem hebt, kun je er
‫niet eens induiken.
‫Er is geen schaal. Je kunt er niet in.
‫Je kunt er niet naar kijken. Dus nu is uw
‫tooling beperkt en moet u op zoek gaan naar andere manieren
‫om uw tooling aan die containers te koppelen.
‫Dat bestaat. Er zijn van die dingen
‫die dat voor je zullen doen, maar het hangt grotendeels af van je vaardigheden
‫in termen van hoe je omgaat met naamruimten.
‫Hoe kun je vanaf de opdrachtregel als een
‫zijspan in een draaiende container in de naamruimte springen zonder
‫Docker te gebruiken?
‫Dat zijn het soort problemen dat de kop opsteekt
‫als je te maken hebt met probleemoplossing of systeembewaking
‫en -onderhoud als je distroloze afbeeldingen hebt.
‫Voor iedereen met wie ik werk die begint
‫met containers, hun eerste paar projecten
‫in containers, ik noem dit spul niet omdat grootte gewoon grootte is.
‫Je kunt altijd meer schijfruimte toevoegen aan een server, toch.
‫Geen reden om een heel team rond te laten rennen
‫om allerlei nieuwe tools en zo te leren, alleen maar zodat je
‫minder schijfruimte op een server kunt gebruiken.
‫Persoonlijk vind ik de maat niet belangrijk.
‫Beveiliging is een theoretisch iets.
‫In theorie kunnen al die dingen die
‫uit een containerimage worden verwijderd, het
‫veiliger maken. Maar laten we het over in het wild hebben.
‫Hoeveel kansen heeft iemand om te rommelen
‫met andere tooling in uw container
‫buiten uw app? Stel dat cURL een kwetsbaarheid bevat, maar
‫uw app gebruikt geen cURL.
‫Het staat gewoon in de afbeelding.
‫Hoe gaat iemand daar toegang toe krijgen, toch?
‫Ze zullen je app moeten doorbreken.
‫Uw app moet dus een exploit hebben.
‫Dan zouden ze in theorie het cURL-commando in de
‫container kunnen uitvoeren, toch. Dus dat
‫is echt waar dit distroloze spul over gaat, de
‫theoretische beveiligingsbonussen van het niet opnemen van andere applicaties.
‫De realiteit is echter dat als je eenmaal
‫een statisch binair bestand hebt gebouwd, je al veel van
‫die bibliotheken opneemt die kwetsbaar kunnen zijn, zoals
‫open SSL, wat een gebruikelijke manier is om applicaties te verbinden
‫met SSL-beveiliging, toch.
‫Nou, als dat een kwetsbaarheid heeft en je het statisch in je app
‫inbouwt, is het er nog steeds.
‫Het is alleen geen apart bestand op de container.
‫Het staat in uw app in een enkel binair bestand.
‫In feite maakt het het zelfs moeilijker om
‫dat te scannen, omdat nu elke scanner die ik ken
‫dat open SSL-binaire bestand niet zal vangen als
‫het ingebouwd is. Veel van deze dingen zijn dus theoretisch.
‫Ik heb niet de neiging om teams in de richting
‫van theoretische beveiligingsfuncties te duwen. Ik kijk meer naar wat
‫er in het wild gebeurt, toch.
‫Docker-daemons worden ontmaskerd.
‫Kubernetes heeft niet de juiste authenticatie, dus
‫het wordt zichtbaar. Dat zijn de echte problemen
‫die ik zie, weet je, de dingen waar de nadruk op ligt
‫zijn de dingen waar we steeds over horen in het
‫nieuws waar mensen mee gehackt worden, toch. Dit soort dingen met theoretische
‫beveiliging bij het verwijderen van bestanden uit afbeeldingen.
‫Dat is gewoon meer in het theoretische domein.
‫Het is geen reden om het niet te doen.
‫Net als deze lijst, alles in deze lijst, zou ik
‫eerst doen voordat ik die weg van moeilijke dingen
‫zou gaan inslaan.
‫Ik vind distroloze afbeeldingen relatief moeilijk.
‫Tenzij je al een Go-programmeur bent en je hele
‫team al heel goed is in naamruimten en
‫Docker-commando's en dat soort dingen.
‫Ik bedoel niet alleen gewone Docker-commando's.
‫Ik bedoel ingewikkelde dingen die je helpen bij het oplossen van
‫problemen met containers die bijvoorbeeld geen shells bevatten.
‫Dus, het is een geweldige vraag.
‫Het komt de hele tijd op.
‫Iedereen vraagt me ernaar als we veiligheidsdiscussies hebben, omdat het
‫een populair onderwerp is. Maar het staat niet eens in
‫mijn top tien.
‫Ik hoop dat dat helpt.