Remarque
Avant de poursuivre, vérifiez que vous avez activé la provenance de build pour les images de conteneur, notamment en définissant l’attribut push-to-registry
dans attest-build-provenance
l’action comme documenté dans Générer la provenance de build pour les images de conteneur. Cela est requis pour que le contrôleur de stratégie vérifie l’attestation.
Bien démarrer avec le contrôleur d’admission Kubernetes
Pour configurer un contrôleur d’admission afin d’appliquer des attestations d’artefact GitHub, vous devez :
- Déployer le contrôleur de stratégie Sigstore.
- Ajouter la
TrustRoot
de GitHub et uneClusterImagePolicy
à votre cluster. - Activer la stratégie dans votre espace de noms.
Déployer le contrôleur de stratégie Sigstore
Nous avons empaqueté le contrôleur de stratégie Sigstore sous la forme d’un graphique Helm distribué par GitHub. Avant de commencer, vérifiez que les prérequis suivants sont remplis :
- Un cluster Kubernetes avec la version 1.27 ou une version ultérieure
- Helm 3.0 ou une version ultérieure
- kubectl
Tout d’abord, installez le graphique Helm qui déploie le contrôleur de stratégie Sigstore :
helm upgrade policy-controller --install --atomic \ --create-namespace --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \ --version v0.12.0-github12
helm upgrade policy-controller --install --atomic \
--create-namespace --namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \
--version v0.12.0-github12
Cela installe le contrôleur de stratégie dans l’espace de noms artifact-attestations
. À ce stade, aucune stratégie n’a été configurée et aucune attestation ne sera appliquée.
Ajouter la TrustRoot
de GitHub et une ClusterImagePolicy
Une fois le contrôleur de stratégie déployé, vous devez ajouter la TrustRoot
de GitHub et une ClusterImagePolicy
à votre cluster. Utilisez le graphique Helm que nous fournissons pour effectuer cette opération. Veillez à remplacer MY-ORGANIZATION
par le nom de votre organisation GitHub (par exemple, github
ou octocat-inc
).
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.6.2 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.6.2 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION
Vous avez à présent installé la racine de confiance GitHub et une stratégie d’attestation d’artefact dans votre cluster. Cette stratégie rejette les artefacts qui ne proviennent pas de votre organisation GitHub.
Activer la stratégie dans votre espace de noms
Avertissement
Cette stratégie n’est pas appliquée tant que vous ne spécifiez pas les espaces de noms auxquels elle doit s’appliquer.
Chaque espace de noms de votre cluster peut appliquer indépendamment des stratégies. Pour activer la mise en œuvre dans un espace de noms, vous pouvez ajouter l’étiquette suivante à l’espace de noms :
metadata:
labels:
policy.sigstore.dev/include: "true"
Une fois l’étiquette ajoutée, la stratégie d’attestation d’artefact GitHub est appliquée dans l’espace de noms.
Vous pouvez aussi exécuter :
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
Images correspondantes
Par défaut, la stratégie installée avec le trust-policies
graphique Helm vérifie les attestations de toutes les images avant de les admettre dans le cluster. Si vous envisagez uniquement d’appliquer des attestations pour un sous-ensemble d’images, vous pouvez utiliser les valeurs policy.images
Helm et policy.exemptImages
spécifier une liste d’images à mettre en correspondance. Ces valeurs peuvent être définies sur une liste de modèles glob qui correspondent aux noms d’image. La syntaxe globbing utilise la sémantique go filepath, avec l’ajout de la correspondance à **
n’importe quelle séquence de caractères, y compris les barres obliques.
Par exemple, pour appliquer des attestations pour les images qui correspondent au modèle ghcr.io/MY-ORGANIZATION/*
et admettre busybox
sans attestation valide, vous pouvez exécuter :
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.6.2 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION \ --set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \ --set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.6.2 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION \
--set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \
--set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
Tous les modèles doivent utiliser le nom complet, même si les images proviennent de Docker Hub. Dans cet exemple, si nous voulons exempter l’image busybox
, nous devons fournir le nom complet incluant le domaine et la glob double étoile pour couvrir toutes les versions de l’image : index.docker.io/library/busybox**
.
Notez que toute image que vous envisagez d’admettre doit avoir un modèle glob correspondant dans la liste policy.images
. Si une image ne correspond à aucun modèle, elle sera rejetée. En outre, si une image correspond à la fois à policy.images
et policy.exemptImages
, elle sera rejetée.
Utilisation avancée
Pour afficher l’ensemble complet d’options que vous pouvez configurer avec le graphique Helm, vous pouvez exécuter l’une des commandes suivantes. Pour les options du contrôleur de stratégie :
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.12.0-github12
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.12.0-github12
Pour les options de stratégie de confiance :
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2
Pour plus d’informations sur le contrôleur de stratégie Sigstore, consultez la documentation relative au contrôleur de stratégie Sigstore.