Transcript

00:00:00Voici Valor, un outil open source de gestion de variables d'environnement qui fait en sorte que vous
00:00:04n'ayez plus jamais à stocker de secrets en texte brut sur votre disque. Il résout les variables
00:00:10localement ou via un gestionnaire de mots de passe comme 1Password, Bitwarden, AWS et bien d'autres,
00:00:16en utilisant un schéma de type sécurisé, puis injecte vos secrets dans votre application au moment de l'exécution.
00:00:21Votre fichier .env devient ainsi sĂ»r pour l'IA et peut mĂȘme ĂȘtre publiĂ© sur GitHub. Mais comment ça marche
00:00:27et c'est quoi cette syntaxe bizarre ? Abonnez-vous et découvrons cela ensemble.
00:00:31Combien de fois avez-vous commencé un nouveau job de dév, accédé au code, tenté de le lancer en local
00:00:39et constaté que ça ne marche pas, pour finalement réaliser qu'il vous manque un fichier .env à récupérer
00:00:45auprÚs d'un collÚgue ou d'un stockage chiffré ? Et vous devez répéter ce processus
00:00:50Ă  chaque mise Ă  jour du fichier .env. C'est ce problĂšme que Valor veut rĂ©soudre, tout en empĂȘchant
00:00:56les agents IA victimes d'injections de prompts de voler des secrets. Voyons comment ça fonctionne.
00:01:02Voici un petit projet sur lequel je travaille : il génÚre des articles à partir de vidéos Twitter
00:01:06en utilisant Whisper d'OpenAI pour la transcription et Claude pour la rédaction de l'article.
00:01:12Mais commençons par quelque chose de simple : utiliser Valor pour changer le numéro de port.
00:01:17Valor étant déjà installé, nous devrions avoir un fichier .env.schema actuellement vide. Ce sera la source
00:01:23de vĂ©ritĂ© pour toutes nos variables et il pourra ĂȘtre commitĂ© sur un dĂ©pĂŽt public GitHub.
00:01:28Ajoutons d'abord une variable d'environnement simple "appenv" et donnons-lui la valeur
00:01:33"testing". Maintenant, j'ouvre un onglet pour lancer "varlock load" afin de valider notre schéma.
00:01:39On voit ici qu'il a lu notre variable d'environnement et l'a marquée comme "sensitive" (sensible).
00:01:43C'est parce que par défaut, toutes les variables dans Varlock sont considérées comme sensibles.
00:01:48Dans ce fichier, je vais ajouter notre premier décorateur. Ce sera un décorateur "root"
00:01:52(racine) car il affectera toutes les variables du fichier, et nous mettrons "default sensitive" Ă  false.
00:01:56Notez que la syntaxe utilise un hashtag devant, et les variables racines sont souvent séparées par un trait.
00:02:02Tout ce fichier utilise un langage spécifique appelé mspec, une spécification ouverte de l'équipe Varlock.
00:02:08Si je valide à nouveau mon schéma, on peut maintenant voir la valeur de la variable
00:02:14car elle n'est plus marquée comme sensible. On peut faire d'autres choses sympas dans le fichier
00:02:19comme définir le type de notre variable. Je vais lui donner le type "string" (chaßne),
00:02:24tout devrait fonctionner, mais si je le change en "number", on voit qu'une erreur apparaĂźt
00:02:29car il attendait une chaßne. Je peux aussi ajouter le décorateur "required" (requis)
00:02:33puis supprimer la valeur. Si on vérifie le fichier, on obtient une erreur car une valeur est attendue.
00:02:39Ce sont des décorateurs d'éléments. Vous en trouverez la liste complÚte dans la doc de Varlock,
00:02:44ainsi que tous les types disponibles. Ajoutons maintenant une autre variable,
00:02:50nommée "port" avec la valeur 3002. Je lui donne le type "port". Je vais aussi
00:02:55remettre celle du haut en sensible et en type string. Désormais, il a détecté
00:03:01nos deux variables et a masqué celle-ci car elle est sensible. Mais comment
00:03:05injecter ces valeurs dans notre application ? Il suffit de lancer
00:03:10"varlock run" suivi de la commande pour démarrer l'appli. Si je regarde le fichier package.json,
00:03:15on voit qu'il faut lancer la commande "vite". Donc si je lance "varlock run vite",
00:03:21il devrait charger la config, la résoudre, puis l'injecter dans nos variables d'environnement.
00:03:27C'est exactement ce qu'il a fait : le port est maintenant 3002, ce qui fonctionne dans le code
00:03:33car il vérifie d'abord la variable d'environnement injectée par Varlock.
00:03:38Cela ne se limite pas au JavaScript car Varlock fonctionne pour n'importe quel projet :
00:03:43Python, Go, Rust... Tout fonctionnera comme prévu. Et si vous ne voulez pas
00:03:48l'installer via npm, il existe aussi une CLI Varlock qui marche de la mĂȘme maniĂšre.
00:03:54C'est parfait pour les variables locales, mais voyons comment les récupérer depuis 1Password
00:03:59au lieu d'utiliser les variables de mon shell pour les clés API d'OpenAI et d'Anthropic.
00:04:05Je n'utilise pas 1Password personnellement, j'ai créé un compte d'essai pour cette vidéo,
00:04:11mais comme vous le voyez, j'ai créé un nouveau coffre (c'est trÚs important, j'expliquerai pourquoi plus tard).
00:04:16Dans ce coffre, il y a deux éléments : une clé OpenAI et une clé Anthropic.
00:04:24Je peux les montrer car elles sont fictives. Si je les révÚle, vous verrez que ce sont de fausses clés.
00:04:30Pour intégrer ces valeurs dans notre schéma Varlock, il faut d'abord installer le plugin 1Password.
00:04:36Notez que les plugins Varlock peuvent ajouter leurs propres décorateurs. Vous en verrez
00:04:42peut-ĂȘtre de nouveaux ici, comme ce dĂ©corateur "init-1password". AprĂšs
00:04:49avoir installé varlock-1password, on charge le décorateur racine du plugin
00:04:55et on lance l'initialisation. Tout ce dont j'ai besoin maintenant, c'est du jeton (token)
00:05:01que je récupÚre ici. Pour obtenir ce jeton, vous devez le connecter à un nouveau coffre,
00:05:06pas le vÎtre, et aller dans les paramÚtres de compte de service pour développeur.
00:05:11Comme je vais supprimer mon jeton et mon compte 1Password aprÚs cette vidéo,
00:05:15ça ne me dérange pas de le montrer. Je lui donne le type "1password-service-token",
00:05:21qui est un type sensible provenant de ce plugin. Vous remarquerez peut-ĂȘtre que ce fichier
00:05:26n'a pas de coloration syntaxique. L'équipe Varlock a créé une extension VS Code
00:05:32qui le supporte, mais il n'y en a pas encore pour Neovim. J'en crĂ©erai peut-ĂȘtre une
00:05:37plus tard, ou je demanderai à Claude de le faire. Créons une variable "openai_api_key_id"
00:05:43et pour la récupérer de 1Password, j'utilise la fonction "1password"
00:05:49suivie du protocole, du nom de mon coffre ("test"), du nom de
00:05:55l'élément ("openai") et enfin du nom du champ qui est "credential" (identifiant).
00:06:02Je la mets aussi en sensible. Maintenant, si on lance "varlock load", cela prend quelques secondes
00:06:08pour récupérer ma clé OpenAI depuis 1Password. On peut vérifier que ça marche en changeant
00:06:14la valeur, par exemple "1234", et en relançant "varlock load" : il récupÚre bien les bonnes valeurs.
00:06:20Et voilĂ , notre fichier de schĂ©ma est prĂȘt Ă  ĂȘtre commitĂ©. Mais je vous vois venir :
00:06:25est-ce que ce jeton 1Password est sĂ»r ? Pour ĂȘtre honnĂȘte, si vous dĂ©veloppez
00:06:31localement et que vous avez 1Password, vous avez sûrement l'appli de bureau ou la CLI.
00:06:38Dans ce cas, vous pouvez configurer le déverrouillage par empreinte digitale plutÎt que par jeton.
00:06:43Varlock supporte aussi d'autres plugins pour AWS, GCP et mĂȘme Bitwarden,
00:06:52ainsi que de nombreuses intégrations comme Vite, Next.js ou Cloudflare Workers. Il y a
00:06:57plein d'autres fonctionnalités que je n'ai pas eu le temps d'aborder, comme la génération de types TypeScript,
00:07:03l'importation de variables depuis d'autres fichiers ou mĂȘme le masquage des donnĂ©es sensibles
00:07:08dans les logs et les rĂ©ponses HTTP, ce qui est trĂšs pratique. Il y a mĂȘme un serveur MCP
00:07:15pour aider votre agent de codage à configurer automatiquement votre schéma, et une GitHub Action
00:07:21pour charger et valider vos variables dans votre processus CI/CD. Mais malgré tout,
00:07:27il y a quelques bémols. Par exemple, on ne peut pas l'utiliser hors ligne. Si vous codez à l'aéroport,
00:07:32vous devrez utiliser des variables codées en dur. Mais bon, qui code vraiment sans internet ?
00:07:37En parlant d'internet, il y a un léger délai lors de la récupération des mots de passe
00:07:41auprÚs d'un fournisseur tiers, donc vos scripts mettront un peu plus de temps à démarrer.
00:07:46Il manque aussi certains fournisseurs comme Dashlane. J'ai aussi rencontré un bug bizarre
00:07:53oĂč si j'utilisais le mĂȘme nom dans mon schĂ©ma que dans mon shell local, il utilisait la variable
00:07:59locale au lieu de celle de 1Password. Mais Varlock est en plein développement
00:08:05et je suis sûr que beaucoup de ces points seront corrigés. Quoi qu'il en soit,
00:08:10le produit actuel est déjà incroyablement utile pour moi et je pense que je vais l'utiliser
00:08:16pour tous mes projets personnels Ă  l'avenir, et peut-ĂȘtre mĂȘme remplacer mes fichiers shell locaux
00:08:21par des schémas Varlock si c'est possible. J'espÚre que ça l'est, car je ne veux pas que
00:08:26des agents puissent aspirer mes informations.

