Intégrer la validation IaC aux actions GitHub

Vous pouvez utiliser l'outil Analyze Code Security l'action pour valider l'Infrastructure as Code (IaC) qui fait partie de vos actions GitHub ; du workflow. La validation de l'IaC vous permet de déterminer si votre ressource Terraform ne respectent pas les règles d'administration et des détecteurs Security Health Analytics qui sont appliqués à vos ressources Google Cloud.

Pour en savoir plus sur la validation IaC, consultez Vérifiez que votre IaC respecte les règles de votre organisation Google Cloud.

Avant de commencer

Effectuez ces tâches pour commencer à utiliser la validation de l'IaC avec GitHub Actions.

Activer le niveau Premium ou Enterprise de Security Command Center

Vérifiez que la propriété Niveau Premium ou Enterprise de Security Command Center est activée au niveau de l'organisation.

L'activation de Security Command Center active les API securityposture.googleapis.com et securitycentermanagement.googleapis.com.

Créer un compte de service

Créez un compte de service que vous pouvez utiliser pour l'analyse de sécurité du code action.

  1. In the Google Cloud console, go to the Create service account page.

    Go to Create service account
  2. Select your project.
  3. 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.

  4. Click Create and continue.
  5. 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.

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

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

Configurer l'authentification

  1. Configurez la fédération d'identité de charge de travail avec votre fournisseur d'identité GitHub. Pour instructions, consultez l'article Fédération d'identité de charge de travail

  2. Obtenez l'URL de votre jeton d'ID de fédération d'identité de charge de travail. Par exemple, https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.

    Réfléchissez aux éléments suivants :

    • PROJECT_NUMBER est le numéro de projet de Projet Google Cloud dans lequel vous avez configuré la fédération d'identité de charge de travail.
    • POOL_ID est le nom du pool.
    • PROVIDER_ID est le nom de votre fournisseur d'identité.
  3. Ajoutez l'action "S'authentifier auprès de Google Cloud" à votre workflow pour authentifier l'action de validation de l'IaC.

Définir vos règles

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

Créer votre fichier JSON de plan Terraform

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

  2. Dans vos actions GitHub, initialisez Terraform. Par exemple, si vous utilisez l'action HashiCorp - Setup Terraform, exécutez la commande suivante:

    - name: Terraform Init
      id: init
      run: terraform init
    
  3. Créez un fichier de plan Terraform:

    - name: Create Terraform Plan
      id: plan
      run: terraform plan -out=TF_PLAN_FILE
    

    Remplacez TF_PLAN_FILE par le nom du plan Terraform. . Exemple :myplan.tfplan

  4. Convertissez votre fichier de plan au format JSON :

    - name: Convert Terraform Plan to JSON
      id: convert
      run: 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. Exemple :mytfplan.json

Ajouter l'action à votre workflow GitHub Actions

  1. Dans le dépôt GitHub, accédez à votre workflow.
  2. Ouvrez l'éditeur de workflow.
  3. Dans la barre latérale de GitHub Marketplace, recherchez Analyze Code Security (Analyser la sécurité du code).
  4. Dans la section Installation, copiez la syntaxe.
  5. Collez la syntaxe en tant que nouvelle étape dans votre workflow.
  6. Remplacez les valeurs suivantes :

    • workload_identity_provider par le lien vers l'URL de votre jeton d'ID de fédération d'identité de charge de travail.
    • service_account par l'adresse e-mail du compte de service que vous créé pour l'action.
    • organization_id par l'ID de votre organisation Google Cloud
    • scan_file_ref par le chemin d'accès au fichier de plan Terraform, au format JSON.
    • failure_criteria par le seuil d'échec qui détermine le moment où l'action échoue. Le critère de seuil est en fonction du nombre de problèmes de gravité critique, élevée, moyenne et faible lors de l'analyse de validation IaC. failure_criteria spécifie le nombre de problèmes de chaque gravité autorisés et la façon dont les problèmes sont agrégés (AND ou OR). Par exemple, si vous souhaitez que l'action échoue en cas de problème critique ou de problème de gravité élevée, définissez failure_criteria sur Critical:1,High:1,Operator:OR. La valeur par défaut est Critical:1,High:1,Medium:1,Low:1,Operator:OR, ce qui signifie que si l'IaC l'analyse de validation rencontre un problème, l'action doit échouer.

Vous pouvez maintenant exécuter le workflow pour valider votre fichier de plan Terraform. Pour exécuter la manuellement, consultez la section Exécution manuelle d'une du workflow.

Afficher le rapport de non-respect de l'IaC

  1. Dans votre dépôt GitHub, cliquez sur Actions et sélectionnez votre workflow.

  2. Cliquez sur l'exécution la plus récente de votre workflow.

    Dans la section Artefacts (Éléments), le rapport d'infraction (ias-scan-sarif.json) est disponible dans un fichier ZIP. Le rapport inclut les champs suivants :

    • Champ rules qui décrit les règles non respectées par le plan Terraform. Chaque règle inclut un ruleID que vous pouvez faire correspondre aux résultats inclus dans le rapport.
    • Un champ results qui décrit les modifications d'éléments proposées enfreignant une règle spécifique.
  3. Résolvez tous les cas de non-respect dans votre code Terraform avant de l'appliquer.

Étape suivante