एन्व्हायर्नमेंट व्हेरिएबल्स आणि सिक्रेट्स म्हणजे काय? सोपे मार्गदर्शक
एक एन्व्हायर्नमेंट व्हेरिएबल म्हणजे नाव दिलेली सेटिंग — जसे DATABASE_URL किंवा STRIPE_SECRET_KEY — जी तुमच्या अॅपला ते चालू होताना दिली जाते, कोडमध्ये लिहिली जात नाही. सिक्रेट म्हणजे असा एन्व्हायर्नमेंट व्हेरिएबल ज्याची किंमत खाजगी राहिली पाहिजे: API key, पासवर्ड किंवा signing key. ही मूल्ये कोडबाहेर ठेवल्याने तुम्ही ती अॅपमध्ये बदल न करता बदलू शकता, चाचणीसाठी आणि खऱ्या ग्राहकांसाठी वेगवेगळी मूल्ये वापरू शकता आणि कोड शेअर किंवा प्रकाशित करताना ती लीक होण्यापासून वाचवू शकता.
AI सह तयार करताना हे का महत्त्वाचे आहे
तुमचे अॅप एखाद्या दुसऱ्या सेवेसोबत उपयुक्त काम करू लागते — पेमेंट घेणे, ईमेल पाठवणे, AI model ला कॉल करणे — तेव्हा त्याला key लागते. AI अॅप बिल्डर्स अशा keys नियमितपणे मागतात, आणि ती key शेवटी कुठे जाते यावर तुमचे अॅप सुरक्षित आहे की नाही ते ठरते.
AI-तयार अॅप्समध्ये दोन गोष्टी सहसा चुकतात:
- key चॅटमध्ये किंवा कोडमध्ये पेस्ट केली जाते. मग ती चॅट हिस्ट्री, प्रोजेक्ट फाइल्स आणि कोणत्याही export किंवा repository मध्ये राहते. ती पाहणारा कोणीही तुमच्या खात्याचा वापर करू शकतो.
- key ब्राउझरमध्ये वापरली जाते. Stripe किंवा OpenAI ला कॉल करणारा कोड पेजमध्ये चालला, तर key प्रत्येक भेट देणाऱ्याला पाठवली जाते. लोक ते पाहतातच — आणि स्वयंचलित स्कॅनर सतत उघड झालेल्या keys शोधत असतात.
एन्व्हायर्नमेंट व्हेरिएबल्स समजले की तुम्हाला दोन्ही ओळखता येतात, आणि त्यावर उपाय मागता येतो.
रोजच्या उदाहरणातून: हॉटेलमधील तिजोरी
तुमच्या अॅपचा कोड म्हणजे हॉटेलची खोली. पाहुणे (आणि साफसफाई करणारे, आणि ज्यांना तुम्ही कार्ड दिले आहे ते सर्व) त्यातून फिरतात. तुम्ही तुमचा पासपोर्ट टेबलावर ठेवत नाही.
एन्व्हायर्नमेंट व्हेरिएबल्स म्हणजे खोलीतील तिजोरी. खोलीला तिजोरी आहे आणि गरज पडल्यास ती कशी उघडायची हे माहीत असते, पण पासपोर्ट उघड्यावर पडलेला नसतो. आणि जेव्हा तुम्ही एका खोलीतून दुसऱ्या खोलीत जाता — तुमच्या चाचणी सेटअपमधून खऱ्या साइटवर — तेव्हा तुम्ही त्या खोलीच्या तिजोरीत वेगळा पासपोर्ट ठेवता, खोली पुन्हा सजवावी लागत नाही.
हे कसे काम करते
तुमचा कोड मूल्याचा नव्हे तर नावाचा संदर्भ देतो. सर्व्हरवरील JavaScript मध्ये ते असे दिसते: process.env.STRIPE_SECRET_KEY. अॅप सुरू होताना, ते चालणारे platform त्या नावासाठी मूल्य भरते. platform च्या सेटिंग्जमध्ये मूल्य बदला, restart किंवा redeploy करा, आणि अॅप नवीन मूल्य वापरते — कोड बदलावा लागत नाही.
मूल्ये कुठून येतात हे अॅप कुठे चालते त्यावर अवलंबून असते:
| कुठे चालते | मूल्ये कुठे ठेवली जातात |
|---|---|
| डेव्हलपरच्या laptop वर | सहसा .env नावाची स्थानिक फाइल, जी कधीही git मध्ये commit करू नये |
| AI बिल्डरच्या preview मध्ये | प्रोजेक्टचा secrets किंवा settings panel |
| होस्टिंग platform वर | त्या platform ची environment variables सेटिंग्ज |
| GitHub Actions किंवा इतर automation मध्ये | त्या सेवेचा स्वतःचा एन्क्रिप्टेड secrets store |
सार्वजनिक विरुद्ध सिक्रेट व्हेरिएबल्स
प्रत्येक एन्व्हायर्नमेंट व्हेरिएबल सिक्रेट नसते. त्यांचे दोन गटांत वर्गीकरण करणे उपयुक्त ठरते:
| प्रकार | उदाहरणे | ब्राउझरला दिसू शकते का? |
|---|---|---|
| सार्वजनिक कॉन्फिगरेशन | साइटचे नाव, सार्वजनिक analytics ID, Stripe publishable key, फीचर स्विच | हो, ते ठीक आहे |
| सिक्रेट्स | Stripe secret key, OpenAI किंवा Anthropic API key, डेटाबेस connection string, ईमेल provider key, webhook signing secret | कधीही नाही |
Web frameworks ही विभागणी स्पष्ट करतात. Vite मध्ये फक्त VITE_ ने सुरू होणारी नावे browser कोडमध्ये समाविष्ट होतात; Next.js मध्ये हा prefix NEXT_PUBLIC_ आहे. ही सुरक्षिततेची सोय आहे: या prefix असलेली प्रत्येक गोष्ट प्रत्येक भेट देणाऱ्याने डाउनलोड केलेल्या फाइल्समध्ये जाते, त्यामुळे सिक्रेटला कधीही असा prefix देऊ नये.
एक उदाहरण: AI सारांश बटण
तुम्हाला "या नोटचा सारांश करा" असे बटण हवे आहे, जे AI model ला कॉल करते.
असुरक्षित पद्धत: बटणाचा कोड, ब्राउझरमध्ये चालताना, थेट AI provider ला कॉल करतो आणि API key त्यात लिहिलेली असते. preview मध्ये ते चालते. पण त्याचा अर्थ असा की कोणीही developer tools उघडून key कॉपी करू शकतो आणि तुमच्या खात्यावर बिल वाढवू शकतो.
सुरक्षित पद्धत:
- तुम्ही provider कडे key तयार करता आणि ती तुमच्या प्रोजेक्ट सेटिंग्जमध्ये
OPENAI_API_KEY(किंवा तत्सम) नावाच्या सिक्रेट म्हणून ठेवता. - backend ला एक route मिळतो,
POST /api/summarise, जोprocess.env.OPENAI_API_KEYवाचतो, वापरकर्ता लॉगिन केलेला आहे का ते तपासतो आणि provider ला कॉल करतो. - बटण provider ला नव्हे, तर तुमच्या route ला कॉल करते. ब्राउझरला key कधीही दिसत नाही.
- तीच सिक्रेट प्रकाशित अॅपच्या सेटिंग्जमध्ये जोडा आणि redeploy करा, म्हणजे लाइव्ह साइटलाही ती मिळते.
हा पॅटर्न — ब्राउझर तुमच्या सर्व्हरला कॉल करतो, सर्व्हर key ठेवतो आणि सेवेला कॉल करतो — पेमेंट, ईमेल, नकाशे आणि इतर प्रत्येक पैसे लागणाऱ्या API साठी लागू होतो. AI च्या बाबतीत अधिक सखोल माहितीसाठी LLM API वापरण्याचे मार्गदर्शक पहा.
महत्त्वाच्या संज्ञा
.envफाइल: स्थानिक डेव्हलपमेंटमध्ये वापरली जाणारीNAME=valueओळींची मजकूर फाइल. ती commit होऊ नये म्हणून.gitignoreमध्ये टाका..env.example: खऱ्या मूल्यांशिवाय फक्त नावे असलेली प्रत, जी commit केली जाते, म्हणजे इतरांना कोणती व्हेरिएबल्स सेट करायची ते कळते.- Rotate: सिक्रेट नवीन मूल्याने बदलणे आणि जुने रद्द करणे.
- Scope / permissions: अनेक providers ठरावीक कामांसाठीच चालणाऱ्या keys तयार करू देतात. फक्त ईमेल पाठवू शकणारी key, सर्वकाही करू शकणाऱ्या keyपेक्षा कमी धोकादायक असते.
- Test विरुद्ध live keys: Stripe सारखे providers चाचणी आणि खऱ्या पैशांसाठी वेगळ्या keys देतात. लाँच होईपर्यंत test keys वापरा.
- Signing secret: एखादा संदेश, जसे की webhook, खरोखर पाठवणाऱ्याकडूनच आला आहे हे तपासायला वापरली जाणारी सिक्रेट.
सामान्य चुका आणि गैरसमज
- "माझी repository private आहे, म्हणून त्यात keys असणे ठीक आहे." Private repositories देखील शेअर, fork, export आणि laptop वर clone होतात. Keys तिथेही नसावेत. प्रोजेक्ट GitHub शी जोडत असाल तर कोणतीही
.envफाइल समाविष्ट नाही ते तपासा. - "मी ते डिलीट केले, म्हणजे ते गेले." Git इतिहास ठेवते आणि चॅट लॉग संदेश ठेवतात. key कधी उघड झाली असेल तर ती rotate करा.
- सिक्रेटला सार्वजनिक prefix देणे.
VITE_OPENAI_KEYतुमची key browser bundle मध्ये टाकते. - redeploy करायला विसरणे. सेटिंग्जमध्ये व्हेरिएबल बदलल्यावर ते सहसा अॅप restart किंवा पुन्हा प्रकाशित झाल्यावरच लागू होते.
- सर्वांसाठी एकच key. चाचणी आणि लाइव्हसाठी, तसेच प्रत्येक अॅपसाठी वेगळ्या keys ठेवल्याने एक रद्द करता येते आणि बाकीचे तुटत नाहीत.
- खर्च मर्यादा नसणे. पैसे लागणाऱ्या APIs साठी, key लीक झाल्यास, provider च्या dashboard मध्ये बजेट किंवा मर्यादा सेट करा.
तुमच्या AI बिल्डरकडे काय मागावे
- "
STRIPE_SECRET_KEYनावाच्या एन्व्हायर्नमेंट व्हेरिएबलमधून Stripe secret key वाचा. ती फक्त सर्व्हरवर वापरा." - "कोणतीही सिक्रेट client-side कोडमध्ये वापरली जाणार नाही किंवा तिला
VITE_/NEXT_PUBLIC_prefix दिला जाणार नाही याची खात्री करा." - "अॅपला लागणाऱ्या प्रत्येक व्हेरिएबलची यादी असलेली
.env.exampleफाइल तयार करा, मूल्यांशिवाय, आणि.envgit-ignore झाली आहे याची खात्री करा." - "बिल्ट frontend फाइल्समध्ये API key सारखी दिसणारी कोणतीही स्ट्रिंग तपासा."
लाइव्ह करण्याआधी तपासण्याजोग्या इतर गोष्टींसह सिक्रेट्सचा समावेश असलेले आमचे AI-तयार अॅप्ससाठी सुरक्षा चेकलिस्ट पहा.
Mythex वरील सिक्रेट्स
Mythex वर, सिक्रेट्स म्हणजे प्रोजेक्ट एन्व्हायर्नमेंट व्हेरिएबल्स, जे preview sandbox आणि तुमचे प्रकाशित अॅप दोन्हीमध्ये दिले जातात. ते project settings → Secrets अंतर्गत किंवा चॅटमध्ये /secrets वापरून जोडा. agent ला key लागते तेव्हा ते चॅटमध्ये secrets card दाखवते, त्यामुळे मूल्य संदेश इतिहासात न जाता फॉर्म फील्डमध्ये जाते. लाइव्ह अॅपसाठी सिक्रेट बदलले तर deploy ते उचलावे म्हणून पुन्हा publish करा. प्रोजेक्ट exports मधून सिक्रेट्स वगळली जातात आणि आयात केलेल्या .env फाइल्समधील मूल्ये काढली जातात, त्यामुळे ती सेटिंग्जमध्ये पुन्हा जोडा. docs मधील एन्व्हायर्नमेंट व्हेरिएबल्स आणि सिक्रेट्स आणि चॅटमधील सिक्रेट्स पहा.
प्रश्न
एन्व्हायर्नमेंट व्हेरिएबल म्हणजे काय?
एन्व्हायर्नमेंट व्हेरिएबल हे एक नावाने ओळखली जाणारी सेटिंग आहे, जसे की STRIPE_SECRET_KEY किंवा DATABASE_URL. ते कोडमध्ये लिहिण्याऐवजी प्रोग्राम चालू होताना दिले जाते. त्यामुळे तेच कोड डेव्हलपमेंट आणि प्रोडक्शनमध्ये वेगवेगळी मूल्ये वापरू शकते.
एन्व्हायर्नमेंट व्हेरिएबल आणि सिक्रेटमध्ये काय फरक आहे?
सिक्रेट हे असे एन्व्हायर्नमेंट व्हेरिएबल आहे ज्याची किंमत खाजगी राहिली पाहिजे, जसे API key, डेटाबेस पासवर्ड किंवा webhook signing secret. इतर एन्व्हायर्नमेंट व्हेरिएबल्स, जसे साइटचे नाव किंवा फीचर स्विच, सार्वजनिक असू शकतात.
माझ्या frontend मध्ये API keys टाकणे सुरक्षित आहे का?
नाही. frontend कोडमधील प्रत्येक गोष्ट प्रत्येक भेट देणाऱ्याच्या ब्राउझरवर डाउनलोड होते आणि ती वाचता येते. सिक्रेट keys फक्त सर्व्हरवर वापरायला हव्यात. ब्राउझरने तुमच्या सर्व्हरला कॉल करावा आणि सर्व्हरने पुढे provider ला कॉल करावा.
माझी API key लीक झाली तर मी काय करावे?
लगेच provider कडे ती रद्द करा किंवा बदला, नवीन key तयार करा, ती तुमचे अॅप सिक्रेट्स जिथे ठेवते तिथे अपडेट करा आणि पुन्हा deploy करा. फक्त कोडमधून किंवा चॅट हिस्ट्रीमधून key काढणे पुरेसे नाही, कारण तिच्या प्रती आधीच असू शकतात.