DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesSécurité DevOps - Débutant01 - Protéger ses secrets avec .gitignore et .env

Détails

  • 20 minutes
  • Débutant

Objectifs

  • Comprendre pourquoi ne jamais commiter un secret
  • Configurer un .gitignore adapté à son projet
  • Créer un .env.example comme documentation sans valeurs réelles
  • Vérifier qu'un secret n'est pas traçable dans l'historique Git
Module Sécurité DevOps - Débutant

Exercice 01 : Protéger ses secrets avec .gitignore et .env

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Identifier ce qui constitue un "secret" à ne jamais commiter
  • ✅ Créer un .gitignore qui protège les fichiers sensibles
  • ✅ Distinguer .env (privé), .env.example (public) et .gitignore
  • ✅ Vérifier qu'un fichier est bien ignoré par Git avant de commiter

Durée estimée : 20 minutes

Difficulté : ⭐☆☆☆☆ (Débutant)

Prérequis : Git installé et configuré (commits, push)


📖 Contexte

Git garde une mémoire permanente. Un secret commité, même supprimé le lendemain, reste accessible dans l'historique à quiconque clone le dépôt. GitHub scanne automatiquement les dépôts publics pour détecter les clés API et envoie des alertes - parfois aux providers (AWS, Stripe, etc.) qui révoquent immédiatement la clé.

La protection passe par trois fichiers simples : .env, .env.example, et .gitignore.


📋 Énoncé

Mettez en place la protection des secrets sur un projet de démonstration.


🧭 Déroulement de l'exercice

Tâche 1 : Créer le projet de démonstration

Créez un dossier de travail et initialisez un repository Git :

bash
mkdir demo-securite && cd demo-securite
git init

Créez un fichier de code qui utilise des variables d'environnement :

bash
cat > app.py << 'EOF'
import os

# Bonne pratique : lire depuis les variables d'environnement
database_url = os.environ.get("DATABASE_URL")
api_key = os.environ.get("STRIPE_API_KEY")

print(f"Connexion à : {database_url}")
print(f"Clé API : {api_key[:4]}...") # Ne jamais afficher une clé complète
EOF

Vérification : git status doit afficher app.py comme nouveau fichier non suivi.


Tâche 2 : Créer le fichier .env (privé)

Créez le fichier .env avec de fausses valeurs de démonstration :

bash
cat > .env << 'EOF'
# Variables d'environnement locales - NE JAMAIS COMMITER CE FICHIER
DATABASE_URL=postgres://admin:MonMotDePasse123@localhost:5432/mabase
STRIPE_API_KEY=sk_live_abc123defghijklmnopqrstuvwxyz
JWT_SECRET=super-secret-aleatoire-32-caracteres-minimum
REDIS_URL=redis://localhost:6379/0
EOF

Indice : Le .env contient les vraies valeurs (ou des valeurs de test réalistes). Il ne doit JAMAIS être versionné.

Vérification : cat .env affiche bien vos variables avec leurs valeurs.


Tâche 3 : Créer le .gitignore

Créez un .gitignore qui protège tous les fichiers sensibles courants :

bash
cat > .gitignore << 'EOF'
# Variables d'environnement - JAMAIS dans Git
.env
.env.local
.env.*.local
.env.production
.env.staging

# Clés et certificats
*.key
*.pem
*.p12
*.pfx
secrets/
credentials/

# Fichiers de config avec secrets
config/production.json
config/secrets.yml

# Dossiers système et IDE
.DS_Store
__pycache__/
*.pyc
.venv/
node_modules/
EOF

Vérification : git status - le fichier .env ne doit PAS apparaître dans la liste des fichiers non suivis.

Attention : Si .env apparaît toujours, vérifiez qu'il n'était pas déjà en cache Git. Dans ce cas : git rm --cached .env.


Tâche 4 : Créer le .env.example (public)

Le .env.example sert de documentation pour les autres développeurs. Il liste les variables nécessaires sans leurs valeurs réelles :

bash
cat > .env.example << 'EOF'
# Copiez ce fichier en .env et remplissez vos propres valeurs
# cp .env.example .env

# Base de données PostgreSQL
DATABASE_URL=postgres://USER:PASSWORD@HOST:5432/DB_NAME

# Stripe (récupérer sur https://dashboard.stripe.com/apikeys)
STRIPE_API_KEY=sk_live_VOTRE_CLE_API

# Secret JWT (générer avec : openssl rand -hex 32)
JWT_SECRET=GENEREZ_UNE_CHAINE_ALEATOIRE_FORTE

# Redis (optionnel, laissez vide en dev local)
REDIS_URL=redis://localhost:6379/0
EOF

Vérification : cat .env.example affiche les variables avec des valeurs placeholder descriptives, pas des vraies valeurs.


Tâche 5 : Commiter correctement

Ajoutez et commitez les bons fichiers :

bash
git add app.py .gitignore .env.example
git status

Vérifiez que .env n'apparaît pas dans la liste des fichiers à commiter.

bash
git commit -m "feat: ajouter structure de base avec protection des secrets"
git log --oneline

Indice : Si .env apparaît encore dans git status (en rouge, fichiers non suivis), c'est normal - Git l'ignore mais l'affiche quand même comme "non suivi". La bonne question est : est-ce qu'il est dans la zone de staging (en vert) ? Il ne doit PAS l'être.

Vérification finale : git show HEAD --name-only doit lister app.py, .gitignore et .env.example, mais PAS .env.


✅ Vérification du résultat

  • .env contient les "vraies" valeurs et est ignoré par Git
  • .env.example contient les noms de variables avec des valeurs placeholder
  • .gitignore couvre .env, *.key, *.pem et les fichiers système
  • git log montre un commit propre sans le .env
  • git show HEAD --name-only ne contient PAS .env

💡 À retenir

La règle des 3 fichiers :

FichierCommité ?Contenu
.env❌ NonVraies valeurs (secrets)
.env.example✅ OuiNoms de variables, valeurs placeholder
.gitignore✅ OuiListe des fichiers à ignorer

Un .env.example bien maintenu permet à n'importe quel développeur de rejoindre le projet en sachant exactement quelles variables configurer.


✨ Solution Complète

bash
# Résumé des commandes
mkdir demo-securite && cd demo-securite
git init
echo "DATABASE_URL=postgres://admin:secret@localhost:5432/db" > .env
echo ".env" >> .gitignore
echo "DATABASE_URL=postgres://USER:PASSWORD@HOST:5432/DB_NAME" > .env.example
git add .gitignore .env.example
git commit -m "feat: protection des secrets configurée"
Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Créer le projet de démonstration
  • Tâche 2 : Créer le fichier .env (privé)
  • Tâche 3 : Créer le .gitignore
  • Tâche 4 : Créer le .env.example (public)
  • Tâche 5 : Commiter correctement
  • ✅ Vérification du résultat
  • 💡 À retenir
  • ✨ Solution Complète