Secrets et credentials
Les secrets sont chiffrés au repos, jamais affichés en clair, jamais loggés. Distincts des variables d'environnement publiques.
Définir un secret
$ paas secrets:set STRIPE_SECRET_KEY=sk_live_xxx --app monsite
$ paas secrets:set DATABASE_PASSWORD=$(openssl rand -base64 32) --app monsite
✓ secret défini · jamais affiché en clair · audit logué
$ paas secrets:set DATABASE_PASSWORD=$(openssl rand -base64 32) --app monsite
✓ secret défini · jamais affiché en clair · audit logué
Récupérer un secret
Vous ne pouvez pas récupérer la valeur d'un secret une fois défini. Vous pouvez vérifier qu'il existe :
$ paas secrets:list --app monsite
NAME
STRIPE_SECRET_KEY
DATABASE_PASSWORD
JWT_SECRET
$ paas secrets:rotate STRIPE_SECRET_KEY --app monsite
✓ rotation programmée pour le prochain déploiement
NAME
STRIPE_SECRET_KEY
DATABASE_PASSWORD
JWT_SECRET
$ paas secrets:rotate STRIPE_SECRET_KEY --app monsite
✓ rotation programmée pour le prochain déploiement
Différence avec les config vars
Config vars (paas config:set) | Secrets (paas secrets:set) | |
|---|---|---|
| Visibilité dans le dashboard | Affichée en clair | Masquée (••••••) |
| Présence dans les logs | Possible | Filtré automatiquement |
| Récupérable | Oui | Non, après définition |
| Audit fin | Non | Oui (qui, quand, depuis quelle IP) |
| Pour quoi ? | NODE_ENV, LOG_LEVEL, FEATURE_FLAGS | Mots de passe, clés API, tokens |
Rotation
Pour faire tourner un secret sans interrompre l'app :
$ paas secrets:set STRIPE_SECRET_KEY=sk_live_NEW --app monsite
# déclenche une nouvelle release rolling
# déclenche une nouvelle release rolling
Depuis un CI
Utilisez un token API avec scope secrets:write :
$ paas auth:tokens:create --scope secrets:write --app monsite
Audit
$ paas secrets:audit --app monsite --since 30d
# 14 events : 4 set, 2 rotate, 8 access (par les pods au démarrage)
# 14 events : 4 set, 2 rotate, 8 access (par les pods au démarrage)