ఎన్విరాన్మెంట్ వేరియబుల్స్ మరియు సీక్రెట్లు అంటే ఏమిటి? సరళ మార్గదర్శిని
ఎన్విరాన్మెంట్ వేరియబుల్ అనేది DATABASE_URL లేదా STRIPE_SECRET_KEY వంటి పేరున్న సెట్టింగ్ — ఇది మీ యాప్ నడిచేటప్పుడు దానికి ఇవ్వబడుతుంది, కోడ్లో రాయబడకుండా. సీక్రెట్ అనేది విలువ ప్రైవేట్గా ఉండాల్సిన ఎన్విరాన్మెంట్ వేరియబుల్: API కీ, పాస్వర్డ్, సంతకం కీ. ఈ విలువలను కోడ్ బయట ఉంచడం వల్ల యాప్ను సవరించకుండా వాటిని మార్చవచ్చు, పరీక్షకు మరియు నిజమైన కస్టమర్లకు వేర్వేరు విలువలు వాడవచ్చు, మరియు మీరు కోడ్ను పంచుకున్నప్పుడు లేదా ప్రచురించినప్పుడు అవి లీక్ కాకుండా ఆపవచ్చు.
AI తో నిర్మించేటప్పుడు ఇది ఎందుకు ముఖ్యం
మీ యాప్ మరొక సేవతో ఉపయోగకరమైనది ఏదైనా చేసిన క్షణంలో — చెల్లింపు తీసుకోవడం, ఇమెయిల్ పంపడం, AI మోడల్ను కాల్ చేయడం — దానికి కీ అవసరం. AI యాప్ బిల్డర్లు ఈ కీలను క్రమం తప్పకుండా అడుగుతారు, మరియు కీ ఎక్కడికి చేరుతుంది అనేదే మీ యాప్ సురక్షితమా లేదా అని నిర్ణయిస్తుంది.
AI తో నిర్మించిన యాప్లలో రెండు విషయాలు సాధారణంగా తప్పుతాయి:
- కీని చాట్లో లేదా కోడ్లో అతికించడం. అప్పుడు అది చాట్ హిస్టరీ, ప్రాజెక్ట్ ఫైళ్లు మరియు ఏ ఎగుమతి లేదా రిపాజిటరీలోనైనా ఉంటుంది. వాటిని చూసిన ఎవరైనా మీ ఖాతాను వాడగలరు.
- కీని బ్రౌజర్లో వాడటం. పేజీలో నడిచే కోడ్ నేరుగా Stripe లేదా OpenAI ను కాల్ చేస్తే, కీ ప్రతి సందర్శకుడికి పంపబడుతుంది. ప్రజలు నిజంగా చూస్తారు — మరియు బహిర్గత కీల కోసం స్వయంచాలక స్కానర్లు నిరంతరం వెతుకుతాయి.
ఎన్విరాన్మెంట్ వేరియబుల్స్ అర్థం చేసుకుంటే ఈ రెండింటినీ గుర్తించి పరిష్కారం అడగగలరు.
రోజువారీ పోలిక: హోటల్ సేఫ్
మీ యాప్ కోడ్ హోటల్ గది లాంటిది. అతిథులు (మరియు క్లీనర్లు, మరియు మీరు కీ కార్డ్ ఇచ్చిన ఎవరైనా) దాని గుండా నడుస్తారు. మీ పాస్పోర్ట్ను డెస్క్పై వదిలేయరు.
ఎన్విరాన్మెంట్ వేరియబుల్స్ గదిలోని సేఫ్ లాంటివి. గదికి సేఫ్ ఉందని, అవసరమైనప్పుడు దాన్ని ఎలా తెరవాలో తెలుసు, కానీ పాస్పోర్ట్ ఎక్కడో పడి ఉండదు. మరియు మీరు వేరే గదికి మారినప్పుడు — మీ టెస్ట్ సెటప్ నుండి లైవ్ సైట్కు — గది అలంకరణ మార్చకుండానే ఆ గది సేఫ్లో వేరే పాస్పోర్ట్ పెడతారు.
ఇది ఎలా పనిచేస్తుంది
మీ కోడ్ విలువను కాకుండా ఒక పేరును సూచిస్తుంది. సర్వర్పై JavaScriptలో అది process.env.STRIPE_SECRET_KEY లా కనిపిస్తుంది. యాప్ ప్రారంభమైనప్పుడు, అది నడిచే ప్లాట్ఫామ్ ఆ పేరుకు విలువను నింపుతుంది. ప్లాట్ఫామ్ సెట్టింగ్లలో విలువ మార్చి, పునఃప్రారంభించి లేదా మళ్లీ డిప్లాయ్ చేస్తే, యాప్ కొత్త విలువను వాడుతుంది — కోడ్ మార్పు లేకుండానే.
యాప్ ఎక్కడ నడుస్తుందో బట్టి విలువలు ఎక్కడ నుండి వస్తాయో మారుతుంది:
| ఎక్కడ నడుస్తుంది | విలువలు ఎక్కడ ఉంచబడతాయి |
|---|---|
| డెవలపర్ ల్యాప్టాప్లో | సాధారణంగా .env అనే స్థానిక ఫైల్, అది git లో ఎప్పుడూ కమిట్ కాకూడదు |
| AI బిల్డర్ ప్రివ్యూలో | ప్రాజెక్ట్ యొక్క సీక్రెట్లు లేదా సెట్టింగ్ల ప్యానెల్ |
| హోస్టింగ్ ప్లాట్ఫామ్లో | ఆ ప్లాట్ఫామ్ యొక్క ఎన్విరాన్మెంట్ వేరియబుల్స్ సెట్టింగ్లు |
| GitHub Actions లేదా ఇతర ఆటోమేషన్లో | ఆ సేవ యొక్క ఎన్క్రిప్ట్ చేసిన సీక్రెట్ల స్టోర్ |
పబ్లిక్ vs సీక్రెట్ వేరియబుల్స్
ప్రతి ఎన్విరాన్మెంట్ వేరియబుల్ రహస్యం కాదు. వాటిని రెండు సమూహాలుగా విభజించడం సహాయపడుతుంది:
| రకం | ఉదాహరణలు | బ్రౌజర్ చూడగలదా? |
|---|---|---|
| పబ్లిక్ కాన్ఫిగరేషన్ | సైట్ పేరు, పబ్లిక్ అనలిటిక్స్ ID, Stripe publishable కీ, ఫీచర్ స్విచ్లు | అవును, అది సరే |
| సీక్రెట్లు | Stripe secret కీ, OpenAI లేదా Anthropic API కీ, డేటాబేస్ కనెక్షన్ స్ట్రింగ్, ఇమెయిల్ ప్రొవైడర్ కీ, వెబ్హుక్ సంతకం కీ | ఎప్పుడూ కాదు |
వెబ్ ఫ్రేమ్వర్క్లు ఈ విభజనను స్పష్టంగా చూపుతాయి. Vite లో, పేర్లు VITE_ తో మొదలయ్యే వేరియబుల్స్ మాత్రమే బ్రౌజర్ కోడ్లో చేర్చబడతాయి; Next.js లో ఉపసర్గ NEXT_PUBLIC_. ఇది భద్రతా లక్షణం: ఆ ఉపసర్గలు ఉన్నవి ప్రతి సందర్శకుడు డౌన్లోడ్ చేసే ఫైళ్లలో ముగుస్తాయి, కాబట్టి సీక్రెట్కు ఎప్పుడూ అలాంటి ఉపసర్గ ఇవ్వకూడదు.
ఒక ఉదాహరణ: AI సారాంశ బటన్
AI మోడల్ను కాల్ చేసే "ఈ నోట్ను సంక్షిప్తీకరించు" బటన్ కావాలని అనుకుందాం.
అసురక్షిత వెర్షన్: బటన్ కోడ్, బ్రౌజర్లో నడుస్తూ, API కీని అందులో రాసి నేరుగా AI ప్రొవైడర్ను కాల్ చేస్తుంది. ప్రివ్యూలో పని చేస్తుంది. కానీ ఎవరైనా బ్రౌజర్ డెవలపర్ టూల్స్ తెరిచి కీని కాపీ చేసి మీ ఖాతాపై బిల్లు పెంచగలరు.
సురక్షిత వెర్షన్:
- మీరు ప్రొవైడర్ వద్ద కీ సృష్టించి, మీ ప్రాజెక్ట్ సెట్టింగ్లలో
OPENAI_API_KEY(లేదా ఇలాంటి) పేరుతో సీక్రెట్గా నిల్వ చేస్తారు. - బ్యాక్ఎండ్లో
POST /api/summariseఅనే రూట్ ఉంటుంది, అదిprocess.env.OPENAI_API_KEYచదువుతుంది, వినియోగదారు లాగిన్ అయ్యారో తనిఖీ చేస్తుంది, మరియు ప్రొవైడర్ను కాల్ చేస్తుంది. - బటన్ ప్రొవైడర్ను కాదు, మీ రూట్ను కాల్ చేస్తుంది. బ్రౌజర్ కీని ఎప్పుడూ చూడదు.
- ప్రచురించిన యాప్ సెట్టింగ్లకు అదే సీక్రెట్ను జోడించి మళ్లీ డిప్లాయ్ చేస్తారు, తద్వారా లైవ్ సైట్కు కూడా అది ఉంటుంది.
ఈ నమూనా — బ్రౌజర్ మీ సర్వర్ను కాల్ చేస్తుంది, మీ సర్వర్ కీని ఉంచి సేవను కాల్ చేస్తుంది — చెల్లింపులు, ఇమెయిల్, మ్యాప్లు మరియు ప్రతి ఇతర చెల్లింపు API కు వర్తిస్తుంది. AI కేసు గురించి మరింత లోతుగా LLM APIలను ఎలా వాడాలి గైడ్ వివరిస్తుంది.
ముఖ్య పదాలు
.envఫైల్: స్థానిక డెవలప్మెంట్లో ఉపయోగించేNAME=valueలైన్ల టెక్స్ట్ ఫైల్. కమిట్ కాకుండా ఉండటానికి.gitignoreలో చేర్చండి..env.example: పేర్లు ఉన్న, కానీ అసలు విలువలు లేని కాపీ, ఇతరులకు ఏ వేరియబుల్స్ సెట్ చేయాలో తెలియడానికి కమిట్ చేయబడుతుంది.- Rotate: సీక్రెట్ను కొత్తదానితో మార్చి పాతదాన్ని రద్దు చేయడం.
- Scope / permissions: అనేక ప్రొవైడర్లు కొన్ని పనులు మాత్రమే చేయగల కీలను సృష్టించనిస్తారు. కేవలం ఇమెయిల్ పంపగల కీ, ప్రతిదీ చేయగల కీ కంటే తక్కువ ప్రమాదకరం.
- టెస్ట్ vs లైవ్ కీలు: Stripe వంటి ప్రొవైడర్లు పరీక్షకు మరియు నిజమైన డబ్బుకు వేర్వేరు కీలు ఇస్తారు. ప్రారంభించే వరకు టెస్ట్ కీలు వాడండి.
- సైనింగ్ సీక్రెట్: ఒక సందేశం, ఉదాహరణకు వెబ్హుక్, నిజంగా పంపినవారి నుండి వచ్చిందో తనిఖీ చేయడానికి వాడే సీక్రెట్.
సాధారణ తప్పులు మరియు అపోహలు
- "నా రిపాజిటరీ ప్రైవేట్, కాబట్టి అందులో కీలు ఉండటం సరే." ప్రైవేట్ రిపాజిటరీలు పంచబడతాయి, ఫోర్క్ చేయబడతాయి, ఎగుమతి చేయబడతాయి, మరియు ల్యాప్టాప్లకు క్లోన్ చేయబడతాయి. కీలు అక్కడ చెందవు. ప్రాజెక్ట్ను GitHub కు కనెక్ట్ చేస్తే,
.envఫైల్ చేర్చబడలేదని తనిఖీ చేయండి. - "తొలగించాను, కాబట్టి పోయింది." Git చరిత్రను ఉంచుతుంది, చాట్ లాగ్లు సందేశాలను ఉంచుతాయి. కీ ఎప్పుడైనా బహిర్గతమైతే, దాన్ని మార్చండి.
- సీక్రెట్కు పబ్లిక్ ఉపసర్గ ఇవ్వడం.
VITE_OPENAI_KEYమీ కీని బ్రౌజర్ బండిల్లో ఉంచుతుంది. - మళ్లీ డిప్లాయ్ చేయడం మర్చిపోవడం. సెట్టింగ్లలో వేరియబుల్ మార్చితే సాధారణంగా యాప్ పునఃప్రారంభమైన లేదా మళ్లీ ప్రచురించిన తర్వాతే అమలులోకి వస్తుంది.
- అన్నింటికీ ఒకే కీ. టెస్ట్ మరియు లైవ్కు, ప్రతి యాప్కు వేర్వేరు కీలు ఉంటే, మిగతావి విరగకుండా ఒకదాన్ని రద్దు చేయవచ్చు.
- ఖర్చు పరిమితి లేకపోవడం. చెల్లింపు APIల కోసం, కీ లీక్ అయితే కోసం ప్రొవైడర్ డ్యాష్బోర్డ్లో బడ్జెట్ లేదా పరిమితి సెట్ చేయండి.
మీ AI బిల్డర్ను ఏమి అడగాలి
- "Stripe సీక్రెట్ కీని
STRIPE_SECRET_KEYఅనే ఎన్విరాన్మెంట్ వేరియబుల్ నుండి చదవండి. దాన్ని సర్వర్లో మాత్రమే వాడండి." - "ఏ సీక్రెట్ క్లయింట్-సైడ్ కోడ్లో వాడబడకుండా, లేదా
VITE_/NEXT_PUBLIC_ఉపసర్గ ఇవ్వబడకుండా చూడండి." - "యాప్కు అవసరమైన ప్రతి వేరియబుల్ను విలువలు లేకుండా జాబితా చేసే
.env.exampleసృష్టించండి, మరియు.envgit-ignore లో ఉందని నిర్ధారించండి." - "బిల్ట్ ఫ్రంట్ఎండ్ ఫైళ్లలో API కీలా కనిపించే ఏ స్ట్రింగ్నైనా తనిఖీ చేయండి."
మా AI-నిర్మిత యాప్ల కోసం భద్రతా చెక్లిస్ట్ ప్రారంభానికి ముందు నడపదగిన ఇతర తనిఖీలతో పాటు సీక్రెట్లను కూడా వివరిస్తుంది.
Mythex లో సీక్రెట్లు
Mythex లో, సీక్రెట్లు ప్రాజెక్ట్ ఎన్విరాన్మెంట్ వేరియబుల్స్, వీటిని ప్రివ్యూ శాండ్బాక్స్ మరియు మీ ప్రచురించిన యాప్ రెండింటిలోనూ ఇంజెక్ట్ చేస్తారు. మీరు వాటిని project settings → Secrets కింద లేదా చాట్లో /secrets తో జోడిస్తారు, మరియు ఏజెంట్కు కీ అవసరమైనప్పుడు అది చాట్లో ఒక secrets కార్డ్ చూపిస్తుంది, తద్వారా విలువ సందేశ ట్రాన్స్క్రిప్ట్లో కాకుండా ఫారం ఫీల్డ్లోకి వెళ్తుంది. లైవ్ యాప్ కోసం సీక్రెట్ మార్చినట్లయితే, డిప్లాయ్ దాన్ని అందుకోవడానికి మళ్లీ ప్రచురించండి. ప్రాజెక్ట్ ఎగుమతులు సీక్రెట్లను వదిలేస్తాయి, మరియు దిగుమతి చేసిన .env ఫైళ్ల నుండి అవి తొలగించబడతాయి, కాబట్టి మీరు వాటిని సెట్టింగ్లలో మళ్లీ జోడించాలి. డాక్స్లో ఎన్విరాన్మెంట్ వేరియబుల్స్ మరియు సీక్రెట్లు మరియు చాట్లో సీక్రెట్లు చూడండి.
ప్రశ్నలు
ఎన్విరాన్మెంట్ వేరియబుల్ అంటే ఏమిటి?
ఎన్విరాన్మెంట్ వేరియబుల్ అనేది STRIPE_SECRET_KEY లేదా DATABASE_URL వంటి పేరున్న సెట్టింగ్, ఇది ప్రోగ్రామ్ కోడ్లో రాయకుండా, అది నడిచేటప్పుడు ఇవ్వబడుతుంది. అదే కోడ్ డెవలప్మెంట్ మరియు ప్రొడక్షన్లో వేర్వేరు విలువలు వాడగలదు.
ఎన్విరాన్మెంట్ వేరియబుల్కు, సీక్రెట్కు తేడా ఏమిటి?
సీక్రెట్ అనేది విలువ ప్రైవేట్గా ఉండాల్సిన ఎన్విరాన్మెంట్ వేరియబుల్, ఉదాహరణకు API కీ, డేటాబేస్ పాస్వర్డ్ లేదా వెబ్హుక్ సంతకం కీ. సైట్ పేరు లేదా ఫీచర్ స్విచ్ వంటి ఇతర ఎన్విరాన్మెంట్ వేరియబుల్స్ పబ్లిక్గా ఉండవచ్చు.
నా ఫ్రంట్ఎండ్లో API కీలు పెట్టడం సురక్షితమా?
కాదు. ఫ్రంట్ఎండ్ కోడ్లోని ప్రతిదీ ప్రతి సందర్శకుడి బ్రౌజర్కు డౌన్లోడ్ అవుతుంది మరియు చదవగలరు. సీక్రెట్ కీలను సర్వర్లో మాత్రమే వాడాలి, మరియు బ్రౌజర్ మీ సర్వర్ను కాల్ చేయాలి, అది ప్రొవైడర్ను కాల్ చేయాలి.
నా API కీ లీక్ అయితే ఏమి చేయాలి?
వెంటనే ప్రొవైడర్ వద్ద దాన్ని రద్దు చేయండి లేదా మార్చండి, కొత్తది సృష్టించండి, మీ యాప్ సీక్రెట్లను నిల్వ చేసే ప్రతి చోటా అప్డేట్ చేసి, మళ్లీ డిప్లాయ్ చేయండి. మీ కోడ్ లేదా చాట్ హిస్టరీ నుండి కీని తొలగించడం సరిపోదు, ఎందుకంటే కాపీలు ఇప్పటికే ఉండవచ్చు.