इंजीनियर के काम में सीक्रेट शेयर करने की ज़रूरत आम तौर पर तीन जगह आती है: ऑनबोर्डिंग, वेंडर को हैंडओवर और इंसिडेंट रिस्पॉन्स। यह लेख डेवलपर की नज़र से बताता है कि वन-टाइम लिंक (एक बार खुलने वाला लिंक) कब इस्तेमाल करें, कब नहीं, और उसे स्क्रिप्ट से कैसे बनाएं ताकि सीक्रेट रास्ते में आपकी शेल हिस्ट्री में न पहुंच जाए। पहले यह तरीका आज़माना हो, तो मुफ़्त वन-टाइम सीक्रेट लिंक जनरेटर के लिए अकाउंट बनाने की ज़रूरत नहीं।
डेवलपर को वन-टाइम लिंक कब इस्तेमाल करना चाहिए?
जब हैंडओवर के कम से कम एक तरफ़ कोई इंसान हो और जानकारी बाद में कहीं बची नहीं रहनी चाहिए। आम मामले:
- नए इंजीनियर को उसके पहले क्रेडेंशियल देना।
- इंसिडेंट के दौरान अस्थायी एडमिन पासवर्ड शेयर करना।
- किसी वेंडर या कॉन्ट्रैक्टर को ऐसा टोकन देना जो आपके वॉल्ट में नहीं रहना चाहिए।
- ऐसा क्रेडेंशियल बदलना जिसकी पुरानी वैल्यू तुरंत बेकार हो जानी चाहिए।
- ग्राहक को वह API key भेजना जो आपने उसके लिए बनाई है।
वन-टाइम लिंक कब इस्तेमाल न करें
- मशीन से मशीन तक जाने वाले सीक्रेट। वहां CI के एनवायरनमेंट वेरिएबल (जैसे GitHub Actions secrets), Kubernetes Secrets और Vault के डायनेमिक क्रेडेंशियल सही तरीका हैं। लिंक का काम इन सिस्टम तक इंसान के हाथों हैंडओवर करना है।
- टीम के लंबे समय तक चलने वाले क्रेडेंशियल। इनकी जगह पासवर्ड मैनेजर है।
- सार्वजनिक कॉन्फ़िगरेशन। जो कॉन्फ़िग गोपनीय नहीं है, उसे सीक्रेट बनाकर न भेजें। सामान्य लिंक इस्तेमाल करें।
सीधा नियम: अगर ट्रांसफ़र के दोनों सिरों पर मशीनें हैं, तो अपने प्लेटफ़ॉर्म का सीक्रेट स्टोर इस्तेमाल करें। अगर कम से कम एक सिरे पर इंसान है, तो वन-टाइम लिंक आम तौर पर सबसे साफ़ तरीका है।
| स्थिति | सही तरीका |
|---|---|
| नए इंजीनियर के पहले क्रेडेंशियल | वन-टाइम सीक्रेट लिंक |
| CI पाइपलाइन को चलते समय डिप्लॉय टोकन चाहिए | CI सीक्रेट स्टोर / env vars |
| Pod को डेटाबेस पासवर्ड चाहिए | K8s secret / external secrets operator |
| टीम का लॉगिन जिसे पांच लोग रोज़ इस्तेमाल करते हैं | पासवर्ड मैनेजर (शेयर किया गया वॉल्ट) |
| ग्राहक को उसके लिए बनाई गई API key चाहिए | वन-टाइम सीक्रेट लिंक |
| git रिपॉज़िटरी के अंदर सीक्रेट चाहिए | कभी नहीं: सीक्रेट स्टोर का रेफ़रेंस दें और CI में स्कैनिंग जोड़ें |
स्क्रिप्ट से बनाना
LinkPilot में REST API है (हर प्लान पर, Free प्लान पर भी)। स्क्रिप्ट से सीक्रेट बनाना कुछ ऐसा दिखता है:
LP_KEY=lp_live_...
URL=$(curl -sS https://api.uselinkpilot.com/v1/secrets \
-H "Authorization: Bearer $LP_KEY" \
-H "Content-Type: application/json" \
-d '{
"payload": "'"$NEW_DB_PASSWORD"'",
"expires_in": 3600,
"burn_after_read": true,
"passphrase": "'"$ONBOARDING_PASSPHRASE"'"
}' | jq -r '.url')
echo "Secret link: $URL"
इस URL को उसी चैनल में भेज दें जो आप पहले से इस्तेमाल करते हैं: Slack DM, ईमेल या अपने ऑनबोर्डिंग टूल का वेबहुक।
पेलोड को प्रोसेस लिस्ट से बाहर रखना
ऊपर वाले स्निपेट में एक जानी-पहचानी कमी है: पेलोड को -d में डालने से वह curl की कमांड लाइन पर आ जाता है, जहां रिक्वेस्ट चलते समय कोई भी लोकल यूज़र उसे ps से पढ़ सकता है। इसकी जगह JSON को jq से बनाएं और curl के -d @- से stdin के ज़रिए भेजें:
set -euo pipefail
jq -n --arg payload "$NEW_DB_PASSWORD" \
--arg pass "$ONBOARDING_PASSPHRASE" \
'{payload: $payload, expires_in: 3600,
burn_after_read: true, passphrase: $pass}' |
curl -sS https://api.uselinkpilot.com/v1/secrets \
-H "Authorization: Bearer $LP_KEY" \
-H "Content-Type: application/json" \
-d @- | jq -r '.url'
तीन आदतें जो अपने आप होनी चाहिए:
- वैल्यू एनवायरनमेंट वेरिएबल या सीक्रेट मैनेजर के CLI से आएं। उन्हें कभी इंटरैक्टिव शेल में टाइप न करें, जहां वे हिस्ट्री में पहुंच जाती हैं।
- स्क्रिप्ट लिंक प्रिंट करे, पेलोड कभी नहीं।
set -euo pipefailरखें, ताकि फ़ेल हुई API कॉल चुपचाप अगले स्टेप को खाली URL न थमा दे।
ऑनबोर्डिंग का टेम्प्लेट
नए इंजीनियरों के पहले दिन के लिए यह तरीका अच्छा काम करता है:
- ऑनबोर्डिंग स्क्रिप्ट अकाउंट बनाती है और एक बार इस्तेमाल होने वाले क्रेडेंशियल निकालती है।
- स्क्रिप्ट हर क्रेडेंशियल के लिए अलग सीक्रेट लिंक बनाती है, 4 घंटे की एक्सपायरी और एक साझा पासफ़्रेज़ के साथ।
- स्क्रिप्ट सारे लिंक एक ईमेल में भेजती है और पासफ़्रेज़ Slack DM से।
- इंजीनियर हर लिंक खोलता है और क्रेडेंशियल को अपने पासवर्ड मैनेजर में कॉपी कर लेता है।
- दिन खत्म होने तक जो लिंक नहीं खुले, उन्हें वापस लेकर इंजीनियर की सुविधा के हिसाब से फिर से भेजा जाता है।
ये सेटिंग्स क्यों: 4 घंटे की एक्सपायरी पहली सुबह के सामान्य काम के लिए काफ़ी है और क्रेडेंशियल रात भर चालू नहीं रहते। पासफ़्रेज़ दूसरे चैनल से जाता है, इसलिए अगर ईमेल फ़ॉरवर्ड हो जाए या गलत जगह पहुंच जाए, तो उससे कोई नुकसान नहीं। पढ़ते ही मिटने की वजह से दिन के आखिर में इंजीनियर के मेलबॉक्स में सिर्फ़ बेकार हो चुके URL बचते हैं।
नए कर्मचारी को साफ़ बताएं: “हर लिंक एक बार ही खुलता है, टैब बंद करने से पहले वैल्यू अपने पासवर्ड मैनेजर में सेव कर लें।” ऑनबोर्डिंग में सबसे आम गलती यही होती है कि प्राप्तकर्ता सीक्रेट पढ़ता है, टैब बंद कर देता है और मान लेता है कि बाद में फिर खोल लेगा।
रोटेशन रनबुक
जब किसी साझा डेटाबेस पासवर्ड को बदलना हो और उसे किसी कॉन्ट्रैक्टर या टीम के सदस्य तक पहुंचाना हो:
- नया पासवर्ड बनाएं और उसे स्रोत सिस्टम में लागू करें (डेटाबेस, क्लाउड कंसोल, जहां भी उसकी मुख्य कॉपी रहती है)।
- पहले अपने सिस्टम अपडेट करें, जैसे CI वॉल्ट, K8s secret और ऐप कॉन्फ़िग, ताकि इंसान को हैंडओवर होने के दौरान कुछ न टूटे।
- नई वैल्यू के लिए वन-टाइम लिंक बनाएं: पढ़ते ही मिटे, 1 घंटे की एक्सपायरी, पासफ़्रेज़ के साथ।
- लिंक और पासफ़्रेज़ अलग-अलग चैनल से भेजें।
- ऑडिट टाइमलाइन में लिंक खुलने का इवेंट देखें। एक्सपायरी से पहले नहीं खुला? लिंक वापस लें और नया भेजें। वही लिंक दोबारा कभी न भेजें।
- पक्का कर लें कि पुराना क्रेडेंशियल स्रोत पर बंद हो चुका है।
हर रोटेशन के लिए अलग लिंक बनता है। लिंक जान-बूझकर एक-दूसरे से अलग रखे गए हैं। डिलीवरी के लिए यह खूबी है, लेकिन निगरानी में इससे कोई मदद नहीं मिलती, इसलिए रोटेशन का शेड्यूल आपके मैनेजर या रनबुक में रहता है, लिंक टूल में नहीं।
इंसिडेंट रिस्पॉन्स
इंसिडेंट के दौरान अक्सर किसी क्रेडेंशियल को बदलकर नया क्रेडेंशियल कुछ लोगों तक जल्दी पहुंचाना होता है। उसे इंसिडेंट चैनल में पेस्ट न करें। उस चैनल को पोस्टमॉर्टम के लिए रिकॉर्ड किया जा रहा है, और सीक्रेट एक्सपोर्ट में, रेट्रो डॉक्यूमेंट में और उनके बाद आने वाले हर रिटेंशन सिस्टम में पहुंच जाएगा।
- स्रोत सिस्टम में क्रेडेंशियल बदलें।
- 30 मिनट की एक्सपायरी वाला सीक्रेट लिंक बनाएं।
- लिंक चैनल में डालें और पासफ़्रेज़ DM से भेजें।
- इंसिडेंट के बाद पक्का कर लें कि लिंक मिट चुका है या वापस लिया जा चुका है।
तब पोस्टमॉर्टम में चालू एडमिन पासवर्ड की जगह बेकार हो चुका URL होता है। साथ ही ऑडिट रिकॉर्ड से टाइमलाइन की समीक्षा करने वाले को बिना किसी अतिरिक्त मेहनत के सटीक रिकॉर्ड मिल जाता है: “क्रेडेंशियल 14:32 पर फिर से जारी हुआ, 14:33 पर पढ़ा गया।”
लिंक प्रीव्यू से जुड़ी एक बात: चैट ऐप पेस्ट किए गए URL को प्रीव्यू दिखाने के लिए खोलते हैं। अच्छी तरह बना सीक्रेट लिंक इससे बच जाता है, क्योंकि प्रीव्यू की रिक्वेस्ट GET होती है और सीक्रेट दिखाने के लिए अलग से POST होता है। पूरी जानकारी के लिए लिंक स्कैनर और वन-टाइम सीक्रेट देखें। अगर आप कोई टूल परख रहे हैं, तो यह इंसिडेंट से पहले जांच लें, उसके दौरान नहीं।
ऑडिट रिकॉर्ड से क्या पता चलता है?
सीक्रेट पढ़ा गया या नहीं, कब और मोटे तौर पर कहां से, और क्या किसी ने गलत पासफ़्रेज़ डाला। LinkPilot के हर सीक्रेट के साथ इवेंट टाइमलाइन रहती है: created, viewed, failed_passphrase, burned, expired, revoked। हर बार खुलने पर टाइमस्टैंप, उपलब्ध हो तो मोटी लोकेशन, यूज़र एजेंट और IP का हैश (SHA-256, जिसका salt हर दिन बदलता है; असली IP कभी स्टोर नहीं होता) दर्ज होता है। असल में इससे तीन जवाब मिलते हैं जिन पर स्क्रिप्ट और रनबुक भरोसा कर सकती हैं:
- डिलीवरी की पुष्टि: viewed इवेंट का मतलब है कि हैंडओवर हो गया।
- गड़बड़ी की पहचान: failed_passphrase की झड़ी या कोई ऐसा व्यू जिसे आप नहीं पहचानते, इसका संकेत है कि क्रेडेंशियल तुरंत बदलें।
- समीक्षा के लिए साफ़ रिकॉर्ड: “एक बार भेजा गया, एक बार पढ़ा गया, मिट गया” ऐसा वाक्य है जो ऑडिटर को पसंद आता है।
सीमाएं: लिंक क्या हल नहीं करते
- ये वॉल्ट नहीं हैं। वन-टाइम लिंक लगातार चलने वाले एक्सेस, रोटेशन शेड्यूल या किसके पास क्या है, इसका हिसाब नहीं रखता।
- लिंक ही कुंजी है। LinkPilot टेक्स्ट को आपके ब्राउज़र में ही एन्क्रिप्ट करता है और कुंजी उस तक कभी नहीं पहुंचती, लेकिन वह कुंजी URL में # के बाद के हिस्से में चलती है। इसलिए जिसके पास भी पूरा लिंक है, वह सीक्रेट पढ़ सकता है, और लिंक खो जाए तो सीक्रेट वापस नहीं मिल सकता। अटैच की गई फ़ाइलें भी इसी तरह एन्क्रिप्ट होती हैं, लेकिन उनके नाम और साइज़ नहीं। कम एक्सपायरी और पढ़ते ही मिटना अब भी ज़रूरी है। अपडेट, 29 सितंबर 2026: इस बिंदु में पहले लिखा था “ये एंड-टू-एंड एन्क्रिप्टेड नहीं हैं”, जो उस तारीख तक सही था। पूरी जानकारी सुरक्षा आर्किटेक्चर पेज पर है।
- ये कोड में बिखरे सीक्रेट की समस्या हल नहीं करते। रिपॉज़िटरी में हार्डकोड की गई keys को स्कैन करना और बदलना ज़रूरी है; बेहतर डिलीवरी से यह ठीक नहीं होता।
- ये दूसरी तरफ़ की सुरक्षा नहीं कर सकते। एक बार किसी व्यक्ति ने वैल्यू पढ़ ली, तो मानकर चलें कि वह वहां भी है जहां उसने उसे रखा।
मुफ़्त में आज़माएं, साइन अप की ज़रूरत नहीं
वन-टाइम सीक्रेट लिंक जनरेटर
पासवर्ड या नोट ऐसे लिंक से शेयर करें जो सिर्फ़ एक बार खुलता है।
आगे पढ़ें
- API keys सुरक्षित तरीके से कैसे शेयर करें
- एक्सपायर होने वाले लिंक: कम समय-सीमा क्यों मायने रखती है
- LinkPilot का सुरक्षा आर्किटेक्चर
स्रोत
- GitHub Docs, Using secrets in GitHub Actions।
- Kubernetes, Secrets।
- jq, Manual।
- curl, Manual page,
-d, --data।
