[{"data":1,"prerenderedAt":432},["ShallowReactive",2],{"i-ic:outline-arrow-upward":3,"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E":8,"episode-\u002Fpodcasts\u002Fsecret-environnement":16,"github-sponsor":334,"i-material-symbols:home":409,"i-ic:baseline-play-circle-filled-white":411,"i-material-symbols:ios-share":413,"i-cbi:deezer-logo":415,"i-vscode-icons:file-type-rss":417,"i-ri:heart-3-fill":420,"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8":422,"Duration_19qLAxnDgw1WLTJVduwQIi1EKnB0ov0Mp83iVwTA":427},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"m4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z\"\u002F>",["Island",9],{"key":10,"result":11},"Footer_afPiwGMwNiEyV4syWzw87ovzxHAgs4iwKtCn4zqBf8E",{"head":12},{"style":13},[14],{"innerHTML":15},":where(.i-mdi\\:github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2'\u002F%3E%3C\u002Fsvg%3E\")}",{"id":17,"title":18,"author":19,"body":20,"categories":311,"description":313,"dsSlug":314,"duration":315,"episodeArtwork":316,"episodeNumber":317,"episodeType":318,"explicit":6,"extension":319,"guid":320,"links":321,"meta":322,"navigation":323,"path":324,"publicationDate":325,"season":326,"seo":327,"status":328,"stem":329,"subtitle":330,"tags":331,"videoLink":332,"__hash__":333},"podcasts\u002Fpodcasts\u002F095.secret-environnement\u002Findex.md","La gestion des secrets et .ENV","Double Slash",{"type":21,"value":22,"toc":292},"minimark",[23,28,32,55,58,62,75,88,93,100,104,107,110,141,145,148,151,154,158,161,164,172,182,186,201,205,209,255,259,270,274,289],[24,25,27],"h2",{"id":26},"pourquoi-utiliser-des-variables-denvironnement","Pourquoi utiliser des variables d’environnement ?",[29,30,31],"p",{},"Les variables d'environnement sont utilisées dans les programmes de sites web pour plusieurs raisons importantes :",[33,34,35,43,49],"ul",{},[36,37,38,42],"li",{},[39,40,41],"strong",{},"Sécurité :"," Elles permettent de stocker des informations sensibles (comme des clés API ou des mots de passe) en dehors du code source, réduisant ainsi les risques de fuites de données.",[36,44,45,48],{},[39,46,47],{},"Flexibilité :"," Elles facilitent la configuration du site pour différents environnements (développement, test, production) sans modifier le code.",[36,50,51,54],{},[39,52,53],{},"Déploiement simplifié :"," Elles permettent de déployer la même base de code dans différents environnements en changeant simplement les variables d'environnement.",[29,56,57],{},"Le système de gestion qui est devenu le plus utilisé dans le développement web est le fichier .ENV",[24,59,61],{"id":60},"sécurité-de-lapplication-et-maintenabilité","Sécurité de l’application et maintenabilité",[33,63,64],{},[36,65,66,67],{},"On ne doit pas mettre de token, password, etc.. dans le code en dur.\n",[33,68,69,72],{},[36,70,71],{},"Pour la sécurité",[36,73,74],{},"pour la maintenance et la centralisation",[29,76,77,81,82],{},[78,79,80],"em",{},"Exemple récent avec le rabbit boîtier IA et son leak de token en dur qui se trouvait dans la code base."," ",[83,84,85],"a",{"href":85,"rel":86},"https:\u002F\u002Fwww.theverge.com\u002F2024\u002F6\u002F26\u002F24186614\u002Frabbit-r1-security-flaw-api-key-codebase",[87],"nofollow",[89,90,92],"h3",{"id":91},"attention-à-git","Attention à GIT",[29,94,95,96],{},"Dans le cas où un token (pour test) se retrouve dans le code envoyé sur GIT, attention à l’historique ",[83,97,98],{"href":98,"rel":99},"https:\u002F\u002Falgerwrites.medium.com\u002Fhow-to-remove-env-from-git-commit-history-1d594917b376",[87],[24,101,103],{"id":102},"les-inconvénients-du-env","Les inconvénients du .ENV",[29,105,106],{},"On partage en équipe les éléments confidentiels et ça se retrouve sur la machine du dev.",[29,108,109],{},"C’est aussi une bonne pratique pour le reste : accès ftp, hébergement, etc…",[33,111,112],{},[36,113,114,115],{},"Gestionnaire de password ( Dashlane \u002F Bitwarden \u002F ProtonPass \u002F 1Password )\n",[33,116,117,123,129,135],{},[36,118,119],{},[83,120,121],{"href":121,"rel":122},"https:\u002F\u002Fwww.dashlane.com\u002Ffr",[87],[36,124,125],{},[83,126,127],{"href":127,"rel":128},"https:\u002F\u002Fbitwarden.com\u002Ffr-fr\u002F",[87],[36,130,131],{},[83,132,133],{"href":133,"rel":134},"https:\u002F\u002Fproton.me\u002Ffr\u002Fpass",[87],[36,136,137],{},[83,138,139],{"href":139,"rel":140},"https:\u002F\u002F1password.com\u002F",[87],[89,142,144],{"id":143},"les-externes","Les externes",[29,146,147],{},"Il n’est pas rare d’avoir des personnes externes dans des équipes : stage, freelance, etc..",[29,149,150],{},"On se retrouve à partager des accès et tokens avec ces personnes.",[29,152,153],{},"Heureusement, c’est souvent des éléments de dev. Mais parfois il y a des licences spécifiques payées par l’entreprise.",[89,155,157],{"id":156},"les-frameworks-hybrides","Les frameworks Hybrides :",[29,159,160],{},"Pour un framework back, pas de problème. Les variables par défaut ne son jamais affiché en front.",[29,162,163],{},"Par contre pour les FW comme NextJS, NuxtJS, etc.. Le code est partagé entre le SSR et le Front.",[29,165,166,167,171],{},"NextJS impose ",[168,169,170],"code",{},"NEXT_PUBLIC_"," pour rendre une variable disponible en \"public\"",[29,173,174,175,178,179],{},"NuxtJS donne la possibilité d’utiliser ",[168,176,177],{},"NUXT_PUBLIC_"," pour placer une variable dans ",[168,180,181],{},"runtimeConfig.public",[89,183,185],{"id":184},"bonne-pratique-pour-les-accès-ssh","Bonne pratique pour les accès SSH",[33,187,188,191,194],{},[36,189,190],{},"clé SSH",[36,192,193],{},"PassKey",[36,195,196,197],{},"YubiKey → ",[83,198,199],{"href":199,"rel":200},"https:\u002F\u002Fblog.maxds.fr\u002Fssh-with-yubikey\u002F",[87],[24,202,204],{"id":203},"les-secrets-managers","Les secrets managers",[89,206,208],{"id":207},"les-solutions-pour-stocker-à-part-les-variables-denvironnements","Les solutions pour stocker à part les variables d’environnements",[33,210,211,219,226,233,240,247],{},[36,212,213,218],{},[83,214,217],{"href":215,"rel":216},"https:\u002F\u002Fwww.doppler.com\u002Fpricing",[87],"https:\u002F\u002Fwww.doppler.com"," $",[36,220,221,225],{},[83,222,223],{"href":223,"rel":224},"https:\u002F\u002Fwww.hashicorp.com\u002Fproducts\u002Fvault",[87]," $$$$$",[36,227,228,232],{},[83,229,230],{"href":230,"rel":231},"https:\u002F\u002Finfisical.com\u002F",[87]," $ + OS ❤️❤️❤️",[36,234,235,239],{},[83,236,237],{"href":237,"rel":238},"https:\u002F\u002Fwww.dotenv.org\u002F",[87]," VSCode  ❤️",[36,241,242,246],{},[83,243,244],{"href":244,"rel":245},"https:\u002F\u002Fgetsops.io\u002F",[87]," OS",[36,248,249,254],{},[83,250,253],{"href":251,"rel":252},"https:\u002F\u002Fgithub.com\u002Fenvault\u002Fenvault?tab=readme-ov-file",[87],"https:\u002F\u002Fgithub.com\u002Fenvault\u002Fenvault"," self-hosted",[89,256,258],{"id":257},"natif-dans-les-fournisseurs-de-cloud","Natif dans les fournisseurs de cloud",[33,260,261,264,267],{},[36,262,263],{},"AWS Secret Manager",[36,265,266],{},"GCP Secret Manager",[36,268,269],{},"Azure Key Vault",[89,271,273],{"id":272},"article-et-vidéo","Article et vidéo  :",[33,275,276,282],{},[36,277,278],{},[83,279,280],{"href":280,"rel":281},"https:\u002F\u002Fmedium.com\u002F@tony.infisical\u002Fits-time-to-deprecate-the-env-file-for-a-better-stack-a519ac89bab0",[87],[36,283,284,285],{},"Yoann Dev sur Infisical ",[83,286,287],{"href":287,"rel":288},"https:\u002F\u002Fyoutu.be\u002FEyDWgo2eXuU?feature=shared",[87],[29,290,291],{},"Bonne écoute !",{"title":293,"searchDepth":294,"depth":294,"links":295},"",2,[296,297,301,306],{"id":26,"depth":294,"text":27},{"id":60,"depth":294,"text":61,"children":298},[299],{"id":91,"depth":300,"text":92},3,{"id":102,"depth":294,"text":103,"children":302},[303,304,305],{"id":143,"depth":300,"text":144},{"id":156,"depth":300,"text":157},{"id":184,"depth":300,"text":185},{"id":203,"depth":294,"text":204,"children":307},[308,309,310],{"id":207,"depth":300,"text":208},{"id":257,"depth":300,"text":258},{"id":272,"depth":300,"text":273},[312],"Technology","Les variables d'environnement sont essentielles pour la sécurité et la flexibilité des applications web. Bien que le fichier .ENV soit couramment utilisé, il présente des risques de partage d'informations sensibles. Des solutions alternatives comme les gestionnaires de mots de passe et les \"secrets managers\" offrent une meilleure sécurité pour le stockage et le partage d'informations confidentielles, particulièrement dans les environnements de développement collaboratifs et les déploiements cloud.","DS_095_secret",2912,"https:\u002F\u002Fres.cloudinary.com\u002Fdoubleslash\u002Fimage\u002Fupload\u002Fv1726588579\u002Fepisode\u002FART_95_dwvg6v.png",95,"full","md",null,[],{},true,"\u002Fpodcasts\u002Fsecret-environnement","2024-09-18",1,{"title":18,"description":313},"published","podcasts\u002F095.secret-environnement\u002Findex","Astuces et bonnes pratiques",[],"CH_il0Zh6nM","KidXzXLNvj7cqfRVfCCvlzneGge2A78FJ5C4RtpNHVA",{"data":335},{"organization":336},{"sponsorsListing":337},{"name":338,"fullDescriptionHTML":339,"url":340,"shortDescription":341,"activeGoal":342,"isPublic":323,"sponsorable":346},"sponsors-double-slash-podcast","\u003Cp>Le podcast des dev pour dev par des dev !\u003C\u002Fp>\n\u003Cp>Des podcasts et des videos sur les technologie WEB modernes.\u003C\u002Fp>\n\u003Cp>A deux ou avec un invité, on discute des tendances, des nouvelles technologies, des meilleures pratiques actuelles.\u003C\u002Fp>\n\u003Cp>🎥 \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCp5DGBAX2XNJXeOVAo7bICQ\">Youtube\u003C\u002Fa>\u003Cbr>\n🎙️ \u003Ca href=\"https:\u002F\u002Fspoti.fi\u002F317wtvD\">Spotify\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fapple.co\u002F3fTguFo\">Apple Podcast\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fbit.ly\u002F3i0hDgy\">Deezer\u003C\u002Fa> ▪️ \u003Ca href=\"https:\u002F\u002Fbit.ly\u002F31aKKYd\">Google Podcast\u003C\u002Fa>\u003Cbr>\n🌐 \u003Ca href=\"https:\u002F\u002Fdouble-slash.dev\u002F\">Double Slash DEV\u003C\u002Fa>\u003C\u002Fp>","https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdouble-slash-podcast","Le podcast des dev pour les dev par des dev !",{"description":343,"percentComplete":344,"targetValue":344,"title":345},"L'ensemble des charges seront couvertes. Service de stockage et abonnement aux services utilisés.",70,"$70 per month",{"sponsors":347},{"edges":348},[349,355,361,367,373,379,385,391,397,403],{"node":350},{"id":351,"name":352,"url":353,"avatarUrl":354},"MDQ6VXNlcjEwMDMwNw==","Clément Delmas","https:\u002F\u002Fgithub.com\u002Fclem","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F100307?u=878ed4b7cdf920879b57046f19e434fea2c7d296&v=4",{"node":356},{"id":357,"name":358,"url":359,"avatarUrl":360},"MDQ6VXNlcjI3NTYwOQ==","Thibaud Lepretre","https:\u002F\u002Fgithub.com\u002Fkakawait","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F275609?v=4",{"node":362},{"id":363,"name":364,"url":365,"avatarUrl":366},"MDQ6VXNlcjE5MTQxNjA=","David Pollet","https:\u002F\u002Fgithub.com\u002Fdavidpollet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1914160?u=4b3da16383b9fa810fd0980f756000709403ab45&v=4",{"node":368},{"id":369,"name":370,"url":371,"avatarUrl":372},"MDQ6VXNlcjYzMzMzOTY=","Eric","https:\u002F\u002Fgithub.com\u002Fericledonge","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6333396?u=e9e541a6b9125d8e8b558fdd914c847eb36db695&v=4",{"node":374},{"id":375,"name":376,"url":377,"avatarUrl":378},"MDQ6VXNlcjg4OTk3Njg=","François Gardien","https:\u002F\u002Fgithub.com\u002FYoutch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8899768?u=85ae8c4299c380bcec02e99e9364624f3ce333c7&v=4",{"node":380},{"id":381,"name":382,"url":383,"avatarUrl":384},"MDQ6VXNlcjEwMTc2NjI2","Antharuu","https:\u002F\u002Fgithub.com\u002Fantharuu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10176626?u=3f6ef490b330d5a9bbaa3137560b5d1d4cf13a4a&v=4",{"node":386},{"id":387,"name":388,"url":389,"avatarUrl":390},"MDQ6VXNlcjEwMTg2OTkz","Adrien Zaganelli","https:\u002F\u002Fgithub.com\u002FadrienZ","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10186993?u=08189ef8cf708a61445b6a57cf7a2aa361d484af&v=4",{"node":392},{"id":393,"name":394,"url":395,"avatarUrl":396},"MDQ6VXNlcjI2MTQyMzgz","Thomas Lemoine","https:\u002F\u002Fgithub.com\u002Fthomaslemoine","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26142383?u=4c68175459b0ae1f8c68c48c40f2ae148747675d&v=4",{"node":398},{"id":399,"name":400,"url":401,"avatarUrl":402},"MDQ6VXNlcjY1NzM3MTMx","Valentin Grenier","https:\u002F\u002Fgithub.com\u002Fvalentin-grenier","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F65737131?u=0ba0cc828412f6655a948c6a82f69b9c909f8fd9&v=4",{"node":404},{"id":405,"name":406,"url":407,"avatarUrl":408},"U_kgDOBipZwA","Hebrard Frederic","https:\u002F\u002Fgithub.com\u002Ffrederichebrard","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103438784?v=4",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":410},"\u003Cpath fill=\"currentColor\" d=\"M4 21V9l8-6l8 6v12h-6v-7h-4v7z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":412},"\u003Cpath fill=\"currentColor\" d=\"M12 2C6.475 2 2 6.475 2 12s4.475 10 10 10s10-4.475 10-10S17.525 2 12 2m-2 14.5v-9l6 4.5z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":414},"\u003Cpath fill=\"currentColor\" d=\"M6 22q-.825 0-1.412-.587T4 20V10q0-.825.588-1.412T6 8h3v2H6v10h12V10h-3V8h3q.825 0 1.413.588T20 10v10q0 .825-.587 1.413T18 22zm5-6V4.825l-1.6 1.6L8 5l4-4l4 4l-1.4 1.425l-1.6-1.6V16z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":416},"\u003Cpath fill=\"currentColor\" d=\"M18.774 5.051c.185-1.072.457-1.747.757-1.748c.561 0 1.015 2.341 1.015 5.228s-.455 5.229-1.016 5.229c-.23 0-.443-.4-.614-1.064c-.27 2.439-.831 4.115-1.48 4.115c-.5 0-.953-1.007-1.256-2.594c-.207 3.018-.727 5.161-1.334 5.161c-.381 0-.73-.848-.987-2.231C13.55 20 12.834 22 12 22s-1.551-2-1.86-4.853c-.255 1.383-.6 2.231-.986 2.231c-.609 0-1.128-2.142-1.335-5.161c-.3 1.587-.752 2.594-1.256 2.594c-.649 0-1.21-1.676-1.481-4.115c-.169.668-.382 1.064-.613 1.064c-.562 0-1.017-2.34-1.017-5.229S3.908 3.3 4.471 3.3c.3 0 .57.676.758 1.748C5.527 3.2 6.014 2 6.564 2c.653 0 1.219 1.7 1.487 4.168c.262-1.8.658-2.941 1.1-2.941c.624 0 1.154 2.252 1.351 5.393C10.874 7.01 11.41 6 12 6s1.128 1.011 1.5 2.62c.2-3.141.727-5.393 1.351-5.393c.444 0 .84 1.145 1.1 2.941C16.219 3.7 16.785 2 17.439 2c.547 0 1.035 1.2 1.335 3.051m-16.2 5.3C2.258 10.355 2 9.31 2 8.017s.258-2.337.576-2.337s.578 1.044.578 2.337s-.254 2.338-.578 2.338Zm18.848 0c-.32 0-.577-1.045-.577-2.338s.257-2.337.577-2.337S22 6.724 22 8.017s-.258 2.338-.576 2.338Z\"\u002F>",{"left":4,"top":4,"width":418,"height":418,"rotate":4,"vFlip":6,"hFlip":6,"body":419},32,"\u003Cdefs>\u003ClinearGradient id=\"SVGvSi4fdXe\" x1=\"30.06\" x2=\"225.94\" y1=\"30.06\" y2=\"225.94\" gradientTransform=\"matrix(.11 0 0 .11 2 2)\" gradientUnits=\"userSpaceOnUse\">\u003Cstop offset=\"0\" stop-color=\"#e3702d\"\u002F>\u003Cstop offset=\".11\" stop-color=\"#ea7d31\"\u002F>\u003Cstop offset=\".35\" stop-color=\"#f69537\"\u002F>\u003Cstop offset=\".5\" stop-color=\"#fb9e3a\"\u002F>\u003Cstop offset=\".7\" stop-color=\"#ea7c31\"\u002F>\u003Cstop offset=\".89\" stop-color=\"#de642b\"\u002F>\u003Cstop offset=\"1\" stop-color=\"#d95b29\"\u002F>\u003C\u002FlinearGradient>\u003C\u002Fdefs>\u003Crect width=\"28\" height=\"28\" x=\"2\" y=\"2\" fill=\"#cc5d15\" rx=\"6.01\" ry=\"6.01\"\u002F>\u003Crect width=\"26.91\" height=\"26.91\" x=\"2.54\" y=\"2.54\" fill=\"#f49c52\" rx=\"5.47\" ry=\"5.47\"\u002F>\u003Crect width=\"25.82\" height=\"25.82\" x=\"3.1\" y=\"3.1\" fill=\"url(#SVGvSi4fdXe)\" rx=\"5.14\" ry=\"5.14\"\u002F>\u003Cpath fill=\"#fff\" d=\"M6.82 6.16v3.83a15.31 15.31 0 0 1 15.3 15.3h3.83A19.14 19.14 0 0 0 6.81 6.17zm0 6.45v3.72a8.97 8.97 0 0 1 8.96 8.97h3.72A12.69 12.69 0 0 0 6.81 12.6zm2.62 7.44a2.63 2.63 0 0 0-2.63 2.62a2.63 2.63 0 0 0 2.63 2.63a2.63 2.63 0 0 0 2.63-2.63a2.63 2.63 0 0 0-2.63-2.63z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":421},"\u003Cpath fill=\"currentColor\" d=\"M16.5 3C19.538 3 22 5.5 22 9c0 7-7.5 11-10 12.5C9.5 20 2 16 2 9c0-3.5 2.5-6 5.5-6C9.36 3 11 4 12 5c1-1 2.64-2 4.5-2\"\u002F>",["Island",423],{"key":424,"result":425},"Brand_dlIOZD2O03VXPoFYukMOJnSnZRMTmJ0YwMKY5fNK8",{"head":426},{},["Island",428],{"key":429,"result":430},"Duration_19qLAxnDgw1WLTJVduwQIi1EKnB0ov0Mp83iVwTA",{"head":431},{},1785405178779]