Key Takeaway

Varlock révolutionne la gestion des secrets en remplaçant les fichiers .env traditionnels par un schéma sécurisé et typé qui récupÚre les données en temps réel depuis des coffres-forts numériques.

Highlights

Varlock permet de sécuriser les variables d'environnement en évitant le stockage de secrets en texte brut sur le disque local.

L'utilisation d'un fichier .env.schema basé sur la spécification mspec rend le dépÎt sûr pour le partage public et l'IA.

Le systÚme propose un typage fort (port, string, number) et des décorateurs pour valider les données au moment de l'exécution.

Une intégration native avec des gestionnaires de mots de passe comme 1Password, Bitwarden et AWS est disponible via des plugins.

La commande 'varlock run' injecte dynamiquement les secrets dans n'importe quelle application (Node.js, Python, Go, Rust).

L'outil prévient l'extraction de secrets par des agents IA grùce au masquage automatique des données sensibles dans les logs.

Malgré ses avantages, Varlock nécessite une connexion internet pour résoudre les secrets distants, ce qui peut ralentir le démarrage.

Timeline

Introduction Ă  Varlock et aux problĂšmes du .env traditionnel

L'auteur présente Varlock comme une alternative moderne à la gestion classique des variables d'environnement. Il souligne les risques de sécurité liés au stockage de secrets en texte brut sur le disque, souvent exposés par erreur. Le narrateur explique comment ce nouvel outil résout les variables localement ou via des gestionnaires tiers au moment de l'exécution. Cette approche rend les fichiers de configuration sûrs pour l'intelligence artificielle et permet de les publier sur GitHub sans crainte. Enfin, il évoque la frustration courante des développeurs devant récupérer manuellement des fichiers .env manquants lors de l'installation d'un projet.

