Partager via


Attacher un SBOM signé à une image conteneur

Une facture de logiciels (SBOM) est un manifeste de build qui répertorie les composants utilisés pour créer un logiciel. Un SBOM peut être utilisé pour suivre la provenance d’un logiciel, y compris des images conteneur, tout au long de son cycle de vie. Cet article vous montre comment créer un SBOM pour une image conteneur, le signer et l’attacher à l’image à l’aide des outils CLI. D’autres approches sont possibles, notamment l’utilisation d’un pipeline CI/CD pour automatiser le processus.

Prérequis

Avant d’être, vérifiez que vous disposez des éléments suivants :

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • La dernière version d’Azure CLI installée et configurée pour votre abonnement.
  • Azure Container Registry (ACR) existant dans votre abonnement.
  • Interface CLI de notation installée.
  • ORAS CLI installé.
  • sbom-tool installé.

Connectez-vous à votre registre

Connectez-vous à votre ACR et obtenez le jeton d’accès de votre registre. Par exemple, les commandes suivantes utilisent Azure CLI pour se connecter à votre registre et définir le jeton d’accès de votre registre sur la PASSWORD variable d’environnement.

# Update the ACR_NAME variable with the name of your registry
ACR_NAME=<acr-name>
PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)

Remarque

ACR et ORAS prennent en charge plusieurs options d’authentification pour les utilisateurs et l’automatisation du système. Cet article utilise une identité individuelle à l’aide d’un jeton Azure. Pour plus d’options d’authentification, consultez Authentifier avec un registre de conteneurs Azure.

Générer et envoyer (push) une image conteneur

Permet az acr build de générer et d’envoyer (push) une image conteneur à votre registre.

REPO=net-monitor
TAG=v1
REGISTRY=$ACR_NAME.azurecr.io
IMAGE=$REGISTRY/${REPO}:$TAG
IMAGE_SOURCE=https://github.com/wabbit-networks/net-monitor.git#main

az acr build -r $ACR_NAME -t $IMAGE $IMAGE_SOURCE

Se connecter avec l’interface CLI notation

Permet notation login de vous connecter à votre registre.

Important

Lorsque vous utilisez le jeton d’accès pour votre ACR, vous devez l’utiliser 00000000-0000-0000-0000-000000000000 comme nom d’utilisateur.

export USER_NAME="00000000-0000-0000-0000-000000000000"
notation login -u $USER_NAME -p $PASSWORD $REGISTRY

Signer l’image

Permet notation sign de signer l’image.

Important

Vous devez disposer d’un certificat de signature et d’une paire de clés pour signer l’image. Par exemple, générer, signer et vérifier des images conteneur à l’aide d’azure Key Vault et d’un certificat de signature à l’aide d’Azure Key Vault montre comment utiliser Azure Key Vault pour créer un certificat de signature et une paire de clés.

notation sign $IMAGE

Permet notation ls de répertorier les signatures sur l’image.

notation ls $IMAGE

L’exemple de sortie suivant montre la signature sur l’image.

<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
└── application/vnd.cncf.notary.signature
    └── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556

Créer un SBOM

Permet sbom-tool de créer un SBOM pour l’image. Par exemple, les commandes suivantes créent un SBOM pour l’image et le stockent dans le ./sbom répertoire.

SBOM_DIR=./sbom
PACKAGE_SUPPLIER=MyCompany
PACKAGE_NAME=TestProject
PACKAGE_VERSION=1.0.0
mkdir $SBOM_DIR
sbom-tool generate -m $SBOM_DIR -di $IMAGE -ps $PACKAGE_SUPPLIER -pn $PACKAGE_NAME -pv $PACKAGE_VERSION

Attacher le SBOM à l’image

Permet oras attach d’attacher le SBOM à l’image. Par exemple, la commande suivante joint le manifest.spdx.json fichier à l’image.

SBOM_FILE=$SBOM_DIR/_manifest/spdx_2.2/manifest.spdx.json
oras attach $IMAGE $SBOM_FILE --artifact-type example/sbom

Signer la SBOM

Permet oras discover d’obtenir la synthèse pour le SBOM.

oras discover $IMAGE -o tree

L’exemple de sortie suivant montre des synthèses pour la signature et l’image.

$ oras discover $IMAGE -o tree

<acr-name>.azurecr.io/net-monitor@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
├── example/sbom
│   └── sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
    └── sha256:111222333444555666777888999000aaabbbcccdddeeefff1112223334445556

Permet notation sign de signer le SBOM à l’aide de la valeur de synthèse du SBOM à partir de la commande précédente.

SBOM=$REGISTRY/${REPO}@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
notation sign $SBOM

Permet notation ls de répertorier les signatures sur le SBOM.

notation ls $SBOM

L’exemple suivant montre la signature sur le SBOM.

$ notation ls $SBOM

<acr-name>.azurecr.io/net-monitor@sha256:fffeeedddcccbbbaaa000999888777666555444333222111fffeeedddcccbbba
└── application/vnd.cncf.notary.signature
    └── sha256:fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321

Étapes suivantes

Pour plus d’informations, consultez la vue d’ensemble de chaque étape :