Vous pouvez utiliser l'action Analyser la sécurité du code pour valider l'infrastructure as code (IAC) qui fait partie de votre workflow GitHub Actions. La validation de l'IaC vous permet de déterminer si vos définitions de ressources Terraform enfreignent les règles d'administration existantes et les détecteurs Security Health Analytics appliqués à vos ressources Google Cloud.
Pour en savoir plus sur la validation de l'IaC, consultez la section Valider votre IaC par rapport aux 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 le niveau Premium ou Enterprise de Security Command Center est activé 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'action "Analyser la sécurité du code".
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
Pour en savoir plus sur les autorisations de validation IaC, consultez la section 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 la 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 du projet Google Cloud dans lequel vous configurez 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é.
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 vos règles d'administration et vos 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 le fichier JSON de votre 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 - Configurer Terraform, exécutez la commande suivante:
- name: Terraform Init id: init run: terraform init
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 fichier de plan Terraform. 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_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
- Dans le dépôt GitHub, accédez à votre workflow.
- Ouvrez l'éditeur de workflow.
- Dans la barre latérale de GitHub Marketplace, recherchez Analyser la sécurité du code.
- Dans la section Installation, copiez la syntaxe.
- Collez la syntaxe en tant que nouvelle étape dans votre workflow.
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 avez créé pour l'action.organization_id
par l'ID de votre organisation Google Cloudscan_file_ref
par le chemin d'accès au fichier de plan Terraform, au format JSON.failure_criteria
avec 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 par l'analyse de validation de l'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
ouOR
). Par exemple, si vous souhaitez que l'action échoue en cas de problème critique ou de problème de gravité élevée, 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'analyse de validation de l'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 manuellement un workflow.
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 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 unruleID
que vous pouvez faire correspondre aux résultats inclus dans le rapport. - Champ
results
qui décrit les modifications proposées des éléments qui enfreignent une règle spécifique.
- Champ
Résolvez les cas de non-respect dans votre code Terraform avant de l'appliquer.
Étape suivante
- Affichez le code source de l'action analyze-code-security-scc sur GitHub.