‫Oke.
‫De volgende, code repo scannen.
‫Dit is niet eens Docker-specifiek, maar er
‫zijn tools en Sneak is er een
‫van. Sneak,
‫scant uw code-afhankelijkheden in repo's.
‫Als je open source hebt, als je een open source ontwikkelt,
‫zullen ze veel van deze dingen gratis doen.
‫Ze scannen uw GitHub-repo, uw Bitbucket-repo en
‫kijken naar de afhankelijkheden.
‫Ik krijg elke week rapporten van hen over mijn open source repo's
‫en eventuele kwetsbaarheden die ze hebben gevonden.
‫Tegenwoordig doet GitHub veel hiervan zelf ook
‫gratis. Sneak
‫bestaat al langer en doet het al langer,
‫dus ik heb beide. Ik heb GitHub die me e-mails
‫stuurt en ik heb Sneak. Je kunt Sneak betalen om dingen te scannen.
‫Ze hebben nu ook meer functies waar ze ook afbeeldingen en
‫andere dingen doen, niet alleen code-repo's.
‫Maar dat is één regel: scan uw repo's
‫vroeg in het proces.
‫Wacht niet tot je afbeeldingen maakt en dan
‫dingen in CI hebt, je weet wel, bij het testen waar
‫je scant. Scan zo vroeg mogelijk.
‫Dit is een beetje een van de kernprincipes van iets
‫dat ShiftLeft-beveiliging wordt genoemd.
‫Als je je een Kanban-bord voorstelt waar al je werk aan de
‫linkerkant is en je output aan de
‫rechterkant, dan gaat de ShiftLeft-beveiligingsbeweging, als je gewoon een beetje
‫zoekt naar ShiftLeft-beveiliging, alles over het verschuiven van de
‫verantwoordelijkheid voor beveiliging eerder en eerder
‫in uw ontwikkelworkflow.
‫Dus een manier om dat te doen is om deze geautomatiseerde scanners je code-afhankelijkheden
‫in je git-repo's te laten scannen voordat je zelfs maar in
‫het stadium komt om dingen op servers uit te
‫voeren, toch. Ik zou dat doen.
‫Niet specifiek een Docker-ding, maar ik zou dat doen.
‫De volgende stap is het scannen van afbeeldingen zelf, wat
‫daar erg op lijkt. Maar we krijgen hier meer functies.
‫We scannen niet alleen uw code-afhankelijkheden.
‫We kunnen de container zelf scannen.
‫Het beeld, juist. We kunnen
‫alle afhankelijkheden daar scannen die niet
‫alleen zijn zoals uw npm-pakketten of uw,
‫u weet wel, Python-pakketten. Je scant nu
‫YUM-pakketten, en APK, of apt, of dit
‫soort pakketbeheerders voor het besturingssysteem.
‫Dat is wat ik bedoel met een afbeeldingsscanner, omdat
‫deze zowel die als uw code-afhankelijkheden kan scannen.
‫Er zijn hier dus veel tools.
‫Een zeer populaire set bestaat al een tijdje, maar er zijn
‫een paar nieuwe verschenen waar ik het met je
‫over wil hebben.
‫De eerste hier is Trivy, en ik hoorde hier deze maand
‫over, eigenlijk in oktober.
‫Trivy is gebouwd door Aqua Security, hetzelfde bedrijf dat
‫MicroScanner bouwt.
‫MicroScanner was een van de tools, samen
‫met een heleboel andere, en ook Anchor, een andere populaire.
‫Dit zijn allemaal open source-tools die uw afbeelding
‫scannen op CVE-kwetsbaarheden.
‫De CVE is die database van alle open source donorkwetsbaarheden
‫waar we allemaal over horen in het nieuws.
‫Het is van Mitre, een bedrijf dat die database beheert.
‫Dit is een gemeenschapsding, toch.
‫Telkens wanneer iemand een kwetsbaarheid in software vindt, plaatst hij deze erin
‫en krijgt hij een CVE-nummer.
‫Het is een veelvoorkomende kwetsbaarheid en
‫exploits, zoiets.
‫Ik weet niet meer precies waar CVE voor staat.
‫Ik weet zeker dat een van jullie het me in de chat zal vertellen.
‫Maar CVE krijgt een nummer, toch.
‫We zien een nummer toegewezen aan die
‫bekende bug in de community. Een CVE-scanner scant uw afbeeldingen op
‫die kwetsbaarheid.
‫Als je eenmaal bezig bent met de implementatie hiervan,
‫zijn er allerlei minutia, zoals moet de scanner die je nodig
‫hebt om in de Docker-image te draaien tijdens de bouwtijd?
‫Of scant het een afbeelding die al is gebouwd?
‫Ondersteunt die scanner
‫uw basisdistributie? Ondersteunt het Red Hat?
‫Ondersteunt het Alpine?
‫Elke soort van andere distributie-images die je hebt gekozen om
‫te gebruiken, zal het deze ondersteunen?
‫Ondersteunt het ook uw pakketbeheerder voor uw app zoals npm
‫of pip,
‫of een van de andere tientallen pakketbeheerders
‫die er zijn, toch. Ondersteunt het die ook?
‫MicroScanner deed
‫dat allemaal niet. Het deed het deels, maar
‫zoals veel van deze andere tools in het ecosysteem, deden ze het niet allemaal.
‫Op dit moment, deze van Aqua Security genaamd Trivy, ga
‫helemaal naar
‫de top van dit ding.
‫Trivy beweert dat ze de meest
‫complete open source gratis scanner zijn die er is.
‫Hier beneden zie je wat ze steunen.
‫U zult merken dat ze al deze gebaseerde afbeeldingen ondersteunen.
‫Als je dan echt naar beneden gaat, is er een
‫vergelijking die ze laat zien in vergelijking met alle andere
‫tools, of in ieder geval de populaire open source-versies
‫van deze tools. Er zijn zeker meer tools dan dit.
‫Er zijn veel keuzes die je hier moet maken.
‫Een keuze is waar wil ik scannen?
‫Wil ik dat mijn image repository ze zelf scant, zoals
‫Docker Enterprise DTR doet?
‫Waar je een register hebt met je afbeeldingen
‫en dat register scant in één keer op de
‫afbeeldingen in het register zelf.
‫Quay doet dit ook. Quay is een
‫cloud-hosting image repository en het zal ook scannen, toch.
‫Elk van deze scanners scant niet altijd alle afbeeldingstypen
‫en alle app-afhankelijkheden.
‫Dus het is best cool dat ze hier laten zien... eigenlijk betekent de X
‫dat ze het niet doen.
‫De 0 of de O daar, de cirkel, betekent dat
‫ze het doen. Dan denk
‫ik dat de dubbele OO hier het
‫beste betekent, en de driehoek betekent dat er problemen
‫zijn, dat er zorgen zijn.
‫Ze claimen dus die Trivy, die ze dit jaar hebben gekocht, geloof
‫ik. Trivy
‫doet het allemaal. Het doet OS-pakketten, applicatie-afhankelijkheden.
‫Ze beweren dat het gemakkelijk te gebruiken is.
‫Ze beweren dat het nauwkeuriger is. Als je hierin begint
‫te lezen, realiseer je je dat een van de grote problemen
‫waar ik het steeds over heb, is dat het basisbeeld van Alpine niet
‫werkt met bijna al deze scanners.
‫Het heeft alleen de kwetsbaarheidsdatabase niet goed aangesloten,
‫zodat wanneer u deze scanners uitvoert, het
‫kwetsbaarheden in Alpine detecteert.
‫Trivy beweert dat ze dat hebben opgelost met
‫een nieuwe methode die ze implementeren, en we zullen zien of
‫andere mensen dat ook implementeren.
‫Ze beweren de meest complete te zijn.
‫Veel van mijn Docker Captain-vrienden zeggen allemaal dat ze het gebruiken
‫en het geweldig gebruiken.
‫Een van de andere beslissingen, naast welke scanner, is waar
‫ga je scannen?
‫Ik scan graag tijdens het maken van afbeeldingen.
‫Ik scan liever tijdens de CI geautomatiseerde
‫image build dan deze later te scannen nadat de image is gebouwd.
‫Dat ben ik gewoon.
‫Je hebt misschien zelfs verschillende systemen die op
‫verschillende tijdstippen scannen, gewoon voor de zekerheid,
‫juist, voor de zekerheid. Mogelijk hebt u systemen die scannen
‫op de servers die in productie zijn, afhankelijk van
‫uw omgeving. Dat is niet erg gebruikelijk.
‫Maar als u zich in een superveilige omgeving bevindt
‫en u dingen live wilt scannen, kunt u dat zeker doen met
‫sommige van deze tools.
‫Een demo die ik vaak geef gaat
‫over MicroScanner. In wezen is
‫alles wat u hoeft te doen in MicroScanner, evenals deze
‫andere tool, in MicroScanner, u kunt het toevoegen aan uw Docker-bestand.
‫Ik geloof dat de Tivey-app je scant nadat de
‫afbeelding is gebouwd.
‫Als je super paranoïde bent, zou je misschien
‫een MicroScanner in je Docker-image kunnen gebruiken.
‫Dan zou je iets als Tivey kunnen uitvoeren op de
‫afbeeldingen voordat ze naar het register worden
‫gestuurd, weet je. Je kunt ze altijd later downloaden,
‫maar ik wil graag weten dat mijn afbeelding vrij van kwetsbaarheden is
‫voordat ik hem opstuur.
‫Dus dat zou je daar kunnen doen. Nutsvoorzieningen.
‫Ik wil je alleen een waarschuwing geven.
‫Je hebt waarschijnlijk geen... je zult
‫waarschijnlijk geen afbeeldingen hebben, of misschien slechts een
‫paar afbeeldingen, die over de hele linie
‫nul kwetsbaarheden hebben. Dat komt gewoon
‫door de aard van open source. Normaal gesproken, als u een afbeelding
‫scant, meestal, als u een afbeelding scant die er is,
‫zal deze kwetsbaarheden hebben.
‫Het is jouw taak om met je beveiligingsteam te
‫werken aan wat acceptabel is, niet dat we nooit kwetsbaarheden kunnen hebben.
‫Omdat bepaalde kwetsbaarheden misschien niet eens op jou van toepassing zijn.
‫Alleen omdat ze in jouw beeld staan, wil nog niet zeggen dat ze
‫automatisch een probleem gaan vormen, toch.
‫Je zult wat werk
‫moeten verzetten. Ik denk dat wat ik zou voorstellen
‫is om deze nu te
‫implementeren, maar het soort falen ervan uit te schakelen
‫en hier doorgaan met falen, wat betekent dat ik je alleen maar
‫ga waarschuwen dat er kwetsbaarheden zijn. Ik ga de bouw niet stoppen alleen
‫omdat er een kwetsbaarheid is.
‫Dit is essentieel, want als je al
‫deze tools automatisch gaat implementeren, zullen ze het proces mislukken.
‫Ze zullen niet slagen voor je CI, of ze zullen niet slagen voor je
‫builds, als je ze gewoon aanzet. U wilt er
‫zeker van zijn dat u ze in een soort van controlemodus hebt, waar ze niet
‫falen bij het vinden van een kwetsbaarheid.
‫Op die manier kun je in ieder geval leren wat de
‫kwetsbaarheden zijn voordat je begint, weet je, voordat je hardcore
‫gaat, toch? Voordat je gaat hardcore.