Cette page explique comment configurer le pipeline d'images sécurisé pour automatiser la génération d'images de conteneurs de base.
Présentation
Le pipeline d'images sécurisé est un outil Open Source qui configure un framework de projets et de ressources Google Cloud, ainsi qu'un dépôt GitHub permettant de créer et de gérer des ressources personnalisées. et des images de base sécurisées. Vous pouvez consommer les images de projets Google Cloud.
L'image suivante illustre le framework des ressources créées par un pipeline d'images sécurisé :
Une fois le pipeline configuré, il crée les ressources suivantes :
Un dépôt GitHub hébergeant le code source des images de conteneurs
Trois projets Google Cloud : projet de compilation, projet de préproduction et projet validé. Chaque fois qu'une image est mise à jour dans le dépôt d'images, des déclencheurs Cloud Build dans le projet de compilation, créent, signent et transfèrent l'image mise à jour du dépôt Artifact Registry dans le projet de préproduction. Lorsque l'image du projet de préproduction est validée manuellement, le pipeline la transfère vers le projet validé.
Coûts
Le pipeline d'images sécurisées utilise les produits Google Cloud suivants.
- Cloud Build
- Artifact Registry
- Artifact Analysis
- Autorisation binaire
- Pub/Sub
- Cloud Run
- Fonctions Cloud Run
Utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.
Avant de commencer
Vous devez disposer d'une organisation Google Cloud pour utiliser le pipeline sécurisé. Les clients Google Workspace et Cloud Identity peuvent créer une organisation Google Cloud :
- Google Workspace : inscrivez-vous à Google Workspace.
- Cloud Identity : Inscrivez-vous à Cloud Identity.
Pour en savoir plus sur les organisations Google Cloud, consultez le guide de démarrage rapide sur l'utilisation des organisations.
Installez Terraform 0.14.10.
Si vous n'avez pas encore de compte, créez-en un sur GitHub.
- Si l'authentification à deux facteurs est configurée sur GitHub, créez un jeton d'accès personnel à utiliser à la place d'un mot de passe GitHub avec la ligne de commande.
Autorisations IAM requises
L'utilisateur qui configure le pipeline d'images sécurisées nécessite les rôles Identity and Access Management roles/organization.admin
et roles/billing.admin
pour l'organisation Google Cloud. Pour obtenir des instructions sur l'attribution de rôles IAM, consultez la page Accorder, modifier et révoquer les accès.
Configurer le pipeline d'images sécurisé
Le dépôt GitHub du pipeline d'images sécurisé contient le script permettant d'automatiser la génération d'images de base.
Pour configurer le pipeline d'images sécurisées :
Clonez le dépôt GitHub du pipeline d'images sécurisé sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
Accédez au répertoire
secure-image-pipeline
:cd secure-image-pipeline/
Copiez
env.sh.tmpl
versenv.sh
:cp env.sh.tmpl env.sh
Ouvrez
env.sh
dans l'éditeur de votre choix.Modifiez les valeurs suivantes :
- PARENT_ORGANIZATION : saisissez l'ID de votre organisation Google Cloud. Le script sécurisé de pipeline d'images utilise cette organisation pour générer des projets Google Cloud et des images de base.
- BASEIMGFCT_PROJECT : saisissez une chaîne à partir de laquelle le script construit les ID des projets qu'il crée. La chaîne doit comporter entre 6 et 30 lettres minuscules, chiffres ou traits d'union. Elle doit commencer par une lettre et ne peut pas se terminer par un trait d'union. Par exemple, si vous spécifiez
foo
, le script crée trois projets avec les IDfoo-builder
,foo-stage
etfoo-verified
. - BASEIMGFCT_BUCKET : saisissez le nom d'un bucket Cloud Storage créé par le script pour stocker le code d'automatisation Terraform. Assurez-vous que le nom répond aux exigences de dénomination des buckets.
- BASEIMGFCT_REGION : saisissez le nom de la région à utiliser ou utilisez la valeur par défaut.
- BILLING_ACCOUNT : saisissez le compte de facturation associé à l'organisation.
- GITHUB_TOKEN : saisissez votre jeton d'accès personnel GitHub. Le script utilise ce jeton pour créer un dépôt GitHub contenant le code source des images de base.
Exécutez le script d'installation :
./setup.sh
Saisissez les informations de compte GitHub suivantes lorsque vous y êtes invité :
Nom de votre organisation GitHub.
Votre adresse e-mail GitHub.
Votre nom d'utilisateur GitHub.
Accordez au script l'autorisation de créer un projet pour stocker les images de base.
Saisissez "y".
Cette opération prend quelques minutes. Une fois l'opération terminée, le message Associez vos dépôts GitHub et appuyez sur une touche pour continuer s'affiche.
Appuyez sur une touche pour continuer.
Le script ouvre une nouvelle fenêtre de navigateur Google Cloud Console pour associer votre dépôt GitHub à votre projet Google Cloud.
Accédez à la fenêtre du navigateur de la console Google Cloud.
Dans la fenêtre pop-up Gérer vos installations d'applications GitHub, sélectionnez votre compte GitHub.
Cliquez sur Ajouter un autre projet.
Dans la liste déroulante Sélectionner un projet, sélectionnez le projet au format YOUR_PROJECT_NAME-builder.
Cochez la case pour accorder votre autorisation, puis cliquez sur Suivant.
Dans la liste des dépôts, sélectionnez le dépôt nommé baseimgfact-[some number]-containers, puis cliquez sur Connecter (1) dépôts.
Sur la page Créer un déclencheur push, cliquez sur Ignorer. Le script crée automatiquement le déclencheur push.
Cliquez sur OK.
Revenez au terminal.
Appuyez sur une touche pour continuer.
L'exécution du script prend quelques minutes.
Ressources créées par le pipeline d'images sécurisé
Une fois l'exécution du script d'installation terminée, les ressources suivantes sont créées :
GitHub :
- Un dépôt nommé
baseimgfct-[some number]-containers
contenant le code source utilisé pour créer les images de conteneurs. Le scriptsetup
ajoute ce dépôt à des fichiers Dockerfile simples, un pour chacune des distributions Linux populaires. - Clés de déploiement : clés de déploiement d'accès en écriture distinctes pour le dépôt.
Projets Google Cloud :
Un projet Google Cloud nommé
YOUR_PROJECT_NAME-builder
contenant les ressources nécessaires pour créer et transférer une image vers le projet de préproduction chaque fois que le code source est mis à jour dans le dépôt GitHub.Ce projet contient les déclencheurs Cloud Build qui appellent les compilations lorsqu'une demande d'extraction ou une fusion est effectuée dans la branche principale de
baseimgfct-[some number]-containers
. Une demande d'extraction crée et transfère les images dans le projet de préproduction. Une fusion crée et transfère les images dans le projet validé.Autorisations IAM pour
YOUR_PROJECT_NAME-builder
: nous vous recommandons de n'accorder l'accès à ce projet qu'aux membres de l'équipe censés modifier le pipeline. Pour savoir comment accorder un accès à des projets, consultez la page Accorder, modifier et révoquer les accès.Un projet Google Cloud nommé
YOUR_PROJECT_NAME-stage
utilisé pour préparer les images en vue d'un examen manuel avant leur publication dans le projet validé. Ce projet contient les ressources suivantes :- Un dépôt Docker Artifact Registry contenant les images de conteneurs créées.
- Fonctions Cloud Run pour chaque image du projet, qui déclenchent une recompilation de l'image chaque fois qu'une nouvelle correction pour une faille connue est trouvée.
- Les sujets Pub/Sub utilisés pour exécuter les fonctions Cloud Run.
- Instance du serveur Voucher qui s'exécute en tant que déploiement Cloud Run. Le serveur Voucher vérifie l'image avec une liste des exigences des stratégies de sécurité. Vous pouvez utiliser les exigences de stratégie par défaut fournies avec le pipeline ou spécifier une stratégie de sécurité personnalisée. Une fois les contrôles de sécurité réussis, le serveur Voucher crée une attestation pour l'image à l'aide de l'autorisation binaire. Cette image certifiée, également appelée image signée, est ensuite transférée dans le projet validé.
Autorisations IAM pour
YOUR_PROJECT_NAME-stage
: nous vous recommandons de n'accorder l'accès à ce projet qu'aux développeurs autorisés à lire les images de préproduction à partir d'Artifact Registry. Pour savoir comment accorder un accès à des projets, consultez la page Accorder, modifier et révoquer les accès à des ressources.Un projet Google Cloud nommé
YOUR_PROJECT_NAME-verified
. Ce projet contient les images signées finales qui ont été examinées manuellement.
Étape suivante
- Apprenez à utiliser le pipeline d'images de base.
- Découvrez comment spécifier une stratégie de sécurité personnalisée.