Déployer une application sur GKE et afficher les insights sur la sécurité
Découvrez comment déployer un conteneur volontairement vulnérable sur un cluster GKE et obtenir des informations sur la sécurité concernant la faille dans le tableau de bord de la stratégie de sécurité. Le tableau de bord de stratégie de sécurité GKE affiche des informations sur les failles connues du système d'exploitation. Si vous souhaitez également analyser les failles des packages Go ou Java, consultez Créer une application et afficher les insights sur la sécurité.
Objectifs
- Créez et transférez une application conteneurisée vers Artifact Registry à l'aide de Cloud Build.
- Créez un pipeline de livraison dans Cloud Deploy.
- Déployez l'application sur un cluster GKE de préproduction et promouvez-la vers un cluster de production.
- Affichez des insights sur les failles de l'application déployée à l'aide du tableau de bord sur le niveau de sécurité dans la console Google Cloud .
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com -
Install the Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com Définissez votre ID de projet en tant que variable d'environnement :
export PROJECT_ID=$(gcloud config get project)
Définissez la région Google Cloud par défaut pour Cloud Deploy :
gcloud config set deploy/region us-central1
Clonez le dépôt GitHub contenant l'exemple de code pour cette tâche :
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd ~/software-delivery-shield-demo-java/backend
Créer un compte de service IAM pour votre cluster GKE
Clusters à utiliser :
gcloud iam service-accounts create sds-runtime \ --display-name="Security insights with GKE service account"
Accordez des autorisations au compte de service IAM :
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.nodeServiceAccount" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.developer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/artifactregistry.reader"
Accordez au compte de service Compute Engine par défaut l'accès aux clusters GKE. Cloud Deploy utilise cet accès pour déployer des applications sur les clusters de votre pipeline de livraison.
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/container.developer
Créez le dépôt :
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="Security insights with GKE repository"
Vérifiez que le dépôt existe :
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
Le résultat affiche le dépôt
containers
que vous avez créé.Mettez à jour le fichier de configuration Cloud Deploy avec l'ID de votre projet :
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Enregistrez le pipeline et les cibles :
gcloud deploy apply --file=clouddeploy.yaml
Pour vérifier que votre pipeline existe, accédez à la page Pipelines de livraison dans la console Google Cloud :
Accéder à la page "Pipelines de livraison"
La liste des pipelines affiche votre nouveau pipeline,
guestbook-app-delivery
.Cliquez sur le nom du pipeline pour suivre sa progression. La page Détails du pipeline de diffusion s'ouvre.
Créez une version dans Cloud Deploy :
gcloud deploy releases create guestbook-release-001 \ --delivery-pipeline=guestbook-app-delivery \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
La nouvelle version apparaît dans la section Versions de la page Détails du pipeline de livraison.
Sur la page Détails du pipeline de livraison, surveillez la vue Visualisation du pipeline jusqu'à ce que le bouton Promouvoir s'affiche pour
dev-cluster
. Vous devrez peut-être actualiser la page.Cliquez sur Promouvoir dans la visualisation
dev-cluster
.Dans le volet Promouvoir la version, cliquez sur Promouvoir pour confirmer la promotion vers votre cluster de production.
Pour vérifier que votre version a bien été publiée, consultez la section Versions. La colonne État du dernier déploiement affiche
Successfully deployed to prod-cluster
.Accédez à la page Stratégie de sécurité GKE dans la console Google Cloud .
Pour afficher les résultats de l'analyse, actualisez la page. L'analyse initiale peut prendre jusqu'à 15 minutes.
Sur la page Stratégie de sécurité GKE, consultez la section Failles de l'OS de la charge de travail. Cette section liste les CVE les plus importantes affectant votre charge de travail déployée.
Pour en savoir plus, cliquez sur Afficher tous les problèmes de failles. L'onglet Problèmes s'ouvre et applique un filtre pour le type de problème Faille. Le tableau présente un aperçu de chaque faille et de son impact.
Pour en savoir plus sur une faille spécifique, cliquez sur le nom du problème dans le tableau. Le volet Vulnérabilité s'ouvre. Dans ce volet, vous pouvez effectuer les actions suivantes :
- Lisez une description détaillée de la CVE, y compris les versions et les packages concernés, ainsi que le score CVSS.
- Consultez les actions recommandées pour atténuer le problème, comme la documentation et les informations sur la version du correctif.
- Affichez les charges de travail spécifiques concernées par la faille dans l'onglet Charges de travail concernées.
Supprimez le pipeline Cloud Deploy :
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Supprimez les clusters GKE :
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Supprimez le dépôt Artifact Registry :
gcloud artifacts repositories delete containers \ --location=us-central1
Supprimez le compte de service IAM :
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
- Déployez une application vulnérable sur Cloud Run et affichez les insights.
- Créer une application et afficher les insights sur la sécurité
- En savoir plus sur la sécurité de la chaîne d'approvisionnement logicielle
- En savoir plus sur les fonctionnalités du tableau de bord de stratégie de sécurité GKE
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Préparer votre environnement
Créer le dépôt Artifact Registry pour votre image
Créer les clusters GKE
Créez deux clusters GKE : un cluster de préproduction nommé dev-cluster
et un cluster de production nommé prod-cluster
. Dans Autopilot, l'analyse des failles des charges de travail est automatiquement activée pour les nouveaux clusters exécutant la version 1.27 ou ultérieure. Si vous utilisez un cluster Standard, spécifiez l'option --workload-vulnerability-scanning=standard
.
gcloud container clusters create-auto dev-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
La création d'un cluster peut prendre jusqu'à cinq minutes. Vous pouvez également activer l'analyse des failles des charges de travail en mettant à jour les clusters GKE existants.
Créer l'image
Créez et envoyez l'image à l'aide de Cloud Build :
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Une fois la compilation terminée, le résultat ressemble à ce qui suit :
DONE
-----------------------------------------------------------------------------
ID: 3e23094f-7f57-4449-bc68-51c37hn34d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://my-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f.tgz
IMAGES: us-central1-docker.pkg.dev/PROJECT_ID/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
Déployer l'image sur GKE à l'aide de Cloud Deploy
Afficher les failles
Dans cette section, consultez les insights sur les failles de l'OS à l'aide du tableau de bord sur le niveau de sécurité. Le tableau de bord affiche des informations sur les failles de sécurité dans vos charges de travail en cours d'exécution après leur déploiement dans vos clusters.
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud qui les contient.
Supprimer des ressources individuelles
Supprimer le projet
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID