De Anchore Engine is een open-source software voor het scannen en analyseren van containerafbeeldingen op beveiligingsproblemen en beleidskwesties. Het is beschikbaar als een Docker-containerimage die binnen een orkestratieplatform kan worden uitgevoerd, 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 bekijken we hoe u de Anchore-scanner voor kwetsbaarheden voor afbeeldingen installeert en gebruikt. Over het algemeen zijn er verschillende implementatiemethoden. Ik zal me echter concentreren op de volgende twee,
- De … gebruiken AnchoreCLI opdrachtregel optie
- GUI gebaseerd Jenkins Anchore containerbeeldscanner inpluggen.
We laten u zien hoe u de engine installeert, configureert en begin, en hoe u de AnchoreCLI-opdrachtregeltool en de Jenkins-plug-in configureert en gebruikt. Voor elk van de twee methoden leert u hoe u de te scannen afbeeldingen kunt toevoegen, de scan kunt uitvoeren en rapporten kunt bekijken.
Aan het einde van het artikel leert u de volgende drie dingen.
- Het installeren en configureren van de Anchore-motor
- Installeren, configureren en gebruiken AnchoreCLI
- Configureren en gebruiken Anchore Container Picture Scanner-plug-in in Jenkins
Vereisten
Dit zijn de vereisten voor deze zelfstudie;
- Een lokale of virtuele machine met Ubuntu 18.04 en het volgende;
- Dokwerker
- Docker-composeren
- Jenkins Geïnstalleerd en actief
- sudo-gebruiker
Stap 1: Stel de werkmappen in en obtain de configuratiebestanden.
Maak een werkmap voor uw Anchore-bestanden. Binnen die listing maakt u twee subdirectories, één voor de configuratie en één voor de database.
Maak een thuismap voor de Anchore-bestanden
mkdir anchore
Ga naar de nieuwe map en maak de configuratie- en database-submappen aan.
cd anchore
mkdir config
mkdir db
Obtain de configuratiebestanden
Zodra de mappen klaar zijn, zullen we twee configuratiebestanden downloaden (docker-compose.yaml
En config.yaml
) van het Github-project.
Om de te downloaden docker-compose.yaml
Ga naar de homedirectory van Anchore en gebruik de opdracht
curl https://uncooked.githubusercontent.com/anchore/anchore-engine/grasp/scripts/docker-compose/docker-compose.yaml > docker-compose.yaml
Obtain vervolgens de config.yaml naar de ~/anchore/config
map
curl https://uncooked.githubusercontent.com/anchore/anchore-engine/grasp/scripts/docker-compose/config.yaml -o ~/anchore/config/config.yaml
De 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 config.yaml
bestand. In deze zelfstudie gebruiken we echter de standaardinstellingen.
Om door te gaan met de standaard inloggegevens, (username
– beheerder en password
– foobar), ga verder naar stap 2.
Anchore Engine-referenties wijzigen (optioneel)
Gebruik vanuit de anchore-directory de opdracht
nano ~/anchore/config/config.yaml
Zoek de gebruikersnaam (admin) en het wachtwoord (foobar) en wijzig deze naar uw voorkeurswaarden.
druk op CTRL + XDan Y om op te slaan en af te sluiten.
Met de werkdirectories en configuratiebestanden is het systeem klaar voor de installatie van de Anchore Engine.
Stap 2: — Installeer en begin de Anchore Engine
Je gebruikt de Docker compose om de Anchore Engine en database te installeren en te starten.
Voer vanuit de homedirectory van anchore.
docker-compose up -d
Dit zal automatisch de Anchore-afbeelding ophalen en vervolgens de Anchore-engine en database maken in respectievelijk de home- en ~/anchore/database/-directory’s. Na voltooiing begin de opdracht de Anchore-engine.
Na het succesvol installeren en starten van de anchore-engine, kunt u nu de afbeeldingen scannen met behulp van de anchore-opdrachtregel AnchoreCLI. U moet echter eerst het opdrachtregelhulpprogramma AnchoreCLI installeren, zoals hieronder weergegeven.
AnchoreCLI installeren, configureren
In deze stap leert u hoe u het AnchoreCLI opdrachtregelprogramma.
Stap 3: — Installeer AnchoreCLI
In deze zelfstudie zullen we eerst het hulpprogramma python-pip installeren, dat vervolgens zal worden gebruikt om het AnchoreCLI van de bron.
Om Python pip te installeren. Ga naar de basismap van Anchore en voer het uit
sudo apt-get replace
sudo apt-get set up python-pip
sudo pip set up --upgrade setuptools
Installeer de AnchoreCLI met behulp van python-pip
pip set up anchorecli
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
supply ~/.profile
Om te controleren of de installatie succesvol is en de versie van het Anchorecli
gebruik de opdracht
anchore-cli --version
Gebruik de opdracht om de systeemstatus van Anchore-CLI te controleren
anchore-cli --url http://localhost:8228/v1 --u admin --p foobar system standing
Houd er rekening mee dat u de Anchore-engine-URL, gebruikersnaam en wachtwoord moet doorgeven.
Definieer Anchore Engine-parameters
Standaard zal de AnchoreCLI proberen toegang te krijgen tot de Anchore Engine zonder authenticatie. Dit zal echter niet werken 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 URL van de Anchore Engine samen met de poort 8228 die wordt 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=admin
ANCHORE_CLI_PASS=foobar
Het bovenstaande stelt alleen de parameters in voor de huidige shell. Om de huidige shell en andere processen die ermee beginnen in te stellen, gebruiken we de opdracht exporteren
export ANCHORE_CLI_URL
export ANCHORE_CLI_USER
export 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 kunt toevoegen en analyseren op beveiligingsproblemen. In deze zelfstudie analyseren we twee afbeeldingen. -openjdk:8-jre-alpine
met kwetsbaarheden en debian:newest with out
.
Analyseren van beelden
Om verder te gaan, moeten we eerst de afbeeldingen aan de engine toevoegen. Om de afbeeldingen toe te voegen
anchore-cli picture add openjdk:8-jre-alpine
Stabiel beeld toevoegen debian:newest
anchore-cli picture add docker.io/library/debian:newest
Voeg meer afbeeldingen toe
anchore-cli picture add openjdk:10-jdk
anchore-cli picture add openjdk:11-jdk
Na het toevoegen van een afbeelding aan de Anchore Engine begin de analyse direct. Als er meerdere geladen afbeeldingen zijn, worden deze 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 picture checklist
Uitgang
user1@Imagescan:~/anchore$ anchore-cli picture checklist
Full Tag Picture Digest Evaluation Standing
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 verstreken tijd nadat u ze hebt toegevoegd, wordt u geanalyseerd voor de volledige afbeeldingen, voor de lopende afbeeldingen en niet voor de afbeeldingen in de wachtrij.
Stap 5: — Analyseresultaten 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.
Om de resultaten voor de kwetsbaarheidsscan aan te zetten openjdk:8-jre-alpine
kwetsbaar beeld
Loop
anchore-cli picture vuln openjdk:8-jre-alpine all
Uitgang
user1@Imagescan:~/anchore$ anchore-cli picture vuln openjdk:8-jre-alpine all
Vulnerability IDPackage Severity Repair CVE Refs Vulnerability URL
CVE-2018-1000654 libtasn1-4.13-r0 Excessive 4.14-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?identify=CVE-2018-1000654
CVE-2019-12900 libbz2-1.0.6-r6 Excessive 1.0.6-r7 http://cve.mitre.org/cgi-bin/cvename.cgi?identify=CVE-2019-12900
CVE-2019-14697 musl-1.1.20-r4 Excessive 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?identify=CVE-2019-14697
CVE-2019-14697 musl-utils-1.1.20-r4 Excessive 1.1.20-r5 http://cve.mitre.org/cgi-bin/cvename.cgi?identify=CVE-2019-14697
CVE-2019-8457 sqlite-libs-3.26.0-r3 Excessive 3.28.0-r0 http://cve.mitre.org/cgi-bin/cvename.cgi?identify=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?identify=CVE-2018-14498
Het rapport toont de CVE-identificatie, 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 bekijken voor een stabiel beeld debian:newest
Voer de opdracht uit
anchore-cli picture vuln docker.io/library/debian:newest all
Uitgang
user1@Imagescan:~/anchore$ anchore-cli picture vuln debian:newest all
Vulnerability IDPackage Severity Repair CVE RefsVulnerability URL
CVE-2005-2541 tar-1.30+dfsg-6 Negligible None https://security-tracker.debian.org/tracker/CVE-2005-2541
CVE-2019-1010022libc-bin-2.28-10 Negligible None https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010022libc6-2.28-10 Negligible None https://security-tracker.debian.org/tracker/CVE-2019-1010022
CVE-2019-1010023libc-bin-2.28-10 Negligible None https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010023libc6-2.28-10 Negligible None https://security-tracker.debian.org/tracker/CVE-2019-1010023
CVE-2019-1010024libc-bin-2.28-10 Negligible None https://security-tracker.debian.org/tracker/CVE-2019-1010024
Zoals uit het rapport blijkt, heeft de afbeelding debian:newest verwaarloosbare kwetsbaarheden en geen oplossingen.
De resultaten van de beleidsevaluatie voor de instabiele afbeelding bekijken openjdk:8-jre-alpine
loop
anchore-cli consider verify openjdk:8-jre-alpine
Uitvoer – De resultaten laten een mislukking zien
user1@Imagescan:~/anchore$ anchore-cli consider verify openjdk:8-jre-alpine
Picture Digest: sha256:b2ad93b079b1495488cc01375de799c402d45086015a120c105ea00e1be0fd52
Full Tag: docker.io/openjdk:8-jre-alpine
Standing: fail
Final Eval: 2019-09-20T12:03:32Z
Coverage ID: 2c53a13c-1765-11e8-82ef-23527761d060
De afbeelding openjdk:8-jre-alpine schendt de opgegeven beleids-ID (Coverage ID: 2c53a13c-1765-11e8-82ef-23527761d060
) en retourneert daarom de standing Mislukt.
Nu we hebben gezien hoe de Anchore-engine reageert na het detecteren van een beleidsschending, is het tijd om te controleren hoe deze zich gedraagt met onze stabiele afbeelding debian:newest.
Beleidscontrole voor debian:newest
stabiel beeld
anchore-cli consider verify docker.io/library/debian:newest --detail
user1@Imagescan:~/anchore$ anchore-cli consider verify docker.io/library/debian:newest --detail
Picture Digest: sha256:d3351d5bb795302c8207de4db9e0b6eb23bcbfd9cae5a90b89ca01f49d0f792d
Full Tag: docker.io/library/debian:newest
Picture ID: c2c03a296d2329a4f3ab72a7bf38b78a8a80108204d326b0139d6af700e152d1
Standing: cross
Final Eval: 2019-09-20T12:00:06Z
Coverage ID: 2c53a13c-1765-11e8-82ef-23527761d060
Last Motion: warn
Last Motion Cause: policy_evaluation
Gate TriggerDetail Standing
dockerfileinstructionDockerfile directive 'HEALTHCHECK' not discovered, matching situation 'not_exists' checkwarn
De resultaten tonen een Move
standing en een laatste actie van Warn
omdat informatie niet overeenkomt met een Dockerfile-richtlijn. Dit mislukt niet, maar het kan nodig zijn om het probleem te controleren en aan te pakken.
De plug-in Anchore Container Picture Scanner configureren en gebruiken in Jenkins
Stap 6:— Voeg de Anchore Container Picture Scanner-plug-in toe en configureer deze in Jenkins
In deze stap gaan we de Anchor Engine integreren met de Jenkins-server. Jenkins is een op Java gebaseerde open-sourceserver voor het automatiseren van een groot aantal repetitieve taken in de softwareontwikkelingscyclus.
De Anchore-plug-in is beschikbaar in Jenkins maar wordt niet standaard geïnstalleerd.
Meld u aan bij Jenkins met een webbrowser
http://your_server_ip_or_domain:8080
Voer de username
En password
.
Ga naar Jenkins-menu
Zoek en selecteer Jenkins beheren
Ga naar Plug-ins beheren
Op de Beschikbaar tabbladscrol omlaag naar Hulpmiddelen bouwen en selecteer de Anchore containerbeeldscanner
Klik op de Installeer zonder opnieuw op te starten keuze.
Na de succesvolle installatie van de Anchore Container Picture Scanner-plug-inis de volgende stap het configureren van de inloggegevens.
Ga naar de Jenkins menu en selecteer de Jenkins beheren tabblad.
Open Systeem configureren.
Zoek de Anchore-configuratie.
Selecteer Engine-modus
Voer de Anchore-motor particulars (de motor URL
, username
En password
En port 8228
– de standaardpoort voor de motor).
URL- http://your_server_IP:8228/v1
Voer de username
= beheerder
Voer de Password
= foobar of nieuw wachtwoord als je het hebt gewijzigd Stap 3 (boven)
Klik Redden
Configureer de Anchore-plug-in
Stap 8:— Afbeeldingen toevoegen en scannen
Klik Nieuw merchandise bij de 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 challenge gebruiken we de Pipeline-build.
Selecteer de Pijpleiding en klik OK.
U bent nu klaar om de afbeeldingen te scannen. In ons geval zullen we afbeeldingen gebruiken die al in het docker-register staan en toegankelijk zijn voor de Anchore-motor.
Om dit te doen, voegt u het pijplijnscript toe dat de te scannen afbeelding specificeert.
Stap 9:— Pijplijnscript toevoegen
Scrol omlaag naar het gedeelte Pijplijn en voeg het script toe om de afbeelding op te geven die moet worden gescand. We beginnen met de openjdk:8-jre-alpine
die enkele kwetsbaarheden bevat.
node {
def imageLine = 'openjdk:8-jre-alpine'`
writeFile file: 'anchore_images', textual content: imageLine`
anchore identify: 'anchore_images'`
}
Klik Redden
Stap 10: Voer de construct uit en bekijk de scanrapporten
Van het Jenkins-menu
Klik Bouw nu
Hiermee wordt het bouwproces gestart, dat enkele minuten duurt, afhankelijk van de afbeeldingsgrootte. Na voltooiing verschijnen een cijfer en een gekleurde knop onder de bouwgeschiedenis. Deze heeft een rode kleur voor Gezakt of Blauw voor Geslaagd. Als u op de knop klikt, worden meer resultaten weergegeven.
Stap 11:— Bekijk de resultaten
Klik op bouwen # om meer particulars te bekijken
Dit opent een Console-uitvoer venster dat een storing aangeeft – Anchore-rapport (FAIL)
De gedetailleerde rapporten geven aan of de analyse een mislukte of geslaagde analyse was en bieden verschillende rapporten met de kwetsbaarheden, waarschuwingen en andere op foundation van de configuratie. De plug-in is standaard geconfigureerd om een construct te mislukken (Cease) wanneer er kwetsbaarheden zijn. Hieronder staan de schermafbeeldingen voor de beleids- en beveiligingsrapporten.
Samenvatting beleidsevaluatie Anchore
Hieronder ziet u een screenshot van de beveiligingsresultaten voor de kwetsbare afbeelding.
Lijst met veelvoorkomende kwetsbaarheden en blootstellingen (CVE).
Als we nu een stabiel beeld scannen, debian:newest
zonder kwetsbaarheden, krijgen we de onderstaande resultaten.
Samenvatting beleidsevaluatie Anchore (geslaagd)
Lijst met veelvoorkomende kwetsbaarheden en blootstellingen (CVE) Geslaagd
Conclusie
De Anchore Container Picture Scanner is een krachtige software voor beeldanalyse die een breed scala aan kwetsbaarheden en beleidskwesties in Docker-images 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 construct te breken wanneer de engine een ernstige kwetsbaarheid tegenkomt.
Als je je carrière in DevSecOps wilt opbouwen, bekijk dan deze Udemy-cursus.