Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt

Use this file to discover all available pages before exploring further.

Runbook — Rotation des clés et certificats

Criticité: Haute — effectuer en maintenance window Temps estimé: 30–60 min selon le type de rotation

1. Rotation ENCRYPTION_KEY (clés de chiffrement client secrets)

⚠️ Une rotation d’ENCRYPTION_KEY nécessite de re-chiffrer tous les secrets clients en base.

Procédure

# 1. Générer une nouvelle clé AES-256 (32 bytes = 64 hex)
NEW_KEY=$(openssl rand -hex 32)
echo "Nouvelle clé: $NEW_KEY"

# 2. Re-chiffrer tous les secrets en base AVANT de patcher Vault
# Lancer le script de migration (à créer si nécessaire)
# node platform/scripts/rotate-encryption-key.js --old-key $OLD_KEY --new-key $NEW_KEY

# 3. Mettre à jour Vault
docker exec mssp-vault vault kv patch mssp/platform \
  encryption_key="$NEW_KEY"

# 4. Redémarrer la plateforme pour recharger les secrets Vault
docker compose restart platform

2. Rotation certificat Entra ID (plateforme)

Certificat de l’app registration principale SnakySec sur le tenant MSSP.
# 1. Générer un nouveau certificat (365 jours)
openssl req -x509 -newkey rsa:2048 \
  -keyout entra-app-new.key.pem \
  -out entra-app-new.cert.pem \
  -days 365 -nodes -subj "/CN=mssp-platform"

# 2. Uploader le nouveau certificat dans Azure Portal
#    App registrations → SnakySec Platform → Certificates & secrets
#    → Upload certificate → entra-app-new.cert.pem
#    NE PAS supprimer l'ancien tant que la rotation n'est pas validée

# 3. Mettre à jour Vault
docker exec mssp-vault vault kv patch mssp/platform \
  entra_cert_private_key="$(cat entra-app-new.key.pem)" \
  entra_cert_pem="$(cat entra-app-new.cert.pem)"

# 4. Redémarrer
docker compose restart platform

# 5. Valider (tester un audit ou refresh token)
# 6. Supprimer l'ancien certificat dans Azure Portal
# 7. Supprimer les fichiers locaux
rm entra-app-new.key.pem entra-app-new.cert.pem

3. Rotation certificat Entra ID (client)

Pour un client spécifique :
CLIENT_SLUG="nom-client"

# 1. Générer le nouveau certificat
openssl req -x509 -newkey rsa:2048 \
  -keyout ${CLIENT_SLUG}.key.pem \
  -out ${CLIENT_SLUG}.cert.pem \
  -days 365 -nodes -subj "/CN=snakysec-${CLIENT_SLUG}"

# 2. Uploader dans le tenant client (Azure Portal)

# 3. Mettre à jour Vault
docker exec mssp-vault vault kv patch mssp/clients/${CLIENT_SLUG} \
  cert_private_key="$(cat ${CLIENT_SLUG}.key.pem)" \
  cert_pem="$(cat ${CLIENT_SLUG}.cert.pem)"

# 4. Vérifier avec un audit de test
# 5. Nettoyer
rm ${CLIENT_SLUG}.key.pem ${CLIENT_SLUG}.cert.pem

4. Rotation AUTH_SECRET (NextAuth)

Invalide toutes les sessions actives — prévoir une coupure courte.
NEW_SECRET=$(openssl rand -base64 48)

# Mettre à jour .env ou Vault selon votre config
# Redémarrer la plateforme
docker compose restart platform

# Les utilisateurs devront se reconnecter

5. Rotation GitLab Token

# 1. Générer un nouveau token GitLab (Project Access Token, scopes: api, read_repository)
# 2. Mettre à jour Vault
docker exec mssp-vault vault kv patch mssp/platform \
  gitlab_token="glpat-XXXX"

# 3. Mettre à jour le webhook secret si nécessaire
docker exec mssp-vault vault kv patch mssp/platform \
  gitlab_webhook_secret="$(openssl rand -hex 32)"

# 4. Redémarrer
docker compose restart platform

Calendrier recommandé

SecretFréquenceProchain
Certificats Entra (plateforme)Annuel
Certificats Entra (clients)Annuel
ENCRYPTION_KEYTous les 2 ans ou si compromis
AUTH_SECRETTous les 2 ans
GitLab TokenAnnuel
Vault Root TokenJamais utilisé en prod (unsealed via Shamir)