Vous pouvez utiliser l'action Analyze Code Security pour valider l'IaC (Infrastructure as code) qui fait partie de votre workflow GitHub Actions. 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 avec GitHub Actions.
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 l'action Analyze Code Security.
-
Assurez-vous de disposer du rôle IAM Créateur de comptes de service
(
-
Dans la Google Cloud console, accédez à la page Créer un compte de service.
Accéder à la page "Créer un compte de service" - Sélectionnez votre projet.
-
Dans le champ Nom du compte de service, saisissez un nom. La Google Cloud console remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for quickstart. - Cliquez sur Créer et continuer.
-
Attribuez le rôle Validateur de sécurité Shift-Left au compte de service.
Pour accorder le rôle, trouvez la liste Sélectionner un rôle, puis sélectionnez Validateur de sécurité Shift-Left.
- Cliquez sur Continuer.
-
Cliquez sur OK pour terminer la création du compte de service.
roles/iam.serviceAccountCreator) et du rôle IAM Administrateur IAM du projet
(roles/resourcemanager.projectIamAdmin). Découvrez comment attribuer
des rôles.
Pour en savoir plus sur les autorisations de validation IaC, consultez IAM pour les activations au niveau de l'organisation.
Configurer l'authentification
Configurez la fédération d'identité de charge de travail avec votre fournisseur d'identité GitHub. Pour obtenir des instructions, consultez la page Fédération d'identité de charge de travail.
Obtenez l'URL de votre jeton d'identité de fédération d'identité de charge de travail. Exemple :
https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/PROVIDER_ID.Réfléchissez aux éléments suivants :
PROJECT_NUMBERest le numéro du projet dans lequel vous avez configuré la fédération d'identité de charge de travail.Google CloudPOOL_IDest le nom du pool.PROVIDER_IDest le nom de votre fournisseur d'identité.
Ajoutez l'action Authenticate to Google Cloud action à votre workflow pour authentifier l'action de validation IaC.
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 fichier JSON de plan Terraform
Créez votre code Terraform. Pour obtenir des instructions, consultez Créer votre code Terraform.
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 initCréez un fichier de plan Terraform :
- name: Create Terraform Plan id: plan run: terraform plan -out=TF_PLAN_FILERemplacez
TF_PLAN_FILEpar le nom du fichier de plan Terraform. Par exemple,myplan.tfplan.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_FILERemplacez
TF_PLAN_JSON_FILEpar le nom du fichier de plan Terraform au format JSON. Exemple :mytfplan.json.
Ajouter l'action à votre workflow GitHub Actions
- Dans le dépôt GitHub, accédez à votre workflow.
- Ouvrez l'éditeur de workflow.
- Dans la barre latérale GitHub Marketplace, recherchez Analyze Code Security.
- Dans la section Installation, copiez la syntaxe.
- Collez la syntaxe en tant que nouvelle étape dans votre workflow.
Remplacez les valeurs suivantes :
workload_identity_providerpar le lien vers l'URL de votre jeton d'identité de fédération d'identité de charge de travail.service_accountpar l'adresse e-mail du compte de service que vous avez créé pour l'action.organization_idpar votre Google Cloud ID d'organisation.scan_file_refpar le chemin d'accès à votre fichier de plan Terraform, au format JSON.failure_criteriapar les critères de seuil d'échec qui déterminent quand l'action é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é et la façon dont les problèmes sont agrégés (opérateurANDouOR). Par exemple, si vous souhaitez que l'action échoue si elle rencontre un problème critique ou un problème de gravité élevée, définissez lefailure_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 problème, l'action doit échouer.
Vous pouvez maintenant exécuter le workflow pour valider votre fichier de plan Terraform. Pour exécuter le workflow manuellement, consultez Exécuter un workflow manuellement.
Afficher le rapport sur les cas de non-respect de l'IaC
Dans votre dépôt GitHub, cliquez sur Actions , puis sélectionnez votre workflow.
Cliquez sur l'exécution la plus récente de votre workflow.
Dans la section Artifacts (Artefacts), le rapport sur les cas de non-respect des règles (
ias-scan-sarif.json) est disponible dans un fichier zip. Ce rapport comprend les champs suivants :- Un champ
rulesqui décrit les règles enfreintes par le plan Terraform. Chaque règle inclut unruleIDque vous pouvez faire correspondre aux résultats inclus dans le rapport. - Un champ
resultsqui décrit les modifications d'éléments proposées qui enfreignent une règle spécifique.
- Un champ
Résolvez les cas de non-respect des règles dans votre code Terraform avant de l'appliquer.
Étape suivante
- Affichez le code source de l'action analyze-code-security-scc dans GitHub.