Configuration du schéma et syntaxe mspec

Cette section détaille la mise en place technique d'un projet utilisant un fichier .env.schema vide comme source de vérité. L'utilisateur découvre la syntaxe mspec, un langage spécifique utilisé par Varlock pour définir les rÚgles des variables. L'auteur démontre l'usage de décorateurs comme 'root' pour définir des comportements globaux, tels que la sensibilité par défaut des données. Il illustre également le systÚme de typage strict en changeant une variable de type 'string' vers 'number', ce qui déclenche une erreur de validation immédiate. L'ajout du décorateur 'required' permet de s'assurer qu'aucune variable essentielle n'est oubliée avant le lancement.

Injection de variables et compatibilité multi-langage

L'auteur explique comment injecter concrÚtement les valeurs définies dans le schéma au sein d'une application active. En utilisant la commande 'varlock run', l'outil charge la configuration, résout les dépendances et transmet les variables au processus, comme ici avec Vite. Un point crucial abordé est la polyvalence de Varlock, qui ne se limite pas à l'écosystÚme JavaScript ou Node.js. L'outil fonctionne de maniÚre transparente avec d'autres langages de programmation tels que Python, Go ou Rust grùce à sa CLI universelle. Cette flexibilité permet d'uniformiser la gestion des secrets à travers toute la pile technologique d'une entreprise.

Intégration avec 1Password et gestion des plugins

Le tutoriel passe à une étape supérieure en montrant comment connecter Varlock à un fournisseur externe tel que 1Password. Le processus nécessite l'installation d'un plugin spécifique qui ajoute de nouveaux décorateurs et fonctions au schéma mspec. L'auteur utilise un jeton de service pour authentifier l'accÚs à un coffre contenant des clés API pour OpenAI et Anthropic. Il démontre la syntaxe précise pour cibler un élément spécifique dans le coffre-fort numérique afin de le récupérer dynamiquement. Cette méthode garantit que les clés API les plus sensibles ne transitent jamais par le systÚme de fichiers local du développeur.

ÉcosystĂšme, avantages avancĂ©s et limites de l'outil

Pour conclure, l'auteur explore l'écosystÚme étendu de Varlock, incluant les intégrations pour Next.js, AWS, et les GitHub Actions pour le CI/CD. Il mentionne des fonctionnalités avancées comme la génération automatique de types TypeScript et le masquage des données sensibles dans les réponses HTTP. Cependant, il nuance son propos en listant certains inconvénients, notamment l'impossibilité d'utiliser l'outil sans connexion internet lors de l'usage de coffres distants. Un léger délai de démarrage est également à prévoir à cause de la latence réseau lors de la récupération des secrets. Malgré quelques bugs de jeunesse liés aux conflits de variables locales, l'auteur recommande vivement Varlock pour sécuriser ses projets personnels.

Community Posts

View all posts