Utiliser le pipeline d'images sécurisées

Une fois votre pipeline d'images sécurisé créé, vous pouvez automatiser le workflow de génération d'images signées chaque fois que vous apportez des modifications au code source.

Cette page explique comment utiliser le pipeline d'images pour produire des images sécurisées et certifiées.

Avant de commencer

Créez le pipeline sécurisé d'images et familiarisez-vous avec les ressources créées par le pipeline.

Utiliser le pipeline

Le code source des images de base se trouve dans le dépôt baseimgfct-[some number]-containers de l'organisation GitHub que vous avez spécifiée lors de la configuration du pipeline d'images sécurisé. Pour mettre à jour une image, modifiez le fichier concerné dans le dépôt et envoyez une demande d'extraction avec les modifications à un membre de l'équipe pour examen. Lorsque vous créez la demande d'extraction, Cloud Build se déclenche dans YOUR_PROJECT_NAME-builder, qui compile l'image mise à jour et la transfère dans le dépôt Artifact Registry situé dans YOUR_PROJECT_NAME-stage.

Lorsqu'un membre de l'équipe a testé et validé les images dans YOUR_PROJECT_NAME-stage, il peut approuver et fusionner votre demande d'extraction. L'action de fusion compile, analyse et obtient les images, puis les transfère du projet de préproduction vers YOUR_PROJECT_NAME-verified.

Les étapes suivantes décrivent le workflow du développeur pour utiliser le pipeline d'images sécurisées:

  1. Accédez au dépôt baseimgfact-[some number]-containers.

  2. Ouvrez le dossier correspondant à l'image que vous souhaitez modifier, par exemple ubuntu_18_0_4.

  3. Effectuer des modifications. Par exemple, modifiez la commande Dockerfile pour mettre à jour une image de conteneur.

  4. Sélectionnez Create a new branch for this commit and start a pull request (Créer une branche pour ce commit et démarrer une demande de fusion).

  5. Cliquez sur Proposer des modifications.

  6. Dans la section Description du commentaire, saisissez /gcbrun. Cela permet de garantir que seuls les utilisateurs autorisés proposent des modifications au dépôt.

  7. Cliquez sur Create pull request (Créer une demande de fusion).

    Lorsque vous créez une demande d'extraction, le déclencheur de compilation dans YOUR_PROJECT_NAME-builder compile l'image et la transfère à YOUR_PROJECT_NAME-stage.

  8. Ajoutez un membre de l'équipe pour examiner votre demande d'extraction.

  9. Après avoir validé manuellement l'image, le membre de l'équipe approuve et fusionne la demande d'extraction.

    L'action de fusion crée, teste, analyse l'image pour détecter les failles, et atteste de l'image s'il s'agit d'une image de conteneur, puis la transfère vers YOUR_PROJECT_NAME-verified.

Spécifier une stratégie de sécurité personnalisée

Si vous utilisez le pipeline d'images sécurisées pour générer et gérer les images de conteneurs de base, vous pouvez spécifier une stratégie de sécurité personnalisée par rapport à laquelle l'image est validée.

YOUR_PROJECT_NAME-stage exécute une instance Voucher, un outil Open Source qui exécute une série de vérifications sur les images de conteneurs et génère des attestations d'autorisation binaire. 101}pour les images. Lorsqu'une image de YOUR_PROJECT_NAME-stage a été validée manuellement et qu'un membre de l'équipe fusionne la demande d'extraction dans le dépôt d'images de conteneurs GitHub, Voucher vérifie la présence de failles dans l'image, qui est définie dans la configuration du coupon. . Une fois la vérification terminée, si toutes les failles identifiées tombent en dessous du seuil, Voucher crée une attestation d'autorisation binaire pour l'image et l'image est transmise à YOUR_PROJECT_NAME-verified. Si l'une des failles identifiées atteint ou dépasse le seuil, Voucher ne crée pas d'attestation. Sans attestation validée, l'outil d'application de l'autorisation binaire empêche le transfert de l'image vers YOUR_PROJECT_NAME-verified.

Vous pouvez définir les vérifications exécutées par Voucher, ainsi que d'autres critères, dans le fichier de configuration du serveur Voucher. Pour obtenir des instructions à ce sujet, consultez la page Créer et configurer le serveur de coupons.