Skip to main content

Utilisation d’attestations d’artefacts et de flux de travail réutilisables pour atteindre le niveau 3 du build SLSA v1

La création de logiciels avec des flux de travail réutilisables et des attestations d’artefacts peut simplifier la sécurité de votre chaîne d’approvisionnement et vous aider à atteindre le niveau 3 du build SLSA v1.0.

Prérequis

Avant de commencer ce guide, vous devez connaître :

Étape 1 : configuration de vos builds

Tout d’abord, nous devons élaborer des builds avec des attestations d’artefacts et un flux de travail réutilisable.

Création de builds avec un flux de travail réutilisable

Si vous n’utilisez pas déjà des flux de travail réutilisables pour développer votre logiciel, vous devrez intégrer vos étapes de développement dans un flux de travail réutilisable.

Créer des builds avec des attestations d’artefact

Le flux de travail réutilisable que vous utilisez pour créer votre logiciel doit également générer des attestations d’artefacts pour établir la provenance de la création de builds.

Lorsque vous utilisez un flux de travail réutilisable pour générer des attestations d’artefacts, le flux de travail appelant et le flux de travail réutilisable doivent disposer des autorisations suivantes.

YAML
permissions:
  attestations: write
  contents: read
  id-token: write

Si vous créez des images conteneur, vous devez également inclure l’autorisation packages: write.

Étape 2 : vérification des attestations d’artefact générées avec un flux de travail réutilisable

Pour vérifier les attestations d’artefact générées avec vos builds, vous pouvez utiliser gh attestation verify à partir de l’interface CLI de GitHub.

La commande gh attestation verify nécessite l’utilisation des indicateurs --owner ou --repo. Ces indicateurs font deux choses.

  • Ils indiquent à gh attestation verify à quel endroit récupérer l’attestation. Il s’agit toujours du flux de travail de l’appelant.
  • Ils indiquent à gh attestation verify l’emplacement du flux de travail qui a effectué la signature. Il s’agit toujours du flux de travail qui utilise l’action attest-build-provenance, qui peut être un flux de travail réutilisable.

Vous pouvez utiliser des indicateurs optionnels avec la commande gh attestation verify.

  • Si votre flux de travail réutilisable ne se trouve pas dans le même référentiel que le flux de travail de l’appelant, utilisez l’indicateur --signer-repo pour spécifier le référentiel qui contient le flux de travail réutilisable.
  • Si vous souhaitez que l’attestation d’un artefact soit signée à l’aide d’un flux de travail spécifique, utilisez l’indicateur --signer-workflow pour indiquer le fichier de flux de travail qui doit être utilisé.

Par exemple, si votre flux de travail appelant est ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml et qu’il utilise REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml vous pouvez effectuer les opérations suivantes :

Bash
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY

Ou si vous souhaitez spécifier le flux de travail exact :

Bash
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY