Utiliser le pipeline sécurisé d'images

Une fois que vous avez créé votre pipeline d'images sécurisé, 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 pour produire des images sécurisées et certifiées.

Avant de commencer

Créez le pipeline d'image sécurisé 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ées. 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 crée l'image mise à jour et la transfère dans le dépôt Artifact Registry de 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 crée, analyse et atteste les images, puis transfère les images du projet de préproduction à YOUR_PROJECT_NAME-verified.

Les étapes suivantes décrivent le workflow de développement permettant d'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. Effectuez des modifications. Par exemple, modifiez le fichier Dockerfile pour mettre à jour une image de conteneur.

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

  5. Cliquez sur Proposer des modifications.

  6. Dans le champ Comment description (Description), 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, la compilation dans YOUR_PROJECT_NAME-builder crée votre image et la transmet à YOUR_PROJECT_NAME-stage.

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

  9. Après avoir vérifié 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 transfère l'image à YOUR_PROJECT_NAME-verified.

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

Si vous utilisez le pipeline d'images sécurisé pour générer et gérer des images de conteneur 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 suite de vérifications sur les images de conteneurs et crée des Attestations d'autorisation binaire 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 sont définies dans le fichier de configuration Voucher. 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 celle-ci 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 section Créer et configurer le serveur Voucher.