De Anchore Engine is een open-source tool voor het scannen en analyseren van container-images op beveiligingsproblemen en beleidskwesties. Het is beschikbaar als een Docker-containerimage die kan worden uitgevoerd binnen een orkestratieplatform of als een zelfstandige installatie.
Dit is een handige beveiligingstool waarmee ontwikkelaars en QA-teams kwetsbaarheden kunnen testen, identificeren en aanpakken in de afbeeldingen die ze gebruiken om applicaties te maken.
In dit artikel zullen we kijken hoe we de Anchore image kwetsbaarheidsscanner kunnen installeren en gebruiken. Over het algemeen zijn er verschillende implementatiemethoden. Ik zal me echter concentreren op de volgende twee,
- De … gebruiken AnchoreCLI opdrachtregeloptie
- GUI gebaseerd Jenkins Anchore Container Image Scanner inpluggen.
We laten u zien hoe u de engine installeert, configureert en start, de AnchoreCLI-opdrachtregeltool en de Jenkins-plug-in configureert en gebruikt. Voor elk van de twee methoden leert u hoe u de afbeeldingen kunt toevoegen om te scannen, de scan uit te voeren en rapporten te bekijken.
Aan het einde van het artikel leer je de volgende drie dingen.
- Het installeren en configureren van de Anchore Engine
- Installeren, configureren en gebruiken AnchoreCLI
- Configureren en gebruiken Anchore Container Image Scanner Plugin in Jenkins
Contents
Vereisten
Hieronder volgen de vereisten voor deze tutorial;
- Een lokale of virtuele machine met Ubuntu 18.04 en het volgende;
- Docker
- Docker-samenstellen
- Jenkins geïnstalleerd en actief
- sudo gebruiker
Stap 1: – Stel de werkmappen in en download de configuratiebestanden.
Maak een werkmap voor uw Anchore-bestanden. Binnen die directory maakt u twee submappen, één voor de configuratie en één voor de database.
Maak een homedirectory voor de Anchore-bestanden
mkdir anker
Ga naar de nieuwe directory en maak de configuratie- en database-submappen aan.
cd-anker
mkdir-configuratie
mkdir db
Download de configuratiebestanden
Zodra de mappen klaar zijn, downloaden we twee configuratiebestanden (docker-compose.yaml en config.yaml) van het Github-project.
Om de docker-compose.yaml te downloaden
Ga naar de home directory anchore en gebruik de opdracht
krul https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/docker-compose.yaml > docker-compose.yaml
Download vervolgens de config.yaml naar de map ~ / anchore / config
krul https://raw.githubusercontent.com/anchore/anchore-engine/master/scripts/docker-compose/config.yaml -o ~ / anchore / config / config.yaml
Het config.yaml-bestand is een configuratiebestand met de basisinstellingen die de anchore-engine-service nodig heeft om te worden uitgevoerd. Het heeft verschillende parameters, waaronder de standaard, logniveau, luisterpoort, gebruikersnaam, wachtwoord en andere die u kunt aanpassen om aan specifieke vereisten te voldoen.
Het is een goede beveiligingspraktijk om het wachtwoord te wijzigen en u kunt dit doen door het bestand config.yaml te bewerken. In deze tutorial gebruiken we echter de standaardinstellingen.
Ga verder met de standaardreferenties (gebruikersnaam – admin en wachtwoord – foobar) stap 2.
Anchore Engine-gegevens wijzigen (optioneel)
Gebruik de opdracht vanuit de ankermap
nano ~ / anchore / config / config.yaml
Zoek de gebruikersnaam (admin) en het wachtwoord (foobar) en verander naar uw voorkeurswaarden.
druk op CTRL + X, dan Y om op te slaan en af te sluiten.
Met de werkmappen en configuratiebestanden op zijn plaats, is het systeem klaar voor de installatie van de Anchore Engine.
Stap 2: – Installeer en start de Anchore Engine
U zult de Docker Compose gebruiken om de Anchore Engine en database te installeren en te starten.
Start vanuit de anchore home directory.
docker-samenstellen up -d
Dit zal automatisch de Anchore-afbeelding ophalen en vervolgens de Anchore-engine en database maken in respectievelijk de home en ~ / anchore / database / directories. Na voltooiing start de opdracht de Anchore-engine.
Na het succesvol installeren en starten van de anker-engine, kunt u nu de afbeeldingen scannen met behulp van de anker-opdrachtregel AnchoreCLI. U moet echter eerst het opdrachtregelprogramma AnchoreCLI installeren, zoals hieronder wordt weergegeven.
AnchoreCLI installeren, configureren
In deze stap leert u hoe u de kunt installeren en configureren AnchoreCLI opdrachtregelprogramma.
Stap 3: – Installeer AnchoreCLI
In deze tutorial installeren we eerst het hulpprogramma python-pip, dat vervolgens wordt gebruikt om de AnchoreCLI van de bron.
Python pip installeren. Voor naar de Anchore homedirectory en voer uit
sudo apt-get update
sudo apt-get installeer python-pip
sudo pip install –upgrade setuptools
Installeer de AnchoreCLI met behulp van python-pip
pip ankerecli installeren
Met deze opdracht worden de bestanden voor de AnchoreCLI gedownload en geïnstalleerd. Na de installatie moeten we nu ons .profile-bestand gebruiken om de opdracht te gebruiken
source ~ / .profile
Gebruik de opdracht om te controleren of de installatie is geslaagd en de versie van de Anchorecli
anchore-cli –versie
Gebruik de opdracht om de anchore-CLI-systeemstatus te controleren
anchore-cli –url http: // localhost: 8228 / v1 –u admin –p foobar systeemstatus
Houd er rekening mee dat u de URL, gebruikersnaam en het wachtwoord van de Anchore-engine moet doorgeven.
Definieer Anchore Engine-parameters
Standaard zal de AnchoreCLI proberen om toegang te krijgen tot de Anchore Engine zonder authenticatie. Dit werkt echter niet en u moet bij elke opdracht de Anchore Engine-referenties opgeven.
Dit omvat het doorgeven van de gebruikersnaam, het wachtwoord en de URL-parameters bij elke Anchore CLI-opdracht. In plaats van deze elke keer weer te geven, is het alternatief om ze te definiëren als omgevingsvariabelen in het volgende formaat.
Voer uit om de URL door te geven
ANCHORE_CLI_URL = http: // localhost: 8228 / v1
Dit definieert de Anchore Engine URL samen met de poort 8228 die het gebruikt.
Stel de gebruikersnaam en het wachtwoord in met de standaardwaarden; vervang ze anders door de nieuwe waarden die u hebt ingesteld Stap 1.
ANCHORE_CLI_USER = beheerder
ANCHORE_CLI_PASS = foobar
Het bovenstaande stelt de parameters alleen in voor de huidige shell. Om de huidige shell en andere processen die ermee beginnen in te stellen, gebruiken we de exportopdracht
exporteer ANCHORE_CLI_URL
exporteer ANCHORE_CLI_USER
exporteer ANCHORE_CLI_PASS
Met de gedefinieerde parameters is de AchoreCLI-installatie voltooid en bent u klaar om afbeeldingen te scannen.
Stap 4: – Afbeeldingen toevoegen en analyseren
Nu we de Anchore Engine hebben uitgevoerd en CLI hebben geconfigureerd, leert u hoe u de afbeeldingen voor beveiligingsproblemen kunt toevoegen en analyseren. In deze tutorial analyseren we twee afbeeldingen. -openjdk: 8-jre-alpine met kwetsbaarheden en debian: laatste zonder .
Afbeeldingen analyseren
Om verder te gaan, moeten we eerst de afbeeldingen aan de engine toevoegen. Om de afbeeldingen toe te voegen
anchore-cli image openjdk toevoegen: 8-jre-alpine
Voeg stabiele afbeelding toe debian: latest
anchore-cli image add docker.io/library/debian:latest
Voeg meer afbeeldingen toe
anchore-cli image openjdk toevoegen: 10-jdk
anchore-cli image voeg openjdk toe: 11-jdk
Na het toevoegen van een afbeelding aan de Anchore Engine, begint de analyse onmiddellijk. Als er meerdere geladen afbeeldingen zijn, worden ze in een wachtrij geplaatst en één voor één geanalyseerd. U kunt de voortgang controleren en de lijst met geladen afbeeldingen bekijken, samen met hun analysestatus.
Voer de opdracht uit om de lijst te zien
anchore-cli afbeeldingenlijst
Uitvoer
[email beveiligd]: ~ / anchore $ anchore-cli afbeeldingenlijst
Volledige Tag Image Digest Analysis Status
docker.io/openjdk:10-jdk sha256: 923d074ef1f4f0dceef68d9bad8be19c918d9ca8180a26b037e00576f24c2cb4analyzed
docker.io/openjdk:11-jdk sha256: 9923c0853475007397ed5c91438c12262476d99372d4cd4d7d44d05e9af5c077analyzed
docker.io/openjdk:8-jre-alpine sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52analyzed
Afhankelijk van het aantal afbeeldingen, de grootte en de tijd die is verstreken na het toevoegen ervan, wordt u geanalyseerd voor de volledige, analyse voor degenen die bezig zijn en niet voor de afbeeldingen in de wachtrij.
Stap 5: – Analyse resultaten ophalen en bekijken
Zodra de analyse is voltooid, kunt u de resultaten controleren en de resultaten bekijken voor de kwetsbaarheidsscans, beleidscontroles en andere problemen die de engine heeft geïdentificeerd.
Resultaten voor de kwetsbaarheidsscan op openjdk controleren: 8-jre-alpine kwetsbare afbeelding
Rennen
anchore-cli image vuln openjdk: 8-jre-alpine all
Uitvoer
[email beveiligd]: ~ / anchore $ anchore-cli image vuln openjdk: 8-jre-alpine all
Kwetsbaarheid IDPackage Ernst Fix CVE Refs Vulnerability URL
CVE-2018-1000654 libtasn1-4.13-r0 High 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 High 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 High 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 High 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-8457
CVE-2018-14498 libjpeg-turbo-1.5.3-r4 Medium 1.5.3-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14498
Het rapport toont de CVE-ID, het kwetsbare pakket, de ernst en of er een oplossing is of niet. Voor onze afbeelding openjdk: 8-jre-alpine laat de analyse zien dat het vijf hoge kwetsbaarheden heeft en een behoorlijk aantal middelgrote en verwaarloosbare kwetsbaarheden. (sommige niet hierboven weergegeven).
Resultaten van kwetsbaarheden voor een stabiele afbeelding bekijken debian: laatste
Voer de opdracht uit
anchore-cli image vuln docker.io/library/debian:latest all
Uitvoer
[email beveiligd]: ~ / anchore $ anchore-cli image vuln debian: nieuwste allemaal
Beveiligingslek ID Pakket Ernst Fix CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30 + dfsg-6 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Verwaarloosbaar Geen https://security-tracker.debian.org/tracker/CVE-2019-1010024
Zoals uit het rapport blijkt, heeft de afbeelding debian: latest verwaarloosbare kwetsbaarheden en geen oplossingen.
Om de resultaten van de beleidsevaluatie te zien voor de onstabiele afbeelding openjdk: 8-jre-alpine
rennen
anchore-cli evalueren check openjdk: 8-jre-alpine
Output – De resultaten tonen een mislukking
[email beveiligd]: ~ / anchore $ anchore-cli evalueren check openjdk: 8-jre-alpine
Image Digest: sha256: b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Volledige tag: docker.io/openjdk:8-jre-alpine
Status: mislukt
Laatste Eval: 2019-09-20T12: 03: 32Z
Beleids-ID: 2c53a13c-1765-11e8-82ef-23527761d060
De afbeelding openjdk: 8-jre-alpine schendt de opgegeven beleids-ID (beleids-ID: 2c53a13c-1765-11e8-82ef-23527761d060) en retourneert daarom de status Mislukt.
Nu we hebben gezien hoe de Anchore Engine reageert na het detecteren van een beleidsschending, is het tijd om te controleren of deze zich gedraagt met onze stabiele image debian: laatste.
Beleidscontrole voor debian: laatste stabiele afbeelding
anchore-cli evalueren check docker.io/library/debian:latest –detail
[email beveiligd]: ~ / anchore $ anchore-cli evalueren check docker.io/library/debian:latest –detail
Beeldsamenvatting: sha256: d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Volledige tag: docker.io/library/debian:latest
Afbeelding ID: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Status: geslaagd
Laatste Eval: 2019-09-20T12: 00: 06Z
Beleids-ID: 2c53a13c-1765-11e8-82ef-23527761d060
Laatste actie: waarschuw
Reden laatste actie: policy_evaluation
Gate TriggerDetail Status
dockerfile-instructie Dockerfile-richtlijn ‘HEALTHCHECK’ niet gevonden, overeenkomende voorwaarde ‘not_exists’ checkwarn
De resultaten tonen een Pass-status en een Final Action of Warn vanwege niet-overeenkomende informatie met een Dockerfile-richtlijn. Dit mislukt niet, maar vereist mogelijk controle en oplossing van het probleem.
Anchore Container Image Scanner Plugin configureren en gebruiken in Jenkins
Stap 6: – Voeg de Anchore Container Image Scanner Plugin toe en configureer deze in Jenkins
In deze stap zullen we de Anchor Engine integreren met de Jenkins-server. Jenkins is een op Java gebaseerde, open-source server voor het automatiseren van een breed scala aan repetitieve taken in de softwareontwikkelingscyclus.
De Anchore plugin is beschikbaar in Jenkins maar wordt niet standaard geïnstalleerd.
Log in bij Jenkins met een webbrowser
http: // uw_server_ip_of_domein: 8080
Voer de gebruikersnaam en het wachtwoord in.
Ga naar Jenkins-menu
Lokaliseer en selecteer Beheer Jenkins
Ga naar Beheer plug-ins
Op de Beschikbare tab, scrol omlaag naar Bouw tools en selecteer de Anchore Container Image Scanner
Klik op de Installeer zonder opnieuw op te starten keuze.
Na de succesvolle installatie van de Anchore Container Image Scanner plug-in, de volgende stap is het configureren van de referenties.
Ga naar de Jenkins menu en selecteer het Beheer Jenkins tabblad.
Open Configureer systeem.
Zoek de Anchore configuratie.
Selecteer Engine-modus
Voer de Anchore Engine details (de engine-URL, gebruikersnaam en wachtwoord en poort 8228 – de standaardpoort voor de engine).
URL – http: // uw_server_IP: 8228 / v1
Voer de gebruikersnaam = admin in
Voer het wachtwoord = foobar of nieuw wachtwoord in als je het hebt gewijzigd Stap 3 (bovenstaande)
Klik Opslaan
Configureer Anchore Plugin
Stap 8: – Afbeeldingen toevoegen en scannen
Klik Nieuw item in het Jenkins Dashboard in het menu linksboven
Dit opent een scherm met verschillende opties.
Typ de gewenste naam voor uw testproject in het veld Voer de itemnaam in.
In dit project gebruiken we de Pipeline-build.
Selecteer de Pijpleiding en klik OK.
U bent nu klaar om de afbeeldingen te scannen. In ons geval gebruiken we afbeeldingen die al in het docker-register staan dat toegankelijk is voor de Anchore Engine.
Om dit te doen, voegt u het pijplijnscript toe dat de te scannen afbeelding specificeert.
Stap 9: – Voeg een pijplijnscript toe
Blader omlaag naar het gedeelte Pipeline en voeg het script toe om de afbeelding te specificeren die moet worden gescand. We beginnen met de openjdk: 8-jre-alpine die enkele kwetsbaarheden bevat.
knooppunt {
def imageLine = ‘openjdk: 8-jre-alpine’`
writeFile-bestand: ‘anchore_images’, tekst: imageLine`
anchore name: ‘anchore_images’`
}
Klik Opslaan
Stap 10: – Voer de build uit en bekijk de scanrapporten
Vanuit het Jenkins-menu
Klik Bouw nu
Hiermee wordt het bouwproces gestart, dat afhankelijk van de afbeeldingsgrootte een paar minuten duurt. Na voltooiing verschijnen een nummer en een gekleurde knop onder de Build-geschiedenis. Dit heeft een rode kleur voor mislukken of blauw voor slagen. Als u op de knop klikt, worden meer resultaten weergegeven.
Stap 11: – Bekijk de resultaten
Klik op Build # voor meer details
Dit opent een Console-uitgang venster dat een storing aangeeft – Anchore Report (FAIL)
De gedetailleerde rapporten geven aan of de analyse een mislukking of een pass was en bieden verschillende rapporten met de kwetsbaarheden, waarschuwingen en andere op basis van de configuratie. Standaard is de plug-in geconfigureerd om een build te mislukken (Hou op) wanneer er kwetsbaarheden zijn. Hieronder staan de screenshots voor de beleids- en beveiligingsrapporten.
Samenvatting beleidsevaluatie
Hieronder ziet u een screenshot van de beveiligingsresultaten voor de kwetsbare afbeelding.
Lijst met veelvoorkomende beveiligingslekken en blootstellingen (CVE)
Als we nu een stabiele afbeelding scannen, debian: latest, zonder kwetsbaarheden, krijgen we de onderstaande resultaten.
Samenvatting beleidsevaluatie (Pass)
Lijst met veelvoorkomende beveiligingslekken en blootstellingen (CVE)
Conclusie
De Anchore Container Image Scanner is een krachtig hulpmiddel voor beeldanalyse dat een breed scala aan kwetsbaarheden en beleidsproblemen in Docker-afbeeldingen identificeert. Het heeft veel aanpassingsopties en kan worden geconfigureerd om te reageren op het detecteren van problemen tijdens de analyse. Een daarvan is om de build te verbreken wanneer de engine een ernstige kwetsbaarheid tegenkomt.
Als je je carrière in DevSecOps wilt opbouwen, kijk dan hier Udemy natuurlijk.
TAGS:
Open source