Scanner l'horizon : Déplacer la sécurité vers la gauche dans la chaîne d'approvisionnement logicielle (3/12)

2024-12-14

Scanner l'horizon : Déplacer la sécurité vers la gauche dans la chaîne d'approvisionnement logicielle (3/12)

Machine-translated — the English original is authoritative.

La cybersécurité a longtemps été réactive, intervenant souvent après le déploiement pour traiter les vulnérabilités. Mais à l'ère des applications cloud-native, cette approche n'est plus suffisante. Déplacer la sécurité vers la gauche, c'est-à-dire l'intégrer dès les premières étapes du développement, permet aux organisations d'identifier et d'atténuer les risques avant qu'ils n'aient un impact sur la production.

La chaîne d'approvisionnement logicielle, qui comprend le code source, les systèmes de construction et les images de conteneurs, est une cible privilégiée pour les attaquants. En intégrant des outils de scan directement dans les flux de travail de développement, les organisations peuvent répondre aux exigences de NIS 2 et de DORA en matière de gestion proactive des risques et de pipelines de livraison de logiciels sécurisés.

Pourquoi le déplacement vers la gauche est important

Plus une vulnérabilité est détectée tôt, moins sa correction est coûteuse et chronophage. Déplacer la sécurité vers la gauche s'aligne parfaitement avec DORA, qui met l'accent sur la résilience et les mesures proactives. Par exemple, l'analyse du code source pendant le développement peut permettre de détecter les problèmes avant qu'ils ne se propagent en aval, réduisant ainsi les risques et maintenant la continuité opérationnelle.

Comment déplacer la sécurité vers la gauche avec Aqua CNAPP

  1. Analyse par lot des registries :
  2. Connectez Aqua à tous les dépôts de code source et aux registries d'images de conteneurs.
  3. Configurez des analyses planifiées pour garantir que chaque nouvel artefact est analysé à la recherche de vulnérabilités, de configurations erronées et de secrets.

Image Registry Integration

Source Code Management Registry Integration

  1. Surveillance continue :

  2. Exploitez les programmes de tirage automatisés d'Aqua pour maintenir les analyses à jour à mesure que le nouveau code est validé ou que les images sont poussées vers le registry.

  3. Autonomisation des développeurs :

  4. Intégrez directement les résultats des analyses dans les flux de travail des développeurs à l'aide d'outils CI/CD. Les mécanismes de rétroaction d'Aqua fournissent des informations exploitables, permettant aux développeurs de corriger rapidement les problèmes sans quitter leurs environnements.

  5. Établir des références :

  6. Utilisez les résultats des analyses initiales pour créer une référence des vulnérabilités et des configurations erronées. Priorisez les corrections pour les problèmes critiques tout en surveillant les progrès au fil du temps.

Exemple pratique : Automatisation des analyses dans les pipelines CI/CD

Une configuration Aqua typique dans un pipeline CI/CD, utilisant Github Actions dans cet exemple, pourrait ressembler à ceci :


name: allthingsclowd APP 
on:
  push:
    branches:
      - main
  pull_request:
    branches: 
      - main

  workflow_dispatch:

env:
   DOCKER_REPOSITORY: allthingscloud # name of Docker Hub ID
   IMAGE_NAME: allthingsclowd-app
   IMAGE_TAG: ${{ github.run_number }} # $GITHUB_RUN_NUMBER

