--- # SOURCE_HASH: 2f389acc68e1d63db1b187402ce3becdae71b4bb title: BOOST_INVALID_TF_TAGS shortname: BOOST_INVALID_TF_TAGS description: Custom Terraform Tags Validation anchor: checkov group: top10-vulnerable-components pretty_name: Custom Terraform Tags Validation group: cloud-weak-configurat
BOOST_INVALID_TF_TAGS¶
Boost fournit une fonctionnalité de validation des Tags Terraform personnalisés pour garantir la conformité avec les politiques organisationnelles. Cette fonctionnalité permet aux utilisateurs de définir et d'imposer des conventions de taggage spécifiques, favorisant la cohérence et la clarté à travers les ressources cloud. En tirant parti de cette capacité, vous pouvez vous assurer que votre infrastructure cloud est alignée avec les lignes directrices établies, réduisant ainsi le risque de mauvaises configurations et améliorant la gouvernance globale. Le processus consiste à générer un plan Terraform au format JSON et à spécifier une politique de validation des tags via la variable d'environnement BOOST_TF_TAGS_POLICY.
Politique des tags¶
{
"version": "v1.0.0",
"enforcement_policy": "lax",
"supported_resources": [
"aws_s3_bucket"
],
"remediation_message": "Pour plus d'informations, veuillez consulter notre wiki...",
"required_tags": [
"db-cloud",
"db-owner",
"db-environment",
"db-purpose"
],
"allowed_tag_values": {
"db-cloud": [
"AWS",
"GCP",
"Azure"
],
"db-environment": [
"dev",
"staging",
"prod"
]
}
}
Exemple de .gitlab-ci.yml¶
variables:
IGNORE_TF_DEPRECATION_WARNING: true
include:
- template: Terraform/Base.gitlab-ci.yml
- remote: 'https://raw.githubusercontent.com/boostsecurityio/boostsec-scanner-gitlab/main/scanner.yml'
workflow:
rules:
# exécuter lors des poussées vers la branche par défaut
- if: ($CI_PIPELINE_SOURCE == "push") && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH)
# exécuter lors de la demande de fusion
- if: ($CI_PIPELINE_SOURCE == "merge_request_event")
stages:
- validate
- test
- build
- boost
- deploy
- cleanup
fmt:
extends: .terraform:fmt
needs: []
validate:
extends: .terraform:validate
needs: []
build:
extends: .terraform:build
environment:
name: $TF_STATE_NAME
action: prepare
after_script:
# Convertir le Plan Terraform en JSON pour l'utilisation par Boost (sur HEAD et éventuellement sur la BASE de la MR)
- gitlab-terraform show -json ${TF_ROOT}/plan.cache > boost.tfplan.head.json
- |
if [[ -n $CI_MERGE_REQUEST_IID ]]; then
git checkout $CI_MERGE_REQUEST_DIFF_BASE_SHA;
TF_PLAN_CACHE=${TF_ROOT}/plan.base.cache gitlab-terraform plan;
gitlab-terraform show -json ${TF_ROOT}/plan.base.cache > boost.tfplan.base.json;
fi
artifacts:
public: false
paths:
- ${TF_ROOT}/plan.cache
- boost.tfplan.base.json
- boost.tfplan.head.json
reports:
terraform: ${TF_ROOT}/plan.json
boost-terraform:
stage: boost
extends:
- .boost_scan
variables:
BOOST_SCANNER_REGISTRY_MODULE: "boostsecurityio/checkov-tf-plan"
BOOST_PRE_SCAN: |
# Utiliser le Plan Terraform pré-généré basé sur les différents scénarios
if [[ -n $CI_MERGE_REQUEST_IID ]]; then
if [[ "$(git rev-parse HEAD)" = "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]]; then
cp $CI_PROJECT_DIR/boost.tfplan.base.json ./boost.tfplan.json
else
cp $CI_PROJECT_DIR/boost.tfplan.head.json ./boost.tfplan.json
fi
else
cp $CI_PROJECT_DIR/boost.tfplan.head.json ./boost.tfplan.json
fi
BOOST_TF_TAGS_POLICY: '{"version":"v1.0.0","enforcement_policy":"lax","supported_resources":["aws_s3_bucket"],"remediation_message":"Pour plus d\'informations, veuillez consulter notre wiki...","required_tags":["db-cloud","db-owner","db-environment","db-purpose"],"allowed_tag_values":{"db-cloud":["AWS","GCP","Azure"],"db-environment":["dev","staging","prod"]}}'
deploy:
extends: .terraform:deploy
dependencies:
- build
environment:
name: $TF_STATE_NAME
action: start