Kontinuerlig säkerhet
Ni ska använda olika verktyg för att hitta säkerhetsproblem i Microbloggen och lägga till dem i er CI kedja.
#Krav
När ni löser fel som hittas med nedanstående verktyg och commitar koden som löser felen, skriv tydliga commit meddelanden som förklarar vilket fel ni löser.
- I redovisningstexten ska ni förklara vilka fel ni hittade och löste.
Använd SAST verktyget Bandit för att hitta möjliga säkerhetshål i Python koden och lös dem.
- Lägg till det som ett beroende i
requirements/test.txt. - Kör Bandit på koden i mappen
app. Vi behöver inte köra det mot övrig kod i repot. - Lägg till ett Make kommando som kör bandit på er kod.
- Lös de fel som hittas.
- Avgör om de fel som hittas är false-positiv eller inte. Om false-positive kan ni lägga till så felet ignoreras.
- Lägg till det som ett beroende i
Använd skanner verktyget Trivy för att hitta möjliga säkerhetshål.
- Använda
target:imageför att söka igenom er Microblog produktions image.- Bygg först er image lokalt för att köra trivy på den.
- Kör med
docker run -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image --scanners vuln,secret,misconfig --no-progress --severity HIGH,CRITICAL --exit-code 1 <er docker container>.- Ersätt
<er docker container>med namnet på er container, t.ex.local-microblog:latest
- Ersätt
fsför att söka igenom hela repo mappen. Ni kan exkludera.venvmappen.- I terminalen stå i ert repo och kör med
@docker run --rm -v .:/repo -w /repo aquasec/trivy:latest fs --scanners vuln,secret,misconfig --severity HIGH,CRITICAL --exit-code 1 --no-progress --skip-dirs .venv,venv .
- I terminalen stå i ert repo och kör med
- Lägg till make kommando för båda
target. - Lös felen som hittas.
- Använda
Använd Docker lint verktyget Dockle för att hitta möjliga säkerhetshål i er produktions image.
- Lägg till make kommando som kör Dockle på er produktions image.
- Lös de fel som hittas.
- Kör det med:
VERSION=$(curl --silent 'https:\/\/api.github.com/repos/goodwithtech/dockle/releases/latest' | \
grep '"tag_name":' | \
sed -E 's/.*"v([^"]+)".*/\1/') \
&& docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
goodwithtech/dockle:v${VERSION} <YOUR_IMAGE_NAME>
- Skapa ett nytt workflow I Github Actions som kör Bandit, Trivy och Dockler på samma sätt som beskrivet ovanför.
- Ert nya workflow ska köras före era CD workflow och måste passera för att ni ska pusha er Docker image och driftsätta den.
- Det finns en färdig
dockleAction man kan använda men ni ska inte göra det. Den söker även er “base image”, vi vill inte det och jag har inte hittat något sätt att stänga av det. Kör istället som vanligt via docker.
#Revision history
- 2023-11-17: (A, aar) Första versionen.
