Intégrer la validation IaC avec Jenkins

Vous pouvez utiliser le plug-in Google Analyze Code Security pour Jenkins afin de valider l'IaC (Infrastructure as code) qui fait partie de votre projet Jenkins. La validation IaC vous permet de déterminer si vos définitions de ressources Terraform enfreignent les règles d'administration et les détecteurs Security Health Analytics existants appliqués à vos ressources Google Cloud .

Pour en savoir plus sur la validation IaC, consultez Valider votre IaC vis-à-vis de vos règles d'administration Google Cloud .

La validation IaC ne fonctionne qu'avec les projets Jenkins freestyle.

Avant de commencer

Effectuez ces tâches pour débuter la validation de l'IaC avec Jenkins.

Activer le niveau Security Command Center Premium ou Enterprise

Vérifiez que le niveau Security Command Center Premium ou Enterprise est activé au niveau de l'organisation.

L'activation de Security Command Center permet d'utiliser les API securityposture.googleapis.com et securitycentermanagement.googleapis.com.

Créer un compte de service

Créez un compte de service que vous pourrez utiliser pour le plug-in Google Analyze Code Security pour Jenkins.

  1. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the Security Posture Shift-Left Validator role to the service account.

      To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.

    7. Click Continue.
    8. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  2. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.

Pour en savoir plus sur les autorisations de validation IaC, consultez IAM pour les activations au niveau de l'organisation.

Définir vos règles

Définissez vos règles d'administration et vos détecteurs Security Health Analytics. Pour définir ces règles à l'aide d'une stratégie de sécurité, effectuez les tâches décrites dans Créer et déployer une stratégie.

Installer et configurer le plug-in

  1. Dans la console Jenkins, cliquez sur Manage Jenkins > Manage Plugins (Gérer Jenkins > Gérer les plug-ins).
  2. Dans l'onglet Available (Disponible), recherchez google-analyze-code-security.
  3. Suivez la procédure d'installation.
  4. Cliquez sur Manage Jenkins > Configure System (Gérer Jenkins > Configurer le système).
  5. Dans la section Google Analyze Code Security, cliquez sur Add credential (Ajouter un identifiant).
  6. Dans Organization ID, saisissez l'ID de l'organisation Google Cloudqui inclut les ressources Terraform que vous souhaitez créer ou modifier.
  7. Dans Security Command Center Credential (Identifiant Security Command Center), ajoutez la clé du compte de service.
  8. Testez la connexion pour vérifier les identifiants du compte de service.
  9. Cliquez sur Save (Enregistrer).

Créer votre fichier JSON de plan Terraform

  1. Créez votre code Terraform. Pour obtenir des instructions, consultez Créer votre code Terraform.

  2. Installez le plug-in Terraform pour Jenkins.

  3. Dans la console Jenkins, dans votre projet Jenkins freestyle, accédez à la page Configuration.

  4. Cliquez sur Source Code Management (Gestion du code source).

  5. Dans Repository URL (URL du dépôt), saisissez l'URL du code Terraform que vous avez créé.

  6. Cliquez sur Build steps (Étapes de compilation).

  7. Ajoutez les étapes suivantes :

    1. Initialisez Terraform :

      terraform init
      
    2. Créez un fichier de plan Terraform.

      terraform plan -out=TF_PLAN_FILE
      

      Remplacez TF_PLAN_FILE par le nom du fichier de plan Terraform. Par exemple, myplan.tfplan.

    3. Convertissez votre fichier de plan au format JSON :

      terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
      

      Remplacez TF_PLAN_JSON_FILE par le nom du fichier de plan Terraform au format JSON. Par exemple, mytfplan.json.

Ajouter le plug-in à votre projet Jenkins

  1. Dans la console Jenkins, dans votre projet Jenkins freestyle, accédez à la page Configuration.
  2. Dans Build Steps (Étapes de compilation), cliquez sur Add build step > Perform Code Scan during Build (Ajouter une étape de compilation > Effectuer une analyse du code pendant la compilation).
  3. Saisissez l'ID de votre organisation.
  4. Indiquez le chemin d'accès à votre fichier de plan Terraform, au format JSON.
  5. Facultatif : définissez les critères d'échec de la compilation. Les critères d'échec sont basés sur le nombre de problèmes de gravité critique, élevée, moyenne et faible rencontrés lors de l'analyse de validation IaC. Vous pouvez spécifier le nombre de problèmes autorisés pour chaque niveau de gravité et la façon dont les problèmes sont agrégés (opérateur AND ou OR).

    1. Cliquez sur Fail on Asset Violation (Échec en raison d'un non-respect des règles concernant les assets).

    2. Si vous souhaitez que la compilation échoue uniquement lorsque le nombre limite de problèmes de chacun des niveaux de gravité est atteint, sélectionnez AND. Si vous souhaitez que la compilation échoue dans le cas où le nombre limite de problèmes d'un niveau de gravité quelconque est atteint, sélectionnez OR. Par exemple, si vous souhaitez que la compilation échoue si elle rencontre un problème critique ou un problème de gravité élevée, définissez la valeur agrégée sur OR.

    3. Indiquez le nombre de problèmes que vous souhaitez autoriser pour les différents niveaux de gravité avant que la compilation n'échoue.

    Si vous ne souhaitez pas spécifier de critère d'échec, sélectionnez Ignore Asset Violation (Ignorer le non-respect des règles concernant les assets).

  6. Cliquez sur Save (Enregistrer).

Vous pouvez maintenant exécuter la compilation pour valider votre fichier de plan Terraform.

Afficher le rapport sur les cas de non-respect de l'IaC

  1. Dans la console Jenkins, cliquez sur le workflow le plus récent pour votre compilation.

  2. Cliquez sur Status (État). Les fichiers HTML suivants sont disponibles en tant qu'artefacts de compilation :

    • Si le plug-in s'est exécuté, le rapport sur les cas de non-respect (GoogleAnalyzeCodeSecurity_ViolationSummary.html)

    Le rapport regroupe les cas de non-respect par niveau de gravité. La section "violation" (cas de non-respect) indique quelle règle n'a pas été respectée ainsi que l'ID de l'asset du plan Terraform qui a enfreint la règle.

    • Si la compilation a échoué, un rapport récapitulatif des erreurs
  3. Résolvez les cas de non-respect des règles dans votre code Terraform avant de l'appliquer.

Étape suivante