jobs:
  CI-Code:
    runs-on: ubuntu-22.04
    steps:

      - name: Checkout code
        uses: actions/checkout@v2

      - name: Integrity pipeline
        uses: aquasecurity/pipeline-enforcer-action@main
        with:
          aqua-key: ${{ secrets.AQUA_KEY }}
          aqua-secret: ${{ secrets.AQUA_SECRET }}
          verbose: true

      - name: Aqua code scanning(SCA,IaC, Secrets/Sensitive Data, Pipeline file and SAST)
        uses: docker://aquasec/aqua-scanner
        with:
          args: trivy fs --scanners config,vuln,secret --sast --reachability --package-json . 
          # To customize which severities to scan for, add the following flag: --severity UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
          # To enable SAST scanning, add: --sast
          # To enable npm/dotnet non-lock file scanning, add: --package-json / --dotnet-proj
        env:
          AQUA_KEY: ${{ secrets.AQUA_KEY }}
          AQUA_SECRET: ${{ secrets.AQUA_SECRET }}
          GITHUB_TOKEN: ${{ github.token }}
          TRIVY_RUN_AS_PLUGIN: 'aqua'

  CI-Build:
    needs: CI-Code
    runs-on: ubuntu-22.04

    steps:   

      - name: Checkout code
        uses: actions/checkout@v2

      - name: Integrity pipeline
        uses: aquasecurity/pipeline-enforcer-action@main
        with:
          aqua-key: ${{ secrets.AQUA_KEY }}
          aqua-secret: ${{ secrets.AQUA_SECRET }}
          verbose: true

      - name: Build application
        run: echo Application has been succesfully built   

      - name: Build image container
        run: |
          sudo docker build -t $DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG .

      - name: Login to Aqua Registry
        uses: docker/login-action@v1
        with:
          registry: registry.aquasec.com
          username: ${{ secrets.AQUA_REGISTRY_USERNAME }}
          password: ${{ secrets.AQUA_REGISTRY_PASS }}

      - name: Scanning container image
        run: |
          docker run --rm -v /var/run/docker.sock:/var/run/docker.sock registry.aquasec.com/scanner:2022.4 scan --register --registry "CI/CD_graham_images" --host ${{ secrets.AQUA_HOST }} --local $DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG --token ${{ secrets.AQUA_TOKEN }} --layer-vulnerabilities --no-verify --html > .github/workflows/scan-output.html

      - name: Docker Login & Push
        run: |
          echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
          docker push $DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG 
          docker tag $DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG $DOCKER_REPOSITORY/$IMAGE_NAME:latest
          docker push $DOCKER_REPOSITORY/$IMAGE_NAME:latest 

      - name: SBOM Generation
        run: |
          export BILLY_SERVER=https://billy.codesec.aquasec.com
          curl -sLo install.sh download.codesec.aquasec.com/billy/install.sh
          curl -sLo install.sh.checksum https://github.com/argonsecurity/releases/releases/latest/download/install.sh.checksum
          if ! cat install.sh.checksum | sha256sum ; then
          echo "install.sh checksum failed"
          exit 1
          fi
          BINDIR="." sh install.sh
          rm install.sh install.sh.checksum
          ./billy generate \
            --access-token "${{ github.token }}" \
            --aqua-key "${{ secrets.AQUA_KEY }}" \
            --aqua-secret "${{ secrets.AQUA_SECRET }}" \
            --artifact-path "$DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG"

  CD-Deploy_to_dev:

    needs: CI-Build
    runs-on: ubuntu-22.04

    steps: 

      - name: Checkout code
        uses: actions/checkout@v2

      - name: interity Pipeline
        uses: aquasecurity/pipeline-enforcer-action@main
        with:
          aqua-key: ${{ secrets.AQUA_KEY }}
          aqua-secret: ${{ secrets.AQUA_SECRET }}
          verbose: true

      - name: Setting K8s context
        uses: azure/k8s-set-context@v3
        with:
           method: kubeconfig
           kubeconfig: ${{ secrets.KUBE_CONFIG_GRAZ }}
           context: graz-dev-context


      - name: Deploying to Dev
        run: |
          export IMAGE_CONTAINER="docker.io/$DOCKER_REPOSITORY/$IMAGE_NAME:$IMAGE_TAG"
          sed -e "s#{{ IMAGE_CONTAINER }}#$IMAGE_CONTAINER#g" "./manifests/dev/deployment.yaml" |
          kubectl apply -f -
          kubectl apply -f ./manifests/dev/service.yaml

Cette automatisation garantit que chaque build est analysé à la recherche de vulnérabilités de haute gravité, fournissant un retour d'information immédiat aux développeurs.

Résumé

Déplacer la sécurité vers la gauche transforme la chaîne d'approvisionnement logicielle, autrefois point chaud de vulnérabilités, en une forteresse de résilience. En intégrant les outils d'analyse d'Aqua dans vos flux de travail, vous améliorez non seulement la sécurité, mais vous vous alignez également sur l'approche proactive de DORA en matière de résilience opérationnelle. Plus vous agissez tôt, plus vos défenses sont solides.

Originally published on allthingscloud.eu (2024-12-14).

← All posts