Juhendid

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öötabKus väärtusi hoitakse
Arendaja sülearvutisKohalik fail, tavaliselt nimega .env, mida ei tohi kunagi gitti lisada
AI-ehitaja eelvaatesProjekti saladuste või seadete paneel
HostimisplatvormilSelle platvormi keskkonnamuutujate seaded
GitHub Actionsis või muus automaatikasTeenuse enda krüpteeritud saladuste hoidla

Avalikud ja salajased muutujad

Kõik keskkonnamuutujad ei ole salajased. Need on kasulik jagada kahte rühma:

LiikNäitedKas brauser näeb seda?
Avalik seadistusSaidi nimi, avalik analüütikakood, Stripe’i avalik võti, funktsioonilülitidJah, see on korras
SaladusedStripe’i salajane võti, OpenAI või Anthropic API-võti, andmebaasi ühendusstring, e-posti teenuse võti, veebihaagi allkirjastamise saladusMitte 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:

  1. Loo võti AI-teenusepakkuja juures ja salvesta see saladusena nimega OPENAI_API_KEY (või sarnane) oma projekti seadetes.
  2. Taustaprogrammil on marsruut POST /api/summarise, mis loeb process.env.OPENAI_API_KEY, kontrollib, et kasutaja on sisse logitud, ja kutsub teenusepakkujat.
  3. Nupp kutsub sinu marsruuti, mitte teenusepakkujat. Brauser ei näe kunagi võtit.
  4. 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: tekstifail NIMI=väärtus ridadega, 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_KEY paneb 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 .env on 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.

Mythex · Pricing · Ehita kõike AI-ga · Veebilehtede ja rakenduste mallid · Mythex võrdluses · Tehisintellektiga rakenduste ehitamise sõnastik · Tasuta tööriistad tehisintellektiga rakenduste ehitamiseks · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)