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.

Note

Les attestations d’artefact sont en version bêta publique et peuvent être modifiées.

Introduction

Les attestations d’artefact vous permettent de créer des garanties de provenance et d’intégrité non vérifiables pour le logiciel que vous créez.

Mais n’oubliez pas qu’en soi, les attestations d’artefacts fournissent des liens, comme les instructions de génération avec lesquelles un artefact a été créé, qui répond au niveau 2 du build SLSA v1.0. Pour prendre une décision éclairée en matière de risque, il vous appartient de suivre ces liens et d’évaluer ces instructions de construction.

Vous pouvez effectuer cette étape en exigeant que les builds utilisent des instructions de génération connues et approuvées. Pour ce faire, vous pouvez utiliser votre build dans un flux de travail réutilisable que de nombreux référentiels de votre organisation partagent. Les flux de travail réutilisables peuvent fournir une isolation entre le processus de génération et le flux de travail appelant afin de répondre au niveau de build 3 de SLSA v1.0.

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. Pour plus d’informations sur l’écriture et l’appel d’un flux de travail réutilisable, consultez «Réutilisation des workflows ».

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. Pour plus d’informations, consultez « Utilisation d’attestations d’artefact pour établir la provenance des 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

Conclusion

Désormais, vous créez et signez vos artefacts dans un flux de travail réutilisable, qui peut fournir l’isolation requise par le niveau 3 du build SLSA v1.0. Vous pouvez vérifier que les artefacts sont construits avec des instructions de construction connues et approuvées en exigeant que votre artefact ait été construit avec un flux de travail spécifique, réutilisable ou non.