slogan3

Ontwerp een Dockerfile voor geautomatiseerde veiligheidsscans

description

Met deze prompt kun je proactief kwetsbaarheden in je Docker-images identificeren voordat ze in productie worden ingezet. Dit vermindert veiligheidsrisico's, verhoogt de betrouwbaarheid van je containeromgeving en integreert beveiliging in je ontwikkelproces, wat beter is dan handmatige of achteraf uitgevoerde scans.

prompt

Help me een Dockerfile te ontwerpen of te verbeteren die automatische beveiligingsscans integreert tijdens het buildproces om kwetsbaarheden vroegt ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een verbeterde Dockerfile die Trivy integreert voor beveiligingsscans tijdens het buildproces: ```dockerfile FROM node:14 # Installeer benodigde tools voor de scan RUN apt-get update && apt-get install -y wget # Download en installeer Trivy RUN wget https://github.com/aquasecurity/trivy/releases/latest/download/trivy_0.35.0_Linux-64bit.tar.gz && \ tar -xzvf trivy_0.35.0_Linux-64bit.tar.gz && \ mv trivy /usr/local/bin/ # Voer npm install uit WORKDIR /app COPY package*.json ./ RUN npm install # Kopieer de rest van de applicatie COPY . . # Voer de beveiligingsscan uit RUN trivy fs --exit-code 1 --no-progress /app # Start de applicatie CMD ["node", "app.js"] ``` **Uitleg:** - Installeert Trivy in de container tijdens build. - Voert `trivy fs` uit op de map `/app` na het kopiëren van je code. - De optie `--exit-code 1` zorgt dat de build faalt bij het vinden van kwetsbaarheden. - Het is aanbevolen om Trivy te gebruiken met de laatste versie door de URL aan te passen indien nodig. **Let op:** - Voor een continue integratie workflow kan je dit in een CI/CD pipeline integreren, zodat de scan automatisch wordt uitgevoerd tijdens het buildproces. - Zorg dat je voldoende rechten hebt en dat de scan niet te lang duurt voor je build. Wil je nog verdere optimalisaties of integraties?
provider: deepseek
model: deepseek-chat
Hier is een verbeterde Dockerfile met geïntegreerde Trivy beveiligingsscan tijdens het buildproces: ```dockerfile # Multi-stage build voor betere beveiliging en kleinere image FROM node:14-alpine AS builder # Werkdirectory instellen WORKDIR /app # Alleen package files kopiëren voor betere caching COPY package*.json ./ # Installatie met security flags RUN npm ci --only=production --audit=false # Source code kopiëren COPY . . # Beveiligingsscan stage FROM aquasec/trivy:latest AS security-scan COPY --from=builder /app /scan-app RUN trivy filesystem --exit-code 1 --severity HIGH,CRITICAL /scan-app # Productie stage FROM node:14-alpine AS production # Beveiligingsmaatregelen RUN addgroup -g 1001 -S nodejs && \ adduser -S nextjs -u 1001 WORKDIR /app # Gebruiker wisselen naar niet-root USER nextjs # Alleen noodzakelijke bestanden kopiëren COPY --from=builder --chown=nextjs:nodejs /app . # Health check toevoegen HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD node healthcheck.js CMD ["node", "app.js"] ``` **Aanvullende verbeteringen en beveiligingsmaatregelen:** 1. **Build script met Trivy integratie** (`build-with-scan.sh`): ```bash #!/bin/bash echo "Starten beveiligingsscan..." docker build --target security-scan -t myapp-security-scan . if [ $? -eq 0 ]; then echo "Beveiligingsscan geslaagd - geen kritieke kwetsbaarheden gevonden" echo "Bouwen productie image..." docker build -t myapp:latest . else echo "BEVEILIGINGSWAARSCHUWING: Kritieke kwetsbaarheden gedetecteerd!" exit 1 fi ``` 2. **Docker Compose met security scanning** (`docker-compose.yml`): ```yaml version: '3.8' services: app: build: context: . target: production security_opt: - no-new-privileges:true read_only: true tmpfs: - /tmp ``` 3. **GitHub Actions workflow** (`.github/workflows/security-scan.yml`): ```yaml name: Security Scan on: [push, pull_request] jobs: security-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: scan-type: 'fs' scan-ref: '.' format: 'sarif' output: 'trivy-results.sarif' ``` **Belangrijkste beveiligingsverbeteringen:** - Multi-stage build minimaliseert aanvalsoppervlak - Non-root gebruiker voor container - Read-only filesystem in productie - Automatische fail bij kritieke kwetsbaarheden - Alpine base image voor kleinere footprint - Geïntegreerde health checks **Gebruik:** ```bash # Scan uitvoeren chmod +x build-with-scan.sh ./build-with-scan.sh # Of handmatig scannen trivy image mijn-app:latest ``` Deze setup zorgt ervoor dat elke build automatisch gescand wordt op kwetsbaarheden en faalt bij kritieke beveiligingsproblemen.