Hvað eru umhverfisbreytur og leyndarupplýsingar? Einföld leiðbeining
Umhverfisbreyta er nefnd stilling, eins og DATABASE_URL eða STRIPE_SECRET_KEY, sem er afhent appinu þínu þegar það keyrir, í stað þess að vera skrifuð inn í kóðann. Leyndarupplýsing er umhverfisbreyta þar sem gildið verður að haldast einkarekið: API-lykill, lykilorð eða undirritunarlykill. Með því að geyma þessi gildi utan kóðans er hægt að breyta þeim án þess að breyta appinu, nota mismunandi gildi fyrir prófanir og fyrir raunverulega viðskiptavini, og koma í veg fyrir að þau leki þegar kóðinn er deilt eða birtur.
Af hverju þetta skiptir máli þegar smíðað er með gervigreind
Um leið og appið gerir eitthvað gagnlegt með annarri þjónustu, tekur við greiðslu, sendir tölvupóst eða kallar á gervigreindarlíkan, þarf það lykil. Smíðatól fyrir gervigreindaröpp biðja um þessa lykla reglulega, og hvar lykillinn endar ræður því hvort appið er öruggt.
Tvennt fer oft úrskeiðis í öppum sem gervigreind smíðar:
- Lykillinn er límdur inn í spjallið eða kóðann. Hann lifir þá í spjallsögunni, verkefnaskránum og hvers kyns útflutningi eða geymslu. Hver sem sér hann getur notað aðganginn þinn.
- Lykillinn er notaður í vafranum. Ef kóðinn sem kallar á Stripe eða OpenAI keyrir á síðunni er lykillinn sendur til hvers gests. Fólk skoðar þetta, og sjálfvirkir skannar leita stöðugt að óvörðum lyklum.
Þegar þú skilur umhverfisbreytur sérðu bæði vandamálin og getur beðið um lagfæringuna.
Hliðstæða úr daglegu lífi: hótelöryggishólfið
Kóði appsins þíns er eins og hótelherbergið. Gestir (og þrifafólk, og allir sem þú gefur lykilkort) ganga um það. Þú myndir ekki skilja vegabréfið þitt eftir á borðinu.
Umhverfisbreytur eru öryggishólfið í herberginu. Herbergið veit að hólfið er til og hvernig á að opna það þegar þörf er á, en vegabréfið liggur ekki á víðavangi. Og ef þú flytur í annað herbergi, til dæmis úr prófunaruppsetningunni yfir á lifandi síðuna, setur þú annað vegabréf í öryggishólf þess herbergis án þess að endurinnrétta það.
Hvernig þetta virkar
Kóðinn þinn vísar í nafn, ekki gildi. Í JavaScript á netþjóni lítur það út eins og process.env.STRIPE_SECRET_KEY. Þegar appið ræsist fyllir vettvangurinn sem það keyrir á inn gildið fyrir þetta nafn. Breyttu gildinu í stillingum vettvangsins, endurræstu eða birtu aftur, og appið notar nýja gildið án þess að kóðanum sé breytt.
Hvaðan gildin koma fer eftir því hvar appið keyrir:
| Hvar það keyrir | Hvar gildin eru geymd |
|---|---|
| Á fartölvu þróunaraðila | Staðbundin skrá sem heitir yfirleitt .env og má aldrei fara í git |
| Í forskoðun smíðatóls fyrir gervigreind | Leyndarmála- eða stillingaspjald verkefnisins |
| Á hýsingarvettvangi | Stillingar umhverfisbreyta vettvangsins |
| Í GitHub Actions eða annarri sjálfvirkni | Dulkóðuð leyndarmálageymsla þjónustunnar |
Opinberar og leynilegar breytur
Ekki eru allar umhverfisbreytur leyndar. Gagnlegt er að flokka þær í tvo hópa:
| Tegund | Dæmi | Getur vafrinn séð hana? |
|---|---|---|
| Opinber stilling | Heiti síðu, opinbert greiningarauðkenni, útgefanlegur Stripe-lykill, eiginleikarofar | Já, og það er í lagi |
| Leyndarupplýsingar | Leynilegur Stripe-lykill, API-lykill OpenAI eða Anthropic, tengistrengur gagnagrunns, lykill tölvupóstþjónustu, undirritunarlykill vefkróks | Aldrei |
Vefumgjörðin gera þessa skiptingu skýra. Í Vite eru aðeins breytur sem nöfn þeirra byrja á VITE_ teknar með í kóða vafrans; í Next.js er forskeytið NEXT_PUBLIC_. Þetta er öryggisatriði: allt með þessum forskeytum endar í skrám sem hver gestur sækir, svo leyndarupplýsing má aldrei fá slíkt forskeyti.
Vinnudæmi: gervigreindarhnappur sem tekur saman
Þú vilt hnapp „Taka saman þessa glósu“ sem kallar á gervigreindarlíkan.
Óörugga útgáfan: hnappakóðinn, sem keyrir í vafranum, kallar beint á þjónustuna með API-lyklinum skrifuðum inn í sig. Hún virkar í forskoðuninni. Það þýðir líka að hver sem er getur opnað þróunarverkfæri vafrans, afritað lykilinn og keyrt upp reikning á þínum aðgangi.
Örugga útgáfan:
- Þú býrð til lykilinn hjá gervigreindarþjónustunni og geymir hann sem leyndarupplýsingu sem heitir
OPENAI_API_KEY(eða sambærilegt) í stillingum verkefnisins. - Bakendinn fær leið,
POST /api/summarise, sem lesprocess.env.OPENAI_API_KEY, athugar hvort notandinn sé innskráður og kallar á þjónustuna. - Hnappurinn kallar á þína leið, ekki á þjónustuna. Vafrinn sér aldrei lykilinn.
- Þú bætir sömu leyndarupplýsingu við stillingar birta appsins og birtir aftur, svo lifandi síðan hafi hana líka.
Mynstrið, þar sem vafrinn kallar á þinn netþjón sem geymir lykilinn og kallar á þjónustuna, gildir um greiðslur, tölvupóst, kort og alla aðra greidda API. Leiðbeiningin um notkun LLM-API fjallar um gervigreindartilvikið dýpra.
Lykilhugtök
.env-skrá: textaskrá meðNAFN=gildi-línum sem er notuð í staðbundinni þróun. Settu hana á.gitignoresvo hún sé ekki færð í git..env.example: afrit með heitunum en án raunverulegra gilda, sem er fært í git svo aðrir viti hvaða breytur þarf að stilla.- Snúa (rotate): skipta leyndarupplýsingu út fyrir nýja og afturkalla þá gömlu.
- Gildissvið / heimildir: margar þjónustur leyfa lykla sem geta aðeins gert ákveðna hluti. Lykill sem getur aðeins sent tölvupóst er minna hættulegur en lykill sem getur allt.
- Prófunar- og lifandi lyklar: þjónustur eins og Stripe gefa aðskilda lykla fyrir prófanir og fyrir raunverulega peninga. Notaðu prófunarlykla þar til þú ferð í loftið.
- Undirritunarlykill: leyndarupplýsing sem er notuð til að staðfesta að skilaboð, eins og vefkrókur, komi raunverulega frá sendandanum.
Algeng mistök og misskilningur
- „Einkageymslan mín er lokuð, svo lyklar í henni eru í lagi.“ Einkageymslur eru deilt, afritaðar, fluttar út og klónaðar yfir á fartölvur. Lyklar eiga samt ekki heima þar. Ef þú tengir verkefni við GitHub, athugaðu að engin
.env-skrá fylgi með. - „Ég eyddi því, svo það er horfið.“ Git geymir sögu og spjallskrár geyma skilaboðin. Ef lykill hefur einhvern tíma lekið, snúðu honum.
- Að nota opinbert forskeyti á leyndarupplýsingu.
VITE_OPENAI_KEYsetur lykilinn þinn í vafrapakkann. - Að gleyma að birta aftur. Breyting á breytu í stillingum tekur yfirleitt aðeins gildi eftir að appið er endurræst eða birt aftur.
- Einn lykill fyrir allt. Aðskildir lyklar fyrir prófanir og lifandi notkun, og fyrir hvert app, gera það mögulegt að afturkalla einn án þess að brjóta hina.
- Engin útgjaldamörk. Fyrir greidd API-viðmót skaltu setja fjárhagsáætlun eða mörk í mælaborði þjónustuveitunnar, ef lykill skyldi leka.
Hvað á að biðja smíðatólið þitt um
- „Lestu Stripe-leyndarlykilinn úr umhverfisbreytu sem heitir
STRIPE_SECRET_KEY. Notaðu hann aðeins á netþjóninum.“ - „Gakktu úr skugga um að engin leyndarupplýsing sé notuð í kóða viðskiptavinar eða fái forskeytið
VITE_/NEXT_PUBLIC_.“ - „Búðu til
.env.examplesem telur upp allar breytur appsins, án gilda, og gakktu úr skugga um að.envsé undanskilin git.“ - „Athugaðu birtu framendaskrárnar hvort einhver strengur líkist API-lykli.“
Gátlistinn okkar fyrir öryggisyfirferð öpp smíðuð með gervigreind fjallar um leyndarupplýsingar ásamt hinum athugununum sem vert er að keyra fyrir birtingu.
Leyndarupplýsingar á Mythex
Á Mythex eru leyndarupplýsingar umhverfisbreytur verkefnisins sem eru settar bæði í forskoðunarumhverfið og í birta appið þitt. Þú bætir þeim við undir stillingar verkefnis → Secrets eða með /secrets í spjallinu. Þegar smíðaforritið þarf lykil birtist leyndarupplýsingaspjald í spjallinu, svo gildið fer í reit en ekki í spjallsöguna. Ef þú breytir leyndarupplýsingu fyrir lifandi app skaltu birta aftur svo útgáfan taki hana upp. Útflutningur verkefna sleppir leyndarupplýsingum og innfluttar .env-skrár eru hreinsaðar, svo þú bætir þeim aftur við í stillingunum. Sjá umhverfisbreytur og leyndarupplýsingar og leyndarupplýsingar í spjalli í skjölunum.
Spurningar
Hvað er umhverfisbreyta?
Umhverfisbreyta er nefnd stilling, eins og STRIPE_SECRET_KEY eða DATABASE_URL, sem er afhent forriti þegar það keyrir í stað þess að vera skrifuð inn í kóðann þess. Sami kóðinn getur þá notað mismunandi gildi í þróun og í framleiðslu.
Hver er munurinn á umhverfisbreytu og leyndarupplýsingu?
Leyndarupplýsing er umhverfisbreyta þar sem gildið verður að haldast einkarekið, eins og API-lykill, lykilorð gagnagrunns eða undirritunarlykill vefkróks. Aðrar umhverfisbreytur, eins og heiti síðu eða eiginleikarofi, mega vera opinberar.
Er óhætt að setja API-lykla í framendann?
Nei. Allt í framendakóða er sótt í vafra allra gesta og er hægt að lesa það. Leynilyklar mega aðeins nota á netþjóninum, og vafrinn ætti að kalla á þinn netþjón, sem kallar svo á þjónustuveituna.
Hvað á ég að gera ef API-lykillinn minn lekur?
Afturkallaðu hann eða snúðu honum hjá þjónustuveitunni strax, búðu til nýjan, uppfærðu hann þar sem appið geymir leyndarupplýsingar og birtu aftur. Að eyða lyklinum úr kóðanum eða spjallsögunni dugar ekki, því afrit gætu þegar verið til.