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 3 du build SLSA v1.0.
Avant de commencer ce guide, vous devez connaître :
- Générer des attestations d’artefacts. Consultez « Utilisation d’attestations d’artefact pour établir la provenance des builds ».
- Écriture et utilisation de flux de travail réutilisables. Consultez « Réutilisation des workflows ».
É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.
permissions: attestations: write contents: read id-token: write
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’actionattest-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 :
gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
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 :
gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
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.