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.