Aller au contenu

CircleCI

L'intégration BoostSecurity CI pour CircleCI fournit un orb avec à la fois un job s'exécutant sur un machine executor et une commande à utiliser dans vos configurations de pipeline. Les deux méthodes d'appel exécuteront le BoostSecurity Scanner pour analyser les dépôts à la recherche de vulnérabilités et téléverser les résultats vers le service BoostSecurity.

L'Orb CircleCI est publié sur le registre et peut être trouvé ici. La configuration à ajouter à votre .circleci/config.yml dépend de si le scanner s'exécute sur le code source du projet ou sur un artefact produit, comme une image de conteneur construite.

La première étape pour configurer BoostSecurity pour CircleCI est de créer un context CircleCI appelé boost-security contenant un secret nommé BOOST_API_TOKEN avec la CLE API de votre organisation.


Job CircleCI pour l'analyse du code source


Cette configuration est appropriée pour les modules de scanner pour l'analyse SAST ou l'inventaire SBOM à partir du code source, par exemple.

Note

Même si le workflow est configuré pour exécuter le scanner SBOM sur les pull requests, le scanner SBOM ne collecte pas l'inventaire des composants sur les pull requests.

Lorsque vous configurez votre CircleCI pour exécuter le scan BoostSecurity à partir du code source du projet, ajoutez le fragment suivant à votre .circleci/config.yml :

version: '2.1'
orbs:
  boost-security-scanner: boostsecurityio/scanner@4

workflows:
  build:
    jobs:
      steps:
        - boost-security-scanner/scan:
            context: boost-security
            registry_module: boostsecurityio/semgrep
        - when:
            condition:
              or:
                - equal: [ main, << pipeline.git.branch >> ]
            steps:
              - boost-security-scanner/scan:
                  context: boost-security
                  registry_module: boostsecurityio/trivy-sbom             

  version: 2
L'exemple ci-dessus montre que le module semgrep s'exécute à la fois sur les commits sur la branche main et sur les pull requests. Cependant, le module de scanner trivy-sbom pour le service SBOM s'exécute uniquement sur les commits sur la branche main.

Note

Dans l'exemple ci-dessus, les modules de scanner semgrep et trivy-sbom sont configurés pour l'utilisation. Toutefois, vous pouvez configurer le module de scanner requis. Référez-vous à Registry Modules pour les modules de scanner disponibles.


Job CircleCI pour l'analyse des artefacts générés


Cette configuration est appropriée pour les modules de scanner nécessitant d'analyser des artefacts générés par le processus de build. Par exemple, les modules de scanner générant un SBOM à partir d'images de conteneur ou recherchant des vulnérabilités doivent d'abord créer l'image de conteneur.

Pour permettre l'analyse des artefacts générés, ajoutez le fragment lié au module du scanner BoostSecurity dans votre workflow de build dans .circleci/config.yml, à l'endroit approprié après l'étape où l'artefact a été généré. Notez que l'exemple ci-dessous concerne l'analyse d'une image de conteneur pour rechercher des vulnérabilités.

version: '2.1'
orbs:
  boost-security-scanner: boostsecurityio/scanner@4

workflows:
  ... some environment specific declarations and steps

jobs:
  ... some test and other jobs

  build-push:
    executor: default
    steps:
      ... some steps specific to your environment
      - checkout
      - run:
          command: make docker.build
      - run:
          command: make docker.push
      - when:
          condition:
            or:
              - equal: [ main, << pipeline.git.branch >> ]
          steps:
            - run:
                name: make docker.echo.tag
                command: |
                  BOOST_IMAGE_NAME=$(make docker.echo.tag)
                  echo "export BOOST_IMAGE_NAME=${BOOST_IMAGE_NAME}" | tee -a $BASH_ENV
            - boost-security-scanner/scan:
                registry_module: boostsecurityio/trivy-image
  version: 2

La condition - equal: [ main, << pipeline.git.branch >> ] fait en sorte que le module d'analyse d'image s'exécute uniquement sur les commits vers main, et ce seulement après que l'image a été construite. La commande BOOST_IMAGE_NAME=$(make docker.echo.tag) et echo "export BOOST_IMAGE_NAME=${BOOST_IMAGE_NAME}" | tee -a $BASH_ENV définit la variable d'environnement requise par le module Trivy de BoostSecurity pour savoir quelle image analyser.