Prérequis
Avant de commencer à générer des attestations d'artefacts, vous devez connaître leur nature et savoir quand les utiliser. Consultez Attestations d’artefacts.
Génération d’attestations d’artefact pour vos builds
Vous pouvez utiliser GitHub Actions pour générer des attestations d’artefacts qui établissent la provenance du build pour des artefacts tels que les binaires et les images de conteneurs.
Pour générer une attestation d’artefact, vous devez :
- Vérifier que vous disposez des autorisations appropriées configurées dans votre flux de travail.
- Inclure une étape dans votre flux de travail qui utilise l’action
attest-build-provenance
.
Lorsque vous exécutez vos flux de travail mis à jour, ils génèrent vos artefacts et génèrent une attestation d’artefact qui établit la provenance du build. Vous pouvez afficher les attestations sous l’onglet Actions de votre référentiel. Pour plus d’informations, consultez le référentiel attest-build-provenance
.
Génération d’une provenance de build pour les fichiers binaires
-
Dans le flux de travail qui génère le fichier binaire que vous souhaitez attester, ajoutez les autorisations suivantes.
permissions: id-token: write contents: read attestations: write
-
Après l’étape de génération du fichier binaire, ajoutez l’étape suivante.
- name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-path: 'PATH/TO/ARTIFACT'
La valeur du paramètre
subject-path
doit être définie sur le chemin d’accès au fichier binaire que vous souhaitez attester.
Génération d’une provenance de build pour les images conteneur
-
Dans le flux de travail qui génère l’image conteneur que vous souhaitez attester, ajoutez les autorisations suivantes.
permissions: id-token: write contents: read attestations: write packages: write
-
Après l’étape de génération de l’image, ajoutez l’étape suivante.
- name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} subject-digest: 'sha256:fedcba0...' push-to-registry: true
La valeur du paramètre
subject-name
doit spécifier le nom complet de l’image. Par exemple,ghcr.io/user/app
ouacme.azurecr.io/user/app
. N’incluez pas de balise dans le nom de l’image.La valeur du paramètre
subject-digest
doit correspondre au résumé SHA256 du sujet de l’attestation, sous la formesha256:HEX_DIGEST
. Si votre flux de travail utilisedocker/build-push-action
, vous pouvez utiliser la sortiedigest
de cette étape pour fournir la valeur. Pour plus d’informations sur l’utilisation des sorties, consultez « Workflow syntax for GitHub Actions. »
Génération d’une attestation pour une nomenclature logicielle (SBOM)
Vous pouvez générer des attestations SBOM signées pour les artefacts de flux de travail.
Pour générer une attestation pour un SBOM, vous devez :
- Vérifier que vous disposez des autorisations appropriées configurées dans votre flux de travail.
- Créez un SBOM pour votre artefact. Pour plus d’informations, consultez
anchore-sbom-action
dans la GitHub Marketplace. - Inclure une étape dans votre flux de travail qui utilise l’action
attest-sbom
.
Lorsque vous exécutez vos flux de travail mis à jour, ils génèrent vos artefacts et génèrent une attestation SBOM. Vous pouvez consulter les attestations dans l’onglet Actions de votre référentiel. Pour plus d’informations, consultez le référentiel d’actions attest-sbom
.
Génération d’une attestation SBOM pour les fichiers binaires
-
Dans le flux de travail qui génère le fichier binaire que vous souhaitez attester, ajoutez les autorisations suivantes.
permissions: id-token: write contents: read attestations: write
-
Après l’étape de génération du fichier binaire, ajoutez l’étape suivante.
- name: Generate SBOM attestation uses: actions/attest-sbom@v2 with: subject-path: 'PATH/TO/ARTIFACT' sbom-path: 'PATH/TO/SBOM'
La valeur du paramètre
subject-path
doit être définie sur le chemin d’accès du fichier binaire décrit par SBOM. La valeur du paramètresbom-path
doit être définie sur le chemin d’accès du fichier SBOM que vous avez généré.
Génération d’une attestation SBOM pour les images conteneur
-
Dans le flux de travail qui génère l’image conteneur que vous souhaitez attester, ajoutez les autorisations suivantes.
permissions: id-token: write contents: read attestations: write packages: write
-
Après l’étape de génération de l’image, ajoutez l’étape suivante.
- name: Generate SBOM attestation uses: actions/attest-sbom@v2 with: subject-name: ${{ env.REGISTRY }}/PATH/TO/IMAGE subject-digest: 'sha256:fedcba0...' sbom-path: 'sbom.json' push-to-registry: true
La valeur du paramètre
subject-name
doit spécifier le nom complet de l’image. Par exemple,ghcr.io/user/app
ouacme.azurecr.io/user/app
. N’incluez pas de balise dans le nom de l’image.La valeur du paramètre
subject-digest
doit correspondre au résumé SHA256 du sujet de l’attestation, sous la formesha256:HEX_DIGEST
. Si votre flux de travail utilisedocker/build-push-action
, vous pouvez utiliser la sortiedigest
de cette étape pour fournir la valeur. Pour plus d’informations sur l’utilisation des sorties, consultez « Workflow syntax for GitHub Actions. »La valeur du paramètre
sbom-path
doit être définie sur le chemin d’accès du fichier SBOM au format JSON que vous souhaitez attester.
Vérifier les attestations d’artefacts avec le GitHub CLI
Vous pouvez valider les attestations d’artefact pour les fichiers binaires et les images conteneur et valider les attestations SBOM à l’aide de GitHub CLI. Pour plus d’informations, consultez la section attestation
du manuel GitHub CLI.
Remarque
Ces commandes supposent que vous utilisez un environnement en ligne. Si vous utilisez un environnement hors connexion ou en air gap, consultez « Vérification des attestations hors connexion ».
Vérification d’une attestation d’artefact pour les fichiers binaires
Pour vérifier les attestations d’artefact pour les fichiers binaires, utilisez la commande GitHub CLI suivante.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
Vérification d’une attestation d’artefact pour les images conteneur
Pour vérifier les attestations d’artefacts pour les images conteneurs, vous devez fournir le FQDN de l’image préfixé par oci://
au lieu du chemin d’accès à un fichier binaire. Vous pouvez utiliser la commande GitHub CLI suivante.
docker login ghcr.io gh attestation verify oci://ghcr.io/ORGANIZATION_NAME/IMAGE_NAME:test -R ORGANIZATION_NAME/REPOSITORY_NAME
docker login ghcr.io
gh attestation verify oci://ghcr.io/ORGANIZATION_NAME/IMAGE_NAME:test -R ORGANIZATION_NAME/REPOSITORY_NAME
Vérification d’une attestation pour les SBOM
Pour vérifier les attestations SBOM, vous devez fournir l’indicateur --predicate-type
pour référencer un prédicat non défini par défaut. Pour plus d’informations, consultez Prédicats approuvés dans le référentiel in-toto/attestation
.
Par exemple, l’action attest-sbom
prend actuellement en charge les prédicats SPDX ou CycloneDX SBOM. Pour vérifier une attestation SBOM au format SPDX, vous pouvez utiliser la commande GitHub CLI suivante.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \ -R ORGANIZATION_NAME/REPOSITORY_NAME \ --predicate-type https://spdx.dev/Document/v2.3
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
-R ORGANIZATION_NAME/REPOSITORY_NAME \
--predicate-type https://spdx.dev/Document/v2.3
Pour afficher plus d’informations sur l’attestation, référencez l’indicateur --format json
. Cela peut être particulièrement utile lors de la révision des attestations SBOM.
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \ -R ORGANIZATION_NAME/REPOSITORY_NAME \ --predicate-type https://spdx.dev/Document/v2.3 \ --format json \ --jq '.[].verificationResult.statement.predicate'
gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
-R ORGANIZATION_NAME/REPOSITORY_NAME \
--predicate-type https://spdx.dev/Document/v2.3 \
--format json \
--jq '.[].verificationResult.statement.predicate'
Étapes suivantes
Pour conserver vos attestations pertinentes et gérables, vous devez supprimer les attestations qui ne sont plus nécessaires. Consultez Gestion du cycle de vie des attestations d'artefacts.