Bienvenue sur le répertoire de démonstration du ShiftLeft avec TFSec !
TFSec est un outil d'analyse statique du code Terraform.
Le ShiftLeft est le principe d'apporter la sécurité au plus tôt dans le cycle de développement applicatif (SDLC).
Je présente ici des solutions pour exploiter TFSec en respectant le principe de ShiftLeft.
On peut exploiter TFSec lors d'une PR avec une CI.
- Créez une arborescence de dossiers :
mkdir -p .github/workflows
- Ajoutez-y le fichier de pipeline :
cat << 'EOF' >.github/workflows/tfsec_pr_commenter.yml
name: tfsec-pr-commenter
on:
pull_request:
jobs:
tfsec:
name: tfsec PR commenter
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/checkout@main
- name: tfsec
uses: aquasecurity/tfsec-pr-commenter-action@main
with:
github_token: ${{ github.token }}
EOF
Poussez votre code et faites une MR vers votre branche principale. Une pipeline devrait se déclencher :
Documentation officielle : https://aquasecurity.github.io/tfsec/v0.63.1/getting-started/configuration/github-actions/pr-commenter/
Encore plus tôt dans le cycle de développement applicatif, lors du commit, on peut déclencher automatiquement TFSec avec pre-commit.
- Ajoutez le fichier de configuration de pre-commit à la racine de votre projet git :
cat << 'EOF' >.pre-commit-config.yaml
default_stages: [commit]
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.62.3
hooks:
- id: terraform_tfsec
- id: terraform_fmt
- id: terraform_docs
args:
- --hook-config=--path-to-file=README.md # Valid UNIX path. I.e. ../TFDOC.md or docs/README.md etc.
- --hook-config=--add-to-existing-file=true # Boolean. true or false
- --hook-config=--create-file-if-not-exist=true # Boolean. true or false
EOF
- Hookez pre-commit avec votre shell :
pre-commit install
-
Stagez et commitez vos modifications de code Terraform
-
Vous devriez voir pre-commit effectuer les différents tests configurés (ici en réussite) :
Site officiel : https://pre-commit.com/
Répertoire du hook pre-commit exploité : https://github.com/antonbabenko/pre-commit-terraform
On peut déclencher tfsec avant même le commit.
Vous pouvez déclencher TFSec manuellement : tfsec .
Vous pouvez déclencher manuellement pre-commit :
pre-commit run -a
Votre IDE peut vous proposer des plugins qui permettront de déclencher TFSec, c'est le cas de VSCode.
Visual Studio marketplace : https://marketplace.visualstudio.com/items?itemName=tfsec.tfsec
Vous pouvez configurer des vérifications customisées.
Documentation officielle : https://aquasecurity.github.io/tfsec/v0.63.1/getting-started/configuration/custom-checks/
tfenv est un gestionnaire de version Terraform. Il permet d'alterner facilement entre différentes versions de Terraform.
Répertoire officiel : https://github.com/tfutils/tfenv
Le fichier .gitignore permet de déclarer à git quels sont les fichiers qu'il doit ignoré.
Documentation : https://git-scm.com/docs/gitignore Exemple de .gitignore pour Terraform : https://github.com/github/gitignore/blob/main/Terraform.gitignore
No requirements.
Name | Version |
---|---|
aws | n/a |
No modules.
Name | Type |
---|---|
aws_kms_key.this | resource |
aws_s3_bucket.this | resource |
aws_s3_bucket_public_access_block.this | resource |
No inputs.
No outputs.