Vous pouvez écrire une configuration de compilation qui indique à Cloud Build de valider l'Infrastructure as Code (IaC) qui fait partie de votre build. La validation de l'IaC vous permet de déterminer Les définitions de ressources 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 de l'IaC, consultez Valider votre IaC par rapport à votre de l'organisation Google Cloud règles.
Avant de commencer
Effectuez ces tâches pour commencer la validation IaC à l'aide de Cloud Build.
Activer le niveau Premium ou Enterprise de Security Command Center
Vérifiez que les options du niveau Premium ou Enterprise de Security Command Center est activé au niveau au niveau de l'organisation.
L'activation de Security Command Center active les securityposture.googleapis.com
et
API securitycentermanagement.googleapis.com
.
Configurer les autorisations
-
Assurez-vous que vous disposez du ou des rôles suivants au niveau de l'organisation :
- Security Posture Shift-Left Validator
- Log Writer
- Storage Writer
- Storage Reader
Vérifier les rôles
-
Dans la console Google Cloud, accédez à la page IAM.
Accéder à IAM - Sélectionnez l'organisation.
-
Dans la colonne Compte principal, recherchez la ligne qui contient votre adresse e-mail.
Si votre adresse e-mail ne figure pas dans cette colonne, cela signifie que vous n'avez aucun rôle.
- Dans la colonne Rôle de la ligne contenant votre adresse e-mail, vérifiez si la liste des rôles inclut les rôles requis.
Attribuer les rôles
-
Dans la console Google Cloud, accédez à la page IAM.
Accéder à IAM - Sélectionnez l'organisation.
- Cliquez sur Accorder l'accès.
- Dans le champ Nouveaux comptes principaux, saisissez votre adresse e-mail.
- Dans la liste Sélectinoner un rôle, sélectionnez un rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.
- Cliquez sur Enregistrer.
Pour en savoir plus sur les autorisations de validation IaC, consultez IAM au niveau de l'organisation ou activations.
Activer l'API Cloud Build
-
Activez l'API Cloud Build
Définir vos règles
Définissez vos règles d'administration et vos détecteurs Security Health Analytics. Pour définir à l'aide d'une stratégie de sécurité, effectuez les tâches décrites dans la section Créer et déployer un de sécurité.
Créer votre code Terraform
Pour obtenir des instructions, consultez Créer le code Terraform.
Valider votre IAC dans Cloud Build
Ajoutez les tâches suivantes à votre fichier cloudbuild.yaml
:
Initialisez Terraform :
- name: hashicorp/terraform args: - '-c' - | terraform init \ -backend-config="bucket=STATE_BUCKET" \ -backend-config="prefix=REPOSITORY_NAME" \ dir: FOLDER id: Terraform Init entrypoint: sh
Remplacez les éléments suivants :
STATE_BUCKET
par le nom du bucket Cloud Storage ; pour stocker l'état TerraformREPOSITORY_NAME
par le dépôt qui héberge votre le code Terraform.FOLDER
par le nom du dossier dans lequel enregistrer le fichier les artefacts.
Créez un fichier de plan:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
Convertissez le fichier du plan au format JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: sh
Créez le rapport de validation de l'IaC:
- name: gcr.io/cloud-builders/gcloud args: - '-c' - | gcloud scc iac-validation-reports create \ organizations/ORGANIZATION_ID/locations/global --tf-plan-file=plan.json \ --format="json(response.iacValidationReport)" > IaCScanReport_$BUILD_ID.json dir: FOLDER id: Run IaC scan entrypoint: /bin/bash
Remplacez
ORGANIZATION_ID
par l'ID de votre organisation.Si vous utilisez Cloud Storage, importez le fichier de résultats JSON dans Cloud Storage:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Remplacez
SCAN_RESULT_FILE_BUCKET
par le Bucket Cloud Storage dans lequel importer le fichier de résultats.Pour afficher les résultats au format SARIF, procédez comme suit:
Convertissez le fichier:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/SARIFConverter@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --outputFilePath=IaCScanReport_$BUILD_ID.sarif.json dir: FOLDER id: Convert to SARIF format entrypoint: /bin/bash
Facultatif: importez le fichier dans Cloud Storage:
- name: gcr.io/cloud-builders/gsutil args: - cp - IaCScanReport_$BUILD_ID.sarif.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report file
Validez les résultats. Effectuez cette étape sur le résultats JSON que vous n'avez pas converti au format SARIF:
- name: golang args: - '-c' - | go run github.com/google/gcp-scc-iac-validation-utils/ReportValidator@latest \ --inputFilePath=IaCScanReport_$BUILD_ID.json --failure_expression=FAILURE_CRITERIA dir: FOLDER id: Validate results entrypoint: /bin/bash
Remplacez
FAILURE_CRITERIA
par le seuil d'échec. qui détermine le moment où la compilation é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 niveau de gravité autorisés comment les problèmes sont agrégés (AND
ouOR
). Par exemple, si vous que la compilation échoue si elle rencontre un problème critique ou un problème de gravité, définissezFAILURE_CRITERIA
surCritical:1,High:1,Operator:OR
La valeur par défaut estCritical:1,High:1,Medium:1,Low:1,Operator:OR
, ce qui signifie que si l'IaC de validation rencontre une violation de n'importe quelle gravité, la compilation doit échouer.Si la compilation échoue, corrigez les cas de non-conformité dans votre code Terraform.
Étape suivante
- Affichez le rapport de validation IaC dans Cloud Storage.
- Examinez les scripts de validation IaC dans GitHub.
- Consultez l'exemple
cloud.yaml
.