{"meta":{"title":"Application des attestations d’artefacts à l’aide d’un contrôleur d’admission Kubernetes","intro":"Utilisez un contrôleur d’admission pour imposer des attestations d’artefact dans votre cluster Kubernetes.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/how-tos","title":"Guides pratiques"},{"href":"/fr/actions/how-tos/secure-your-work","title":"Sécurisez votre travail"},{"href":"/fr/actions/how-tos/secure-your-work/use-artifact-attestations","title":"Utilisez les attestations d’artefacts"},{"href":"/fr/actions/how-tos/secure-your-work/use-artifact-attestations/enforce-artifact-attestations","title":"Appliquer les attestations relatives aux artefacts"}],"documentType":"article"},"body":"# Application des attestations d’artefacts à l’aide d’un contrôleur d’admission Kubernetes\n\nUtilisez un contrôleur d’admission pour imposer des attestations d’artefact dans votre cluster Kubernetes.\n\n> \\[!NOTE] 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`l’action ](https://github.com/actions/attest) comme documenté dans [Générer la provenance de build pour les images de conteneur](/fr/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds#generating-build-provenance-for-container-images). Cela est requis pour que le contrôleur de stratégie vérifie l’attestation.\n\n## Bien démarrer avec le contrôleur d’admission Kubernetes\n\nPour configurer un contrôleur d’admission afin d’appliquer les attestations d’artefacts GitHub, vous devez :\n\n1. ```\n          [Déployer le contrôleur de stratégie Sigstore](#deploy-the-sigstore-policy-controller).\n   ```\n2. ```\n          [Ajoutez `TrustRoot` et `ClusterImagePolicy` de GitHub à votre cluster](#add-the-github-trustroot-and-a-clusterimagepolicy).\n   ```\n3. ```\n          [Activer la politique dans votre espace de noms](#enable-the-policy-in-your-namespace).\n   ```\n\n### Déployer le contrôleur de stratégie Sigstore\n\nLe contrôleur de politique Sigstore a été intégré et est désormais disponible via un [Helm chart](https://github.com/sigstore/helm-charts). Avant de commencer, vérifiez que les prérequis suivants sont remplis :\n\n* Un cluster Kubernetes avec la version 1.27 ou une version ultérieure\n* [Helm](https://helm.sh/docs/intro/install/) 3.0 ou une version ultérieure\n* [kubectl](https://kubernetes.io/docs/tasks/tools/)\n\nTout d’abord, installez le chart Helm qui déploie le contrôleur de politiques Sigstore :\n\n```bash copy\nhelm upgrade policy-controller --install --atomic \\\n  --create-namespace --namespace artifact-attestations \\\n  oci://ghcr.io/sigstore/helm-charts/policy-controller \\\n  --version 0.10.5\n```\n\nCela 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.\n\n### Ajoutez le GitHub `TrustRoot` et un `ClusterImagePolicy`\n\nUne fois que le contrôleur de stratégie a été déployé, vous devez ajouter le `TrustRoot` de GitHub et un `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`).\n\n```bash copy\nhelm upgrade trust-policies --install --atomic \\\n --namespace artifact-attestations \\\n oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \\\n --version v0.7.0 \\\n --set policy.enabled=true \\\n --set policy.organization=MY-ORGANIZATION\n```\n\nVous avez désormais installé la racine de confiance GitHub ainsi qu’une politique d’attestation des artefacts dans votre cluster. Cette stratégie rejette les artefacts qui ne proviennent pas de votre organisation GitHub.\n\n### Activer la politique dans votre espace de noms\n\n> \\[!WARNING]\n> Cette stratégie n’est pas appliquée tant que vous ne spécifiez pas les espaces de noms auxquels elle doit s’appliquer.\n\nChaque 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 :\n\n```yaml\nmetadata:\n  labels:\n    policy.sigstore.dev/include: \"true\"\n```\n\nUne fois l’étiquette ajoutée, la politique d’attestation des artefacts GitHub sera appliquée dans l’espace de noms.\n\nVous pouvez aussi exécuter :\n\n```bash copy\nkubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true\n```\n\n### Images correspondantes\n\nPar défaut, la stratégie installée avec le `trust-policies` chart Helm vérifiera les attestations pour 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 de Helm `policy.images`, et `policy.exemptImages` pour spécifier une liste d'images à mettre en correspondance. Ces valeurs peuvent être définies dans une liste de motifs globaux qui correspondent aux noms d'image. La syntaxe globbing utilise la sémantique [filepath](https://pkg.go.dev/path/filepath#Match) de Go, avec en plus `**` pour correspondre à toute séquence de caractères, y compris les barres obliques.\n\nPar 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 :\n\n```bash copy\nhelm upgrade trust-policies --install --atomic \\\n --namespace artifact-attestations \\\n oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \\\n --version v0.7.0 \\\n --set policy.enabled=true \\\n --set policy.organization=MY-ORGANIZATION \\\n --set-json 'policy.exemptImages=[\"index.docker.io/library/busybox**\"]' \\\n --set-json 'policy.images=[\"ghcr.io/MY-ORGANIZATION/**\"]'\n```\n\nTous 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 spécifier le nom complet incluant le domaine et le globbing à double étoile pour correspondre à toutes les versions d'image : `index.docker.io/library/busybox**`.\n\nNotez que toute image que vous envisagez d’inclure *doit* avoir un modèle de 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.\n\n### Utilisation avancée\n\nPour afficher l’ensemble complet d’options que vous pouvez configurer avec le graphique Helm, vous pouvez exécuter l’une des commandes suivantes.\nPour les options du contrôleur de stratégie :\n\n```bash copy\nhelm show values oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5\n```\n\nPour les options de stratégie de confiance :\n\n```bash copy\nhelm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.7.0\n```\n\nPour plus d’informations sur le contrôleur de stratégie Sigstore, consultez la [documentation relative au contrôleur de stratégie Sigstore](https://docs.sigstore.dev/policy-controller/overview/)."}