Mis on keskkonnamuutujad ja saladused? Lihtne juhend
Keskkonnamuutuja on nimega seadistus — näiteks DATABASE_URL või STRIPE_SECRET_KEY — mis antakse sinu rakendusele käivitamisel, selle asemel et see oleks koodi kirjutatud. Saladus on keskkonnamuutuja, mille väärtus peab jääma privaatseks: API-võti, parool, allkirjastamisvõti. Kui need väärtused hoiad koodist väljaspool, saad neid muuta ilma rakendust muutmata, kasutada testimiseks ja päris klientidele erinevaid väärtusi ning takistada nende lekkimist, kui jagad või avaldad oma koodi.
Miks see AI-ga ehitamisel oluline on
Kohe kui sinu rakendus teeb midagi kasulikku teise teenusega — võtab makse vastu, saadab e-kirja, kutsub AI-mudelit — vajab see võtit. AI-rakenduste ehitajad küsivad neid võtmeid regulaarselt ja see, kuhu võti jõuab, otsustab, kas sinu rakendus on ohutu.
AI-ga ehitatud rakendustes läheb tavaliselt kaks asja valesti:
- Võti kleebitakse vestlusse või koodi. Siis elab see vestlusajaloos, projektifailides ja igas eksportis või hoidlas. Igaüks, kes need näeb, saab sinu kontot kasutada.
- Võtit kasutatakse brauseris. Kui kood, mis kutsub Stripe’i või OpenAI-d, töötab lehel, saadetakse võti igale külastajale. Inimesed vaatavad — ja automaatsed skannerid otsivad avalikke võtmeid pidevalt.
Keskkonnamuutujate mõistmine aitab neid kahte märgata ja parandust nõuda.
Igapäevane võrdlus: hotelli seif
Sinu rakenduse kood on nagu hotellituba. Külalised (ja koristajad ning kõik, kellele annad kaardi) käivad seal. Sa ei jätaks passi lauale.
Keskkonnamuutujad on toa seif. Tuba teab, et seif on olemas, ja teab, kuidas seda vajadusel avada, kuid passi ei ole kusagil laiali. Ja kui kolid teise tuppa — testseadistusest oma päris saidile — paned selle toa seifi teise passi, ilma et peaks seda ümber sisustama.
Kuidas see töötab
Sinu kood viitab nimele, mitte väärtusele. Serveris JavaScriptis näeb see välja nii: process.env.STRIPE_SECRET_KEY. Kui rakendus käivitub, täidab platvorm, kus see töötab, selle nime väärtusega. Muuda väärtust platvormi seadetes, käivita uuesti või avalda uuesti ning rakendus kasutab uut väärtust — koodi muutmata.
Kust väärtused tulevad, sõltub sellest, kus rakendus töötab:
| Kus see töötab | Kus väärtusi hoitakse |
|---|---|
| Arendaja sülearvutis | Kohalik fail, tavaliselt nimega .env, mida ei tohi kunagi gitti lisada |
| AI-ehitaja eelvaates | Projekti saladuste või seadete paneel |
| Hostimisplatvormil | Selle platvormi keskkonnamuutujate seaded |
| GitHub Actionsis või muus automaatikas | Teenuse enda krüpteeritud saladuste hoidla |
Avalikud ja salajased muutujad
Kõik keskkonnamuutujad ei ole salajased. Need on kasulik jagada kahte rühma:
| Liik | Näited | Kas brauser näeb seda? |
|---|---|---|
| Avalik seadistus | Saidi nimi, avalik analüütikakood, Stripe’i avalik võti, funktsioonilülitid | Jah, see on korras |
| Saladused | Stripe’i salajane võti, OpenAI või Anthropic API-võti, andmebaasi ühendusstring, e-posti teenuse võti, veebihaagi allkirjastamise saladus | Mitte kunagi |
Veebiraamistikud teevad selle jaotuse selgeks. Vite’is on brauseri koodis ainult need muutujad, mille nimed algavad VITE_-ga; Next.js’is on eesliide NEXT_PUBLIC_. See on turvafunktsioon: kõik nende eesliidetega läheb failidesse, mille iga külastaja alla laadib, seega saladusele ei tohi neid kunagi anda.
Töötav näide: AI-kokkuvõtte nupp
Soovid nuppu „Võta see märkus kokku“, mis kutsub AI-mudelit.
Ebaturvaline versioon: nupu kood, mis töötab brauseris, kutsub AI-teenusepakkujat otse ja API-võti on koodi kirjutatud. See töötab eelvaates. Samas tähendab see, et igaüks saab avada brauseri arendustööriistad, kopeerida võtme ja tekitada sinu kontole arve.
Turvaline versioon:
- Loo võti AI-teenusepakkuja juures ja salvesta see saladusena nimega
OPENAI_API_KEY(või sarnane) oma projekti seadetes. - Taustaprogrammil on marsruut
POST /api/summarise, mis loebprocess.env.OPENAI_API_KEY, kontrollib, et kasutaja on sisse logitud, ja kutsub teenusepakkujat. - Nupp kutsub sinu marsruuti, mitte teenusepakkujat. Brauser ei näe kunagi võtit.
- Lisad sama saladuse avaldatud rakenduse seadetesse ja avaldad uuesti, et ka elav sait seda omaks.
See muster — brauser kutsub sinu serverit, server hoiab võtit ja kutsub teenust — kehtib makselahenduste, e-posti, kaartide ja kõigi teiste tasuliste API-de puhul. Juhend LLM API-de kasutamise kohta käsitleb AI-juhtumit põhjalikumalt.
Põhimõisted
.env-fail: tekstifailNIMI=väärtusridadega, mida kasutatakse kohalikus arenduses. Lisa see.gitignore-faili, et seda ei committitaks..env.example: koopia ainult nimedega, ilma päris väärtusteta, mis committitakse, et teised teaksid, milliseid muutujaid seada.- Rotatsioon: asenda saladus uuega ja tühista vana.
- Ulatus / õigused: paljud teenusepakkujad lubavad luua võtmeid, mis saavad teha ainult teatud asju. Võti, mis saab saata ainult e-kirju, on vähem ohtlik kui see, mis saab kõike.
- Testvõtmed vs tootmisvõtmed: teenusepakkujad nagu Stripe annavad eraldi võtmed testimiseks ja päris raha jaoks. Kasuta testvõtmeid kuni käivitamiseni.
- Allkirjastamise saladus: saladus, mida kasutatakse selleks, et kontrollida, kas sõnum, näiteks veebihaak, tõesti tuli saatjalt.
Levinud vead ja väärarusaamad
- „Minu hoidla on privaatne, seega on võtmed selles korras.“ Privaatseid hoidlaid jagatakse, forkitakse, eksporditakse ja kloonitakse sülearvutitesse. Võtmed sinna ikka ei kuulu. Kui ühendad projekti GitHubiga, kontrolli, et ükski
.env-fail ei ole kaasatud. - „Ma kustutasin selle, seega on see läinud.“ Git hoiab ajalugu ja vestlusloogid hoiavad sõnumeid. Kui võti on kunagi lekkinud, rotatsioon on vajalik.
- Avaliku eesliite panemine saladusele.
VITE_OPENAI_KEYpaneb sinu võtme brauseri koodipakki. - Avaldamise unustamine. Muutuja muutmine seadetes mõjub tavaliselt alles pärast rakenduse taaskäivitamist või uuesti avaldamist.
- Üks võti kõige jaoks. Eraldi võtmed testimiseks ja tootmiseks ning iga rakenduse jaoks eraldi võimaldavad ühe tühistada, ilma et teised katkeksid.
- Kulupiirangu puudumine. Tasuliste API-de puhul sea teenusepakkuja tööriistalaual eelarve või piirang, siis kui võti peaks lekkima.
Mida küsida oma AI-ehitajalt
- „Loe Stripe’i salajane võti keskkonnamuutujast nimega
STRIPE_SECRET_KEY. Kasuta seda ainult serveris.“ - „Veendu, et ühtegi saladust ei kasutata kliendipoolses koodis ega anta sellele eesliidet
VITE_/NEXT_PUBLIC_.“ - „Loo
.env.example, mis loetleb kõik rakenduse vajalikud muutujad ilma väärtusteta, ja veendu, et.envon gitist välja jäetud.“ - „Kontrolli koostatud esifailid üle igasuguse stringi suhtes, mis näeb välja nagu API-võti.“
Meie turvakontrollnimekiri AI-ga ehitatud rakendustele käsitleb saladusi koos teiste kontrollidega, mida enne käivitamist tasub teha.
Saladused Mythexis
Mythexis on saladused projekti keskkonnamuutujad, mis suunatakse nii eelvaate liivakasti kui ka sinu avaldatud rakendusse. Lisad need jaotises projekti seaded → Secrets või vestluses käsuga /secrets. Kui agent vajab võtit, kuvab ta vestluses saladuste kaardi, nii et väärtus läheb vormi väljale ega jää vestlusesse. Kui muudad elava rakenduse saladust, avalda uuesti, et juurutus selle kätte saaks. Projektide eksportides saladusi ei ole ja imporditud .env-failid tühjendatakse, nii et lisad need seadetes uuesti. Vaata dokumentatsioonist keskkonnamuutujaid ja saladusi ja saladusi vestluses.
Küsimused
Mis on keskkonnamuutuja?
Keskkonnamuutuja on nimega seadistus, näiteks STRIPE_SECRET_KEY või DATABASE_URL, mis antakse programmile käivitamisel, selle asemel et see kirjutataks koodi sisse. Sama kood saab siis arenduses ja tootmises kasutada erinevaid väärtusi.
Mis vahe on keskkonnamuutujal ja saladusel?
Saladus on keskkonnamuutuja, mille väärtus peab jääma privaatseks, näiteks API-võti, andmebaasi parool või veebihaagi allkirjastamise saladus. Teised keskkonnamuutujad, nagu saidi nimi või funktsioonilüliti, võivad olla avalikud.
Kas API-võtmete panemine minu esiossa on ohutu?
Ei. Kõik esikoodis olev laaditakse alla iga külastaja brauserisse ja seda saab lugeda. Salajasi võtmeid tohib kasutada ainult serveris ning brauser peaks kutsuma sinu serverit, mis omakorda kutsub teenusepakkujat.
Mida teha, kui mu API-võti lekib?
Tühista või vaheta see kohe teenusepakkuja juures, loo uus, uuenda see kohas, kus sinu rakendus saladusi hoiab, ja avalda uuesti. Võtme kustutamine koodist või vestlusajaloost ei piisa, sest koopiad võivad juba olemas olla.