Aller au contenu

Software Bill Of Materials (SBOM)


BoostSecurity permet de collecter l'inventaire imbriqué de tous les composants open-source et tiers dans le code de votre projet.

La collecte des SBOMs des projets est aussi simple que de configurer le module de scan SBOM de BoostSecurity dans les workflows des projets, et les inventaires sont générés à chaque commit sur les branches par défaut des projets.

En plus de rapporter les inventaires des composants, BoostSecurity rapporte également les vulnérabilités de sécurité connues pour ces composants.


Prise en main


La première étape pour activer la génération de SBOM pour votre projet est de configurer le scanner SBOM. Le scanner SBOM s'exécute chaque fois qu'un commit est effectué sur la branche par défaut et collecte l'inventaire des composants.

Note

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

Deux versions de scanners SBOM sont disponibles pour générer l'inventaire SBOM, qu'il soit généré à partir du dépôt de code source ou à partir de l'artefact image de conteneur généré.

Note

Il ne peut y avoir qu'un seul scanner sortant du SBOM par projet.


Module de Scanner SBOM à partir du Code Source


Pour ajouter le scanner SBOM au workflow afin de collecter l'inventaire à partir du code source, ajoutez un fichier YAML de workflow avec la configuration suivante :

Actions GitHub

```yml
name: BoostSecurity
on:
  workflow_dispatch:
  push:
    branches:
      - main
      - master

jobs:
  boost-sbom:
    name: SBOM
    if: github.event_name != 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Upload SBOM
      - 
        uses: boostsecurityio/boostsec-scanner-github@v4
        with:
          registry_module: boostsecurityio/trivy-sbom
          api_token: ${{ secrets.BOOST_API_TOKEN }}
```

Le scanner SBOM de BoostSecurity collectera l'inventaire des composants lors du prochain commit.


Module de Scanner SBOM pour Images de Conteneurs


Les inventaires des composants peuvent également être générés à partir d'images de conteneurs. Lors de la génération du SBOM à partir d'images de conteneurs, les paquets des systèmes d'exploitation et d'autres composants récupérés à partir des dépendances peuvent être rapportés.

Pour ajouter le scanner SBOM au workflow afin de collecter l'inventaire à partir des images de conteneurs, ajoutez le module de scanner BoostSecurity après l'étape de génération de l'image. Par exemple :

Actions GitHub

```yml
on:
  workflow_dispatch:
  push:
    branches:
      - main

jobs:
  boost-image-sbom:
    name: Boost Container
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      ### Dans cette étape, vous construiriez
      ### votre image de conteneur
      ### l'étape ici est juste un exemple
      - name: Build Image example
        run: docker build . -t <votre nom d'image>
      - name: Run Boot Trivy SBOM for Image
        uses: boostsecurityio/boostsec-scanner-github@v4
        env:
          BOOST_IMAGE_NAME: <votre nom d'image>
        with:
          registry_module: boostsecurityio/trivy-sbom-image
          api_token: ${{ secrets.BOOST_API_TOKEN }}
```

SBOM pour Plusieurs Images de Conteneurs par Dépôt


Comme décrit ci-dessus, l'inventaire des images est associé au projet lors de la configuration du workflow pour scanner les images de conteneurs. Cependant, un dépôt mono peut produire plusieurs images de conteneurs.

Dans ce cas, le module de scanner peut associer une étiquette à l'inventaire SBOM produit pour chaque image de conteneur.

Ce faisant, le service SBOM suit et rapporte l'inventaire pour chaque image. Un exemple de configuration de workflow est le suivant :

Actions GitHub

```yml
on:
  workflow_dispatch:
  push:
    branches:
      - main

jobs:
  boost-image-sbom:
    name: Boost Container
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      ### Dans cette étape, vous construiriez
      ### votre image de conteneur
      ### l'étape ici est juste un exemple
      - name: Build first Image example
        run: .... construction d'image pour la première image .....
      - name: Run Boot Trivy SBOM for Image - asset 1
        uses: boostsecurityio/boostsec-scanner-github@v4
        env:
          BOOST_IMAGE_NAME: <votre nom de première image>
        with:
          api_token: ${{ secrets.BOOST_API_TOKEN }}
          registry_module: boostsecurityio/trivy-sbom-image
          scan_label: <étiquette de la première image>
      - name: Build second Image example
        run: .... construction d'image pour la deuxième image .....
      - name: Run Boot Trivy SBOM for Image - asset 2
        uses: boostsecurityio/boostsec-scanner-github@v4
        env:
          BOOST_IMAGE_NAME: <votre nom de deuxième image>
        with:
          api_token: ${{ secrets.BOOST_API_TOKEN }}
          registry_module: boostsecurityio/trivy-sbom-image
          scan_label: <étiquette de la deuxième image>
```

L'argument supplémentaire scan_label définit l'étiquette pour l'inventaire SBOM sur l'actif spécifique. Dans la vue de liste des projets du service SBOM, le nom du projet pour l'inventaire de cet actif est <organisation>/<dépôt>/<étiquette>. Les étiquettes peuvent être utilisées pour les dépôts mono générant plusieurs images de conteneurs afin de générer des inventaires SBOM pour chaque image de conteneur dans le dépôt.