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
Fichier permettant d'ajouter et de crypter de nouvelles variables.
  • config/secrets/dev/dev.decrypt.private.php
Fichier permettant de lire et de décrypter les variables.

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)%'