Vous pouvez écrire une configuration de compilation qui demande à Cloud Build de valider l'infrastructure as code (IaC) qui fait partie de votre compilation. 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 Google Cloud ressources.
Pour en savoir plus sur la validation IaC, consultez Valider votre IaC vis-à-vis de vos Google Cloud règles d'administration.
Avant de commencer
Effectuez ces tâches pour débuter la validation IaC à l'aide de Cloud Build.
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.
Configurer les autorisations
- Valideur de stratégie de sécurité en amont
- Rédacteur de journaux
- Rédacteur de stockage
- Lecteur de stockage
-
Dans la Google Cloud console, accédez à la page IAM.
Accéder à IAM - Sélectionnez l'organisation.
-
Dans la colonne Compte principal, recherchez toutes les lignes qui vous identifient ou identifient un groupe dont vous faites partie. Pour savoir à quels groupes vous appartenez, contactez votre administrateur.
- Pour toutes les lignes qui vous spécifient ou vous incluent, consultez la colonne Rôle pour vous assurer que la liste inclut les rôles requis.
-
Dans la Google Cloud console, 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 identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
Assurez-vous de disposer des rôles suivants sur l'organisation :
Vérifier les rôles
Attribuer les rôles
Pour en savoir plus sur les autorisations de validation IaC, consultez IAM pour les activations au niveau de l'organisation.
Activer l'API Cloud Build
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui
contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer
des rôles.
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.
Créer votre code Terraform
Pour obtenir des instructions, consultez Créer votre 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: shRemplacez les éléments suivants :
STATE_BUCKETpar le nom du bucket Cloud Storage dans lequel stocker l'état TerraformREPOSITORY_NAMEpar le dépôt qui héberge votre code TerraformFOLDERpar le nom du dossier dans lequel enregistrer les artefacts Terraform
Créez un fichier de plan :
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: shConvertissez le fichier de plan au format JSON :
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: shCréez le rapport de validation 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/bashRemplacez
ORGANIZATION_IDpar 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/gcloud args: - storage - cp - IaCScanReport_$BUILD_ID.json - SCAN_RESULT_FILE_BUCKET dir: FOLDER id: Upload report fileRemplacez
SCAN_RESULT_FILE_BUCKETpar 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/bashFacultatif : importez le fichier dans Cloud Storage :
- name: gcr.io/cloud-builders/gcloud args: - storage - 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 fichier JSON de résultats 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/bashRemplacez
FAILURE_CRITERIApar les critères de seuil d'échec qui déterminent quand la compilation échoue. Les critères de seuil 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.FAILURE_CRITERIAspécifie le nombre de problèmes autorisés pour chaque niveau de gravité, ainsi que la façon dont les problèmes sont agrégés (opérateurANDouOR). 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éfinissezFAILURE_CRITERIAsurCritical: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'analyse de validation IaC rencontre un cas de non-respect des règles, quel que soit son niveau de gravité, la compilation doit échouer.Si la compilation échoue, résolvez les cas de non-respect des règles dans votre code Terraform.
Étape suivante
- Affichez le rapport de validation IaC dans Cloud Storage.
- Examinez les scripts de validation IaC dans GitHub.
- Examinez l'exemple
cloud.yaml.