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 :