Artikelen
Tutorials
Interactieve handleidingen
Snyk Bitbucket Pipelines-integratie om DevSecOps te bereiken
Simon Maple
Field CTO bij Snyk
Bereik DevSecOps door Snyk te integreren met Bitbucket Pipelines en Jira.
Tijd
5 minuten lezen.
Publiek
Ontwikkelaars, beveiligings- en toepassingsteams en DevOps/DevSecOps-engineers.
Vereisten
Je hebt een Snyk-account. Ga hier aan de slag.
Je hebt een Atlassian Bitbucket-account. Log hier in of ga hier aan de slag.
In deze tutorial wordt beschreven hoe je je buildworkflow beveiligt op Bitbucket Pipelines met Snyk. Een belangrijke stap bij het beveiligen van je omgeving is het scannen en analyseren van zowel je toepassing als op Linux gebaseerde containerproject op bekende kwetsbaarheden, waarmee je beveiligingsproblemen kunt identificeren en beperken. De oefeningen in deze tutorial helpen bij het beveiligen van je toepassing en container door gebruik te maken van de Snyk Pipe voor Bitbucket Pipelines om het toepassingsmanifestbestand en de container-basisimage te scannen op afhankelijkheden.
De tutorial Hoe Snyk en Bitbucket Cloud DevSecOps mogelijk maken, was gericht op toepassingsafhankelijkheden. Als je echter ook je container-basisimage scant, kun je het volgende detecteren:
- De pakketten van het besturingssysteem (OS) die zijn geïnstalleerd en beheerd door de pakketbeheerder
- Belangrijke binaire bestanden: lagen die niet via de pakketbeheerder zijn geïnstalleerd
Op basis van deze resultaten geeft Snyk advies en begeleiding, zoals:
- Oorsprong van de kwetsbaarheden in OS-pakketten en belangrijke binaire bestanden
- Gegevens over de upgraden van basisimages of een aanbeveling om de image opnieuw te bouwen
- Docker-bestandlaag waar het betreffende pakket werd geïntroduceerd
- Vaste versie van het besturingssysteem en belangrijke binaire pakketten
Het scannen van toepassingen in je Bitbucket Pipeline
Het bitbucket-pipelines.yml-bestand definieert de configuratie van je Bitbucket Pipelines-builds. Als je nieuw bent bij Bitbucket Pipelines, kun je hier meer informatie vinden over hoe je aan de slag kunt.
Deze zelfstudie biedt een voorbeeld van een bitbucket-pipelines.yml-bestand dat verschillende stappen bevat die zijn toegewezen aan de workflow. We beginnen met het scannen van de toepassing, het bouwen van de Docker-image en vervolgens het scannen van de container-image. Hieronder volgt een nadere beschrijving van de stap voor het scannen van toepassingen:
scan-app: &scan-app
- step:
name: "Scan open source dependencies"
caches:
- node
script:
- pipe: snyk/snyk-scan:0.4.3
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "npm"
PROJECT_FOLDER: "app/goof"
TARGET_FILE: "package.json"
CODE_INSIGHTS_RESULTS: "true"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "false"
Dit voorbeeld maakt gebruik van de Snyk Scan-pipe in de pipeline om een scan van de toepassing uit te voeren. De bron bevat een volledige YAML-definitie van alle ondersteunde variabelen, maar alleen de variabelen in dit snippet zijn opgenomen, zijn hiervoor nodig.
Hier volgt meer informatie over een aantal van deze:
1. SNYK_TOKEN
wordt in de pipe doorgegeven als een repository-variabele die eerder is gedefinieerd in de module [Bitbucket-configuration].
2. PROJECT_FOLDER
is de map waarin het project zich bevindt en normaal gesproken standaard staat. In dit voorbeeld stellen we dit echter in op app/goof
en geven dit als artefact door aan andere stappen in de pipeline.
3. CODE_INSIGHTS_RESULTS
is standaard false
. Omdat we echter een Code-inzichtrapport met Snyk-testresultaten willen maken, stellen we dit in op true
.
4. SEVERITY_THRESHOLD
rapporteert over issues die gelijk zijn aan of hoger zijn dan het opgegeven niveau. De standaard is low
. Maar in dit geval zijn we alleen geïnteresseerd in high
, dus hebben we deze variabele daarop ingesteld.
5. De standaard DONT_BREAK_BUILD
is false
, wat wordt verwacht. Onder normale omstandigheden zou je de build willen afbreken als er problemen worden gevonden. Stel dit echter voor het doel van deze leeroefening op waar
.
Je kunt Snyk-beveiligingsscans uitvoeren op je pull requests en de resultaten bekijken in Code Insights met behulp van de nieuwe Snyk Security Connect-app op de Atlassian Marketplace. Het is eenvoudig om aan de slag te gaan en je kan de app met slechts een paar klikken installeren.
De container-images scannen
Tegen 2022 zal meer dan 75 procent van de wereldwijde organisaties containertoepassingen in productie gebruiken (Gartner). Met de wijdverbreide acceptatie heeft er ook een toename van het aantal kwetsbaarheden in containers plaatsgevonden, met een viervoudige toename van de gemelde kwetsbaarheden in het besturingssysteem in 2018. En toch zegt 80 procent van de ontwikkelaars dat ze hun container-images niet testen tijdens de ontwikkeling. Ze zeggen ofwel dat het niet hun verantwoordelijkheid is of dat ze eraan gewend zijn dat iemand onderweg problemen oppakt, wat het schalen van containerbeveiliging een uitdaging maakt voor snelgroeiende bedrijven.
Container-images scannen in je pipeline
Net als in het vorige gedeelte over toepassingen scannen, richt deze sectie zich op het configureren van het bitbucket-pipelines.yml-bestand om de docker-image voor de toepassing te builden, de image te scannen en die image vervolgens naar het register te pushen. Hieronder wordt de stap voor het scannen van container-images nader bekeken:
scan-push-image: &scan-push-image
- step:
name: "Scan and push container image"
services:
- docker
script:
- docker build -t $IMAGE ./app/goof/
- docker tag $IMAGE $IMAGE:${BITBUCKET_COMMIT}
- pipe: snyk/snyk-scan:0.4.3
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE
PROJECT_FOLDER: "app/goof"
TARGET_FILE: "Dockerfile"
CODE_INSIGHTS_RESULTS: "true"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "false"
Dit is het bouwen van de container-image en het taggen en vervolgens gebruiken van de Snyk Scan-pipe in de pipeline om een scan van de container-image uit te voeren. Behoud dezelfde waarden voor CODE_INSIGHTS_RESULTS, SEVERITY_THRESHOLD
en DONT_BREAK_BUILD
. Dit geeft ook een aantal extra ondersteunde variabelen door die relevant zijn voor de Snyk Pipe om het verzoek om een container-imagescan in plaats van een toepassingsscan te begrijpen. Dit zijn namelijk het instellen van LANGUAGE
op docker
, het verklaren van de IMAGE_NAME
, het doorgeven van de juiste repository-variabele, en het instellen van het TARGET_FILE
op Dockerfile
.
Je pipeline scant nu de container-image en de toepassingscode op bekende kwetsbaarheden.
Bekijk meer integraties voor Atlassian Open DevOps
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.