Les variables d'environnement sont accessibles depuis n'importe quel endroit de votre application, elles sont présentes dans vos fichiers et sont donc lisibles par n'importe qui y ayant accès.
Générer des clés cryptographiques
Pour obtenir des clés cryptographiques, il faut utiliser la commande suivante :
php bin/console secrets:generate-keys
Cela va créer les fichiers suivants :
config/secrets/dev/dev.encrypt.public.php
config/secrets/dev/dev.decrypt.private.php
Pour obtenir la version de production de ces fichiers, vous pouvez utiliser la commande :
APP_ENV=prod php bin/console secrets:generate-keys
Le fichier config/secrets/prod/prod.decrypt.private.php
qui permet de décrypter et de lire vos variables ne doit jamais être déployé sur un environnement de production.
Gestion des secrets
Création et mise à jour
Si vous souhaitez ajouter un secret, utilisez la commande secrets:set
:
php bin/console secrets:set NOM_VARIABLE
Pour obtenir une valeur sur l'environnement de production :
APP_ENV=prod php bin/console secrets:set NOM_VARIABLE
Le résultat de la commande consiste en la création d'un fichier dans le dossier config/secrets/dev
ou config/secrets/prod
selon votre choix.
Pour mettre à jour un secret, il suffit d'utiliser la même commande avec une nouvelle valeur.
Supprimer un secret
Pour supprimer un secret, il faut utiliser la commande secrets:remove
:
php bin/console secrets:remove NOM_VARIABLE
Afficher les secrets
Vous pouvez utiliser la commande secrets:list
pour obtenir la liste des secrets de votre application, l'option --reveal
permet d'afficher leur valeur si vous possédez la clé de décryptage :
php bin/console secrets:list --reveal
------------------- ------------ -------------
Name Value Local Value
------------------- ------------ -------------
NOM_VARIABLE "valeur_ici"
------------------- ------------ -------------
Utiliser les secrets dans les fichiers de configuration
Pour récupérer la valeur des secrets dans vos fichiers de configuration, le système est similaire à celui des variables d'environnement. Prenons l'exemple de DATABASE_URL :
# fichier : config/packages/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'