मैंने dotenv छोड़ दिया और Varlock अपनाया (जानिए क्यों)

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00यह Valor है, जो एनवायरनमेंट वेरिएबल्स को मैनेज करने के लिए एक ओपन सोर्स टूल है, जो यह सुनिश्चित करता है कि
00:00:04आपको फिर कभी डिस्क पर प्लेन टेक्स्ट सीक्रेट्स स्टोर न करने पड़ें। यह एनवायरनमेंट वेरिएबल्स को
00:00:10लोकली या 1Password, Bitwarden, AWS जैसे पासवर्ड मैनेजर्स के जरिए रिजॉल्व करके काम करता है।
00:00:16यह एक टाइप-सेफ स्कीमा का उपयोग करता है और रनटाइम पर आपके सीक्रेट्स को ऐप में इंजेक्ट करता है, जिससे आपकी .env
00:00:21फ़ाइल AI के लिए सुरक्षित हो जाती है और इसे GitHub पर सार्वजनिक रूप से भी डाला जा सकता है। लेकिन यह असल में काम कैसे करता है
00:00:27और इस अजीब सिंटैक्स का क्या मतलब है? सब्सक्राइब बटन दबाएं और चलिए शुरू करते हैं।
00:00:31कितनी बार ऐसा हुआ है कि आपने कोई नया देव रोल शुरू किया, कोड का एक्सेस मिला, उसे लोकली रन किया
00:00:39और वह काम नहीं करता, सिर्फ इसलिए क्योंकि आपके पास .env फ़ाइल नहीं है, जो आपको किसी दूसरे डेवलपर से
00:00:45या किसी एनक्रिप्टेड स्टोरेज से लेनी पड़ती है? और आपको यह प्रोसेस बार-बार दोहराना पड़ता है
00:00:50जब भी वह .env फ़ाइल अपडेट होती है। Valor इसी समस्या को हल करने के लिए बनाया गया है और यह
00:00:56प्रॉम्प्ट-इंजेक्टेड AI एजेंट्स द्वारा गलत सीक्रेट्स हासिल करने की समस्या को भी रोकता है। आइए देखें यह कैसे काम करता है।
00:01:02तो यहाँ एक छोटा प्रोजेक्ट है जिस पर मैं काम कर रहा हूँ, जो ट्विटर वीडियो से आर्टिकल जनरेट करता है,
00:01:06इसमें वीडियो ट्रांसक्राइब करने के लिए OpenAI के Whisper और आर्टिकल लिखने के लिए Claude का इस्तेमाल किया गया है।
00:01:12लेकिन हम कुछ आसान चीज़ से शुरुआत करेंगे और पोर्ट नंबर बदलने के लिए Valor का उपयोग करेंगे। Valor
00:01:17इंस्टॉल होने के बाद, हमारे पास एक .env स्कीमा फ़ाइल होनी चाहिए जो अभी खाली है। यह हमारे सभी
00:01:23एनवायरनमेंट वेरिएबल्स के लिए एकमात्र विश्वसनीय स्रोत होगी और इसे पब्लिक GitHub रेपो में कमिट किया जा सकेगा।
00:01:28हम एक साधारण 'appenv' एनवायरनमेंट वेरिएबल जोड़कर शुरुआत करेंगे और इसकी वैल्यू 'testing' सेट करेंगे।
00:01:33अब मैं एक नया टैब बनाकर 'varlock load' रन कर सकता हूँ जो हमारे स्कीमा को वैलिडेट करेगा। अब
00:01:39हम यहाँ देख सकते हैं कि इसने हमारे वेरिएबल को पढ़ लिया है और उसे 'sensitive' सेट कर दिया है।
00:01:43ऐसा इसलिए है क्योंकि Varlock में सभी एनवायरनमेंट वेरिएबल्स डिफॉल्ट रूप से सेंसिटिव होते हैं, लेकिन हम इसे बदल सकते हैं।
00:01:48इस फ़ाइल में मैं अपना पहला डेकोरेटर जोड़ूँगा, जो एक 'root decorator' होगा
00:01:52क्योंकि यह फ़ाइल के सभी एनवायरनमेंट वेरिएबल्स को प्रभावित करेगा, और हम 'default sensitive' को फॉल्स सेट कर देंगे।
00:01:56ध्यान दें कि यहाँ सिंटैक्स के आगे एक हैशटैग (#) है और आमतौर पर रूट वेरिएबल्स को डिवाइडर से अलग किया जाता है।
00:02:02अब, यह पूरी फ़ाइल 'mspec' नामक डोमेन स्पेसिफिक लैंग्वेज का उपयोग करती है,
00:02:08जो Varlock टीम द्वारा लिखी गई एक ओपन स्पेक है। अब अगर मैं फिर से स्कीमा वैलिडेट करता हूँ, तो हम
00:02:14वेरिएबल की वैल्यू देख सकते हैं क्योंकि अब यह सेंसिटिव नहीं है। लेकिन हम अपनी स्कीमा फ़ाइल में
00:02:19कुछ और भी बेहतरीन चीज़ें कर सकते हैं जैसे वेरिएबल को एक 'टाइप' देना। तो मैं
00:02:24इसे 'string' टाइप दूँगा, जिसका मतलब है कि सब कुछ ठीक काम करेगा, लेकिन अगर मैं इसे बदलकर
00:02:29नंबर कर दूँ, तो हमें एरर दिखेगा क्योंकि यह स्ट्रिंग की उम्मीद कर रहा है। मैं इसे
00:02:33'required' डेकोरेटर भी दे सकता हूँ और फिर इस टेक्स्ट को हटा सकता हूँ, जिसका मतलब है कि अगर हम फ़ाइल चेक करेंगे तो एरर आएगा
00:02:39क्योंकि यह एक वैल्यू की उम्मीद कर रहा है। इन्हें 'item decorators' कहा जाता है और आप इनकी पूरी लिस्ट
00:02:44Varlock डॉक्यूमेंटेशन में देख सकते हैं, साथ ही सभी उपलब्ध टाइप्स की लिस्ट भी। चलिए अब एक और
00:02:50एनवायरनमेंट वेरिएबल जोड़ते हैं और इस बार हम इसे 3002 वैल्यू के साथ 'port' नाम देंगे। मैं इसे
00:02:55'port' टाइप दे सकता हूँ और मैं यहाँ इसे 'sensitive' सेट कर दूँगा और इसे वापस स्ट्रिंग में बदल दूँगा।
00:03:01अब इसने हमारे दोनों वेरिएबल्स को चुन लिया है और इसे छुपा दिया है क्योंकि यह सेंसिटिव है।
00:03:05लेकिन अब हम इन वैल्यूज को अपने एप्लिकेशन में कैसे लाएँ? हमें बस
00:03:10'varlock run' के साथ वह स्क्रिप्ट चलानी है जिससे हमारा ऐप चलता है। तो अगर मैं package.json फ़ाइल देखूँ,
00:03:15तो हम देख सकते हैं कि फ्रंटएंड चलाने के लिए हमें 'vite' कमांड चलानी होगी। तो अब अगर मैं 'varlock run' के बाद
00:03:21'vite' कमांड चलाता हूँ, तो इसे कॉन्फ़िग लोड करना चाहिए, उसे रिजॉल्व करना चाहिए और फिर हमारे एनवायरनमेंट वेरिएबल्स
00:03:27में इंजेक्ट कर देना चाहिए, जो इसने बिल्कुल सही किया है क्योंकि अब पोर्ट 3002 है, जो हमारे कोड में काम करता है
00:03:33क्योंकि यह पहले पोर्ट एनवायरनमेंट वेरिएबल को चेक करता है जो फिलहाल Varlock द्वारा इंजेक्ट किया जा रहा है।
00:03:38यह स्क्रिप्ट सिर्फ एक जावास्क्रिप्ट फ़ाइल होने की ज़रूरत नहीं है क्योंकि Varlock किसी भी प्रोजेक्ट के लिए काम करता है,
00:03:43चाहे वह Python, Go, Rust हो, सब कुछ उम्मीद के मुताबिक काम करना चाहिए। और अगर आप इसे
00:03:48npm से इंस्टॉल नहीं करना चाहते, तो एक Varlock CLI भी है जो बिल्कुल वैसे ही काम करता है। यह सब
00:03:54लोकल वेरिएबल्स के लिए तो ठीक है, लेकिन अब आइए इन्हें अपने शेल लोकल वेरिएबल्स के बजाय
00:03:591Password से फेच करने का प्रोसेस देखते हैं, जैसे कि यह OpenAI और Anthropic API की।
00:04:05अब, मैं निजी तौर पर 1Password का उपयोग नहीं करता, मैंने सिर्फ यह वीडियो बनाने के लिए ट्रायल साइनअप किया है, लेकिन जैसा कि
00:04:11आप देख सकते हैं मैंने एक नया वॉल्ट बनाया है, जो बहुत ज़रूरी है (मैं बाद में बताऊंगा क्यों), और इस
00:04:16वॉल्ट के अंदर हमारे पास दो आइटम हैं, एक OpenAI API की और एक Anthropic API की, जिन्हें
00:04:24दिखाने में मुझे कोई परेशानी नहीं है क्योंकि ये पूरी तरह फर्जी हैं। तो अगर मैं इसे रिवील करूँ, तो यह असली की नहीं है। अब,
00:04:30इन वैल्यूज को अपने Varlock स्कीमा में लाने के लिए हमें सबसे पहले 1Password प्लगइन इंस्टॉल करना होगा।
00:04:36ध्यान दें कि Varlock प्लगइन्स अपने खुद के रूट और आइटम डेकोरेटर्स जोड़ सकते हैं, तो आप यहाँ कुछ नए देख सकते हैं
00:04:42जो डॉक्यूमेंटेशन में नहीं हैं, जैसे कि यह 'init 1password' डेकोरेटर। तो
00:04:49'varlock-1password' इंस्टॉल करने के बाद हम प्लगइन रूट डेकोरेटर लोड कर सकते हैं जिसमें वह प्लगइन है
00:04:55और हम 'init 1password' डेकोरेटर चला सकते हैं। फिलहाल मुझे बस टोकन की ज़रूरत है
00:05:01जिसे मैं यहाँ से लोड कर सकता हूँ। अब, यह टोकन पाने के लिए आपको इसे एक नए वॉल्ट से जोड़ना होगा,
00:05:06अपने पर्सनल वॉल्ट से नहीं। आप इसे 'developer service account' में जाकर टोकन बनाने के स्टेप्स फॉलो करके पा सकते हैं।
00:05:11चूँकि मैं इस वीडियो के बाद अपना टोकन और अकाउंट डिलीट कर दूँगा,
00:05:15तो मुझे इसे दिखाने में कोई दिक्कत नहीं है। मैं इसे 'one password service token' टाइप दूँगा जो कि
00:05:21सेंसिटिव सेट है और यह टाइप इसी प्लगइन से आता है। आपने यह भी गौर किया होगा कि इस फ़ाइल में
00:05:26कोई सिंटैक्स हाइलाइटिंग नहीं है, और ऐसा इसलिए है क्योंकि Varlock टीम ने एक VS Code प्लगइन बनाया है
00:05:32जो इसे सपोर्ट करता है, लेकिन फिलहाल Neovim के लिए कोई नहीं है। शायद मैं भविष्य में एक बनाऊँगा
00:05:37या सिर्फ Claude से बनवा लूँगा। अब मैं एक नया एनवायरनमेंट वेरिएबल बनाऊँगा जिसे 'openai api key id' नाम दूँगा,
00:05:43और फिर इसे 1Password से पाने के लिए मुझे '1password' फंक्शन चलाना होगा
00:05:49जिसके बाद यह प्रोटोकॉल होगा, और फिर मुझे अपने वॉल्ट का नाम जोड़ना होगा जो 'test' है, फिर आइटम का नाम
00:05:55जो 'openai' है, और फिर फील्ड का नाम, जिसे हम यहाँ दोबारा चेक कर सकते हैं कि यह 'credential' है।
00:06:02मैं इसे भी सेंसिटिव सेट कर सकता हूँ और अब अगर हम 'varlock load' रन करें, तो 1Password से मेरी
00:06:08OpenAI API की लाने में कुछ सेकंड लगते हैं। हम यहाँ वैल्यू को बदलकर भी चेक कर सकते हैं कि यह काम कर रहा है या नहीं,
00:06:14जैसे '1234' और अगर हम 'varlock load' दोबारा चलाएँ, तो यह सही वैल्यू ले आता है।
00:06:20और बस, हमारी .env स्कीमा फ़ाइल कमिट करने के लिए तैयार होनी चाहिए। लेकिन मैं जानता हूँ कि आप क्या सोच रहे हैं,
00:06:25इस 1Password टोकन का क्या? क्या वह सुरक्षित है? सच कहूँ तो अगर आप
00:06:31लोकली डेवलप कर रहे हैं और आपके पास 1Password है, तो हो सकता है आपके पास डेस्कटॉप ऐप हो या आप CLI इस्तेमाल कर रहे हों।
00:06:38उस स्थिति में, आप 1Password टोकन के बजाय अपने फिंगरप्रिंट से इसे अनलॉक करने के लिए इस कॉन्फ़िगरेशन का उपयोग कर सकते हैं।
00:06:43लेकिन Varlock अन्य प्लगइन्स को भी सपोर्ट करता है जैसे AWS, GCP और यहाँ तक कि Bitwarden के लिए भी।
00:06:52इसके साथ ही Vite, Next.js और Cloudflare Workers जैसी कई अन्य इंटीग्रेशन भी उपलब्ध हैं।
00:06:57ऐसी और भी कई फीचर्स हैं जिन्हें मैं कवर नहीं कर पाया, जैसे आपके स्कीमा से टाइपस्क्रिप्ट टाइप्स जनरेट करना,
00:07:03दूसरी फ़ाइलों से एनवायरनमेंट वेरिएबल्स इम्पोर्ट करना और यहाँ तक कि लॉग्स और बाहर जाने वाले HTTP रिस्पॉन्स
00:07:08से सेंसिटिव आउटपुट को हटाना, जो कि एक बहुत ही अच्छा फीचर है। इसमें आपके कोडिंग एजेंट की मदद के लिए
00:07:15एक MCP सर्वर भी है ताकि वह अपने आप .env स्कीमा सेट कर सके और CICD प्रोसेस में वेरिएबल्स लोड
00:07:21करने के लिए GitHub Action भी है। लेकिन Varlock जितना कूल है,
00:07:27इसमें कुछ कमियाँ भी हैं, जैसे कि आप इसे ऑफलाइन इस्तेमाल नहीं कर सकते। तो अगर आप एयरपोर्ट पर कोडिंग कर रहे हैं,
00:07:32तो आपको हार्ड-कोडेड एनवायरनमेंट वेरिएबल्स का इस्तेमाल करना होगा, लेकिन ईमानदारी से कहें तो बिना इंटरनेट के कोडिंग करता ही कौन है?
00:07:37इंटरनेट की बात करें तो, किसी दूसरे प्रोवाइडर से पासवर्ड फेच करने में थोड़ा डिले होता है,
00:07:41इसलिए आपकी स्क्रिप्ट शुरू होने में थोड़ा ज़्यादा समय लेगी। इसके अलावा
00:07:46Dashlane जैसे प्रोवाइडर्स की कमी है और मुझे एक अजीब बग मिला जहाँ अगर मैं अपनी स्कीमा फ़ाइल में
00:07:53वही नाम इस्तेमाल करता हूँ जो मेरे लोकल शेल के वेरिएबल का है, तो इसने 1Password के बजाय लोकल वेरिएबल का इस्तेमाल किया।
00:07:59लेकिन Varlock पर सक्रिय रूप से काम चल रहा है और मुझे यकीन है कि भविष्य में
00:08:05इनमें से कई चीज़ों को ठीक कर दिया जाएगा। फिर भी, यह प्रोडक्ट
00:08:10मौजूदा रूप में भी मेरे लिए अविश्वसनीय रूप से उपयोगी है और मुझे लगता है कि मैं आगे अपने सभी
00:08:16साइड प्रोजेक्ट्स के लिए इसका इस्तेमाल करूँगा और शायद अपनी लोकल शेल फ़ाइलों को Varlock स्कीमा फ़ाइलों से बदल दूँ।
00:08:21अगर ऐसा करने का कोई तरीका है तो मुझे उम्मीद है कि होगा, क्योंकि मैं नहीं चाहता कि कोई भी एजेंट
00:08:26मेरी जानकारी चोरी करे।

Key Takeaway

Varlock आधुनिक विकास के लिए .env फ़ाइलों का एक सुरक्षित और टाइप-सेफ विकल्प प्रदान करता है, जो सीक्रेट्स को सीधे पासवर्ड मैनेजर से इंजेक्ट करके सुरक्षा और टीम सहयोग को बेहतर बनाता है।

Highlights

Varlock एक ओपन-सोर्स टूल है जो .env फ़ाइलों में प्लेन टेक्स्ट सीक्रेट्स स्टोर करने की ज़रूरत को खत्म करता है।

यह 1Password, Bitwarden और AWS जैसे विभिन्न पासवर्ड मैनेजरों के साथ सीधे इंटीग्रेट होता है।

इसमें 'mspec' नामक टाइप-सेफ स्कीमा का उपयोग किया जाता है, जो एनवायरनमेंट वेरिएबल्स को रनटाइम पर सुरक्षित रूप से इंजेक्ट करता है।

यह टूल प्रॉम्प्ट-इंजेक्शन के माध्यम से AI एजेंट्स द्वारा सीक्रेट्स चोरी किए जाने के जोखिम को कम करता है।

Varlock में 'root' और 'item' डेकोरेटर्स का उपयोग करके वेरिएबल्स को संवेदनशील (sensitive) या आवश्यक (required) के रूप में परिभाषित किया जा सकता है।

यह केवल जावास्क्रिप्ट तक सीमित नहीं है और Python, Go, Rust जैसे विभिन्न प्रोग्रामिंग भाषाओं के प्रोजेक्ट्स के साथ काम करता है।

हालांकि यह बहुत शक्तिशाली है, लेकिन इसकी कुछ सीमाएं हैं जैसे ऑफलाइन उपयोग में असमर्थता और पासवर्ड मैनेजर से डेटा फेच करने में होने वाला मामूली विलंब।

Timeline

Varlock का परिचय और समस्या का समाधान

वक्ता Varlock का परिचय एक ऐसे टूल के रूप में देते हैं जो एनवायरनमेंट वेरिएबल्स के प्रबंधन के पारंपरिक तरीकों को बदल देता है। यह टूल डिस्क पर प्लेन टेक्स्ट सीक्रेट्स को स्टोर करने की असुरक्षित प्रथा को रोकता है और उन्हें 1Password जैसे सुरक्षित मैनेजरों से रिजॉल्व करता है। लेखक बताते हैं कि कैसे नई टीमों में शामिल होने वाले डेवलपर्स को अक्सर अधूरी .env फ़ाइलों के कारण सेटअप में परेशानी होती है, जिसे Varlock हल करता है। यह टूल विशेष रूप से AI एजेंट्स द्वारा सीक्रेट्स के अनधिकृत एक्सेस को रोकने के लिए डिज़ाइन किया गया है। अंततः, यह GitHub जैसे सार्वजनिक प्लेटफार्मों पर स्कीमा फ़ाइलों को सुरक्षित रूप से साझा करने की अनुमति देता है।

स्कीमा सेटअप और mspec सिंटैक्स

इस खंड में, एक प्रोजेक्ट के माध्यम से Varlock के व्यावहारिक उपयोग का प्रदर्शन किया गया है जिसमें OpenAI और Claude का उपयोग किया गया है। वक्ता 'mspec' डोमेन स्पेसिफिक लैंग्वेज का उपयोग करके .env स्कीमा फ़ाइल बनाने की प्रक्रिया दिखाते हैं। यहाँ रूट डेकोरेटर्स और आइटम डेकोरेटर्स के बीच अंतर समझाया गया है, जैसे कि डिफ़ॉल्ट संवेदनशीलता को बदलना और वेरिएबल्स के लिए डेटा टाइप निर्धारित करना। यदि कोई वेरिएबल 'number' के रूप में सेट है और उसे 'string' दिया जाता है, तो सिस्टम एरर दिखाता है जो टाइप-सेफ्टी सुनिश्चित करता है। यह 'single source of truth' दृष्टिकोण विकास प्रक्रिया को अधिक व्यवस्थित और त्रुटि-मुक्त बनाता है।

एप्लिकेशन में वेरिएबल्स का इंजेक्शन

वक्ता बताते हैं कि कैसे 'varlock run' कमांड का उपयोग करके एप्लिकेशन में एनवायरनमेंट वेरिएबल्स को इंजेक्ट किया जा सकता है। उदाहरण के तौर पर Vite का उपयोग किया गया है, जहाँ पोर्ट नंबर को सीधे स्कीमा से लोड किया जाता है। यह स्पष्ट किया गया है कि यह प्रक्रिया किसी भी भाषा जैसे Python या Go के लिए समान रूप से प्रभावी है। जो लोग npm का उपयोग नहीं करना चाहते, उनके लिए एक अलग CLI टूल भी उपलब्ध है। यह लचीलापन इसे विभिन्न प्रकार के सॉफ्टवेयर विकास प्रोजेक्ट्स के लिए एक अनिवार्य उपकरण बनाता है।

1Password प्लगइन के साथ इंटीग्रेशन

यह खंड 1Password जैसे बाहरी पासवर्ड मैनेजरों से सीक्रेट्स फेच करने की जटिल प्रक्रिया पर केंद्रित है। वक्ता एक नया वॉल्ट बनाने और सर्विस टोकन का उपयोग करके प्लगइन सेटअप करने के चरणों का विवरण देते हैं। 'init 1password' जैसे विशेष डेकोरेटर्स का उपयोग करके API कीज़ को सीधे स्कीमा में मैप किया जाता है। VS Code प्लगइन के बारे में भी बताया गया है जो सिंटैक्स हाइलाइटिंग में मदद करता है। इसके अतिरिक्त, AWS, GCP और Bitwarden जैसे अन्य लोकप्रिय क्लाउड प्रदाताओं के लिए भी सपोर्ट का उल्लेख किया गया है।

अतिरिक्त फीचर्स, सीमाएं और निष्कर्ष

वीडियो के अंतिम भाग में Varlock के उन्नत फीचर्स जैसे टाइपस्क्रिप्ट टाइप्स का ऑटो-जनरेशन और लॉग्स से संवेदनशील डेटा हटाना शामिल है। वक्ता ईमानदारी से कुछ कमियों को भी स्वीकार करते हैं, जैसे कि इंटरनेट के बिना इसका उपयोग संभव नहीं है और डेटा फेचिंग में मामूली देरी होती है। एक विशिष्ट बग का भी उल्लेख किया गया है जहाँ लोकल शेल वेरिएबल्स कभी-कभी स्कीमा सेटिंग्स पर हावी हो जाते हैं। इन छोटी खामियों के बावजूद, वक्ता भविष्य के सभी प्रोजेक्ट्स के लिए Varlock अपनाने का संकल्प लेते हैं। वह निष्कर्ष निकालते हैं कि सुरक्षा के मामले में यह टूल किसी भी गंभीर डेवलपर के लिए एक महत्वपूर्ण अपग्रेड है।

Community Posts

View all posts