Moatgator Vault
आपके बैकएंड, आपके CI और आपके मोबाइल ऐप के सीक्रेट, एक ही जगह
जहाँ पहले वैल्यू लिखी होती थी, वहाँ mg:// रेफ़रेंस रखें। CLI, GitHub Actions और मोबाइल SDK चलते समय उसे रिज़ॉल्व करते हैं, और आपके ऐप को सीक्रेट सिर्फ़ उसी डिवाइस पर मिलता है जो Attest में पास हुआ हो।
Startup प्लान से शामिल।
$ moatgator secrets run --env-file .env.tpl -- npm start$ moatgator secrets inject -i .env.tpl -o .env$ moatgator secrets get mg://api/prod/DATABASE_URLmg:// रेफ़रेंस
वैल्यू नहीं, रेफ़रेंस कमिट करें
रेफ़रेंस एक प्रोजेक्ट, एक एनवायरनमेंट और एक सीक्रेट का नाम बताता है, जैसे mg://api/prod/DATABASE_URL। इसे Git में रखना सुरक्षित है: सिर्फ़ ऐक्सेस वाली पहचान ही इसे वैल्यू में बदल सकती है।
01
आपकी रिपॉज़िटरी में एक .env.tpl
रेफ़रेंस वाला एक टेम्पलेट रखें। moatgator secrets inject .env को 0600 अनुमतियों के साथ लिखता है और --force के बिना किसी मौजूदा फ़ाइल को ओवरराइट नहीं करता।
.env.tplउदाहरण # .env.tpl: safe to commitDATABASE_URL=mg://api/prod/DATABASE_URLSTRIPE_KEY=mg://api/prod/STRIPE_KEYSENTRY_DSN=mg://api/prod/SENTRY_DSN02
moatgator secrets run
आपकी कमांड को सीक्रेट के साथ, एनवायरनमेंट वेरिएबल के रूप में चलाता है और कमांड के आउटपुट में उनकी वैल्यू छिपा देता है। moatgator secrets get एक अकेला रेफ़रेंस पढ़ता है।
terminalउदाहरण $ moatgator secrets run --env-file .env.tpl -- npm start$ moatgator secrets inject -i .env.tpl -o .env$ moatgator secrets get mg://api/prod/DATABASE_URL03
ऐप में वही रेफ़रेंस
Android SDK में, Moatgator.vault.get("mg://mobile/prod/PARTNER_KEY") कंसोल में ऐप से जुड़े एनवायरनमेंट को पढ़ता है। वैल्यू कभी APK में नहीं जाती।
Kotlinउदाहरण // Android (Kotlin), off the main threadMoatgator.startSession(playIntegrityProvider)val key = Moatgator.vault.get("mg://mobile/prod/PARTNER_KEY")
प्रोजेक्ट, एनवायरनमेंट और वर्ज़न
प्रोजेक्ट और एनवायरनमेंट
हर प्रोजेक्ट dev, staging और prod के साथ शुरू होता है। ज़रूरत हो तो अपने एनवायरनमेंट जोड़ें।
इनहेरिटेंस और ओवरराइड
एक एनवायरनमेंट दूसरे से इनहेरिट कर सकता है, तीन स्तर तक। उसी नाम का सीक्रेट इनहेरिट किए गए सीक्रेट को ओवरराइड करता है।
संरक्षित एनवायरनमेंट
prod शुरू से संरक्षित होता है: सिर्फ़ ओनर और एडमिन ही उसकी वैल्यू पढ़ या उसमें लिख सकते हैं।
वर्ज़न और रोलबैक
हर बदलाव इतिहास के साथ एक वर्ज़न बनाता है। रोलबैक एक नया वर्ज़न बनाता है, इसलिए इतिहास कभी दोबारा नहीं लिखा जाता।
तुरंत रद्द करना
किसी सीक्रेट या सर्विस टोकन को रद्द करें और अगली रीड अस्वीकार हो जाती है, समाप्ति तिथि का इंतज़ार किए बिना।
भूमिकाएँ
ओनर, एडमिन, डेवलपर और रीडर भूमिकाएँ तय करती हैं कि वैल्यू कौन देखे और उन्हें कौन बदले।
सिर्फ़ अटेस्ट किए गए डिवाइस पर
वही सीक्रेट, आपके मोबाइल ऐप को सिर्फ़ उस डिवाइस पर दिया जाता है जो Attest में पास हुआ हो
सीक्रेट मैनेजर आम तौर पर सर्वर, डेवलपर और CI के काम आते हैं। Vault आपके यूज़र्स के हाथ में मौजूद ऐप के भी काम आता है: SDK चलते समय माँगता है, API डिवाइस का Attest जाँचती है (Play Integrity या App Attest, साथ में Moatgator RASP के सिग्नल) और वैल्यू को उस सेशन की एक अस्थायी कुंजी के लिए एन्क्रिप्ट करके भेजती है। बाइनरी में कुछ भी नहीं जाता।
SDK वैल्यू को सिर्फ़ मेमोरी में रखता है, कभी डिस्क या लॉग में नहीं। mg:// रेफ़रेंस Android SDK में उपलब्ध हैं।
हर सीक्रेट के लिए नीतियाँ
- न्यूनतम वर्डिक्टहर सीक्रेट के लिए Attest का सबसे निचला वर्डिक्ट चुनें, जिसे वह सीक्रेट मिल सकता है।
- प्लैटफ़ॉर्म अटेस्टेशन अनिवार्यसिर्फ़ SDK के अपने सिग्नल नहीं, प्लैटफ़ॉर्म अटेस्टेशन का नतीजा भी अनिवार्य करें।
- अटेस्टेशन की अधिकतम उम्रजब डिवाइस का अटेस्टेशन आपकी तय सीमा से पुराना हो, तो सीक्रेट देने से मना करें।
CI और सर्वर
आपके CI में कोई लंबी अवधि वाला टोकन सेव नहीं
GitHub Action moatgator-hq/github-action/vault जॉब के OIDC टोकन के बदले 15 मिनट तक चलने वाला एक रीड टोकन लेता है। Pull request को कभी टोकन नहीं मिलता। जहाँ OIDC उपलब्ध नहीं है, वहाँ सर्विस टोकन इस्तेमाल करें।
- सर्विस टोकन (mgvt_…) सिर्फ़ पढ़ने के लिए होते हैं और एक प्रोजेक्ट व आपके चुने हुए एनवायरनमेंट से बँधे होते हैं।
- समाप्ति अवधि अनिवार्य है: डिफ़ॉल्ट रूप से 90 दिन, अधिकतम एक साल।
- जॉब लॉग में वैल्यू मास्क की जाती हैं और कभी स्टेप आउटपुट नहीं बनतीं।
- जो रेफ़रेंस रिज़ॉल्व नहीं होता, वह कुछ भी एक्सपोर्ट किए बिना स्टेप को फ़ेल कर देता है।
permissions: { contents: read, id-token: write }steps: - uses: moatgator-hq/github-action/vault@v1 with: project-id: vpj_… secrets: | DATABASE_URL=mg://api/prod/DATABASE_URL - run: ./deploy.sh # $DATABASE_URL, *** in the logसिंक और रोटेशन
सीक्रेट वहाँ भेजें जहाँ आप डिप्लॉय करते हैं, और उन्हें तय समय पर रोटेट करें
एक सिंक किसी एनवायरनमेंट को, इनहेरिटेंस के साथ, GitHub Actions सीक्रेट, Railway या Vercel में कॉपी करके रखता है। यह बनाते समय चलता है, और फिर उस एनवायरनमेंट में या जिस एनवायरनमेंट से वह इनहेरिट करता है उसमें हर बदलाव के बाद दोबारा चलता है।
GitHub Actions सीक्रेट
किसी रिपॉज़िटरी या GitHub एनवायरनमेंट में सिंक करें। हर वैल्यू Moatgator से बाहर जाने से पहले रिपॉज़िटरी की पब्लिक कुंजी से एन्क्रिप्ट की जाती है।
Railway
किसी Railway प्रोजेक्ट और एनवायरनमेंट के वेरिएबल में, या किसी एक सर्विस के वेरिएबल में सिंक करें।
Vercel
किसी Vercel प्रोजेक्ट के production, preview या development वेरिएबल में सिंक करें, जो एन्क्रिप्टेड वेरिएबल के रूप में सेव होते हैं।
स्पष्ट अनुमति और स्टेटस
आप हर डेस्टिनेशन की पुष्टि करते हैं और उसे सिर्फ़ उसी डेस्टिनेशन का टोकन देते हैं, जो एन्क्रिप्ट करके सेव होता है। हर सिंक दिखाता है कि वह आख़िरी बार कब चला, उसने कितने सीक्रेट लिखे और कोई त्रुटि हुई या नहीं।
शेड्यूल्ड रोटेशन
- तय समय पर नई रैंडम वैल्यूउन सीक्रेट के लिए जिन्हें सिर्फ़ आपकी कंपनी इस्तेमाल करती है, जैसे HMAC कुंजियाँ और सेशन सीक्रेट: Moatgator नई वैल्यू बनाता है, एक वर्ज़न बनाता है और सिंक चलाता है।
- दूसरे प्रोवाइडर की कुंजियों के लिए रिमाइंडरकिसी दूसरी सर्विस की जारी की गई कुंजी के लिए, समय आने पर ओनर और एडमिन को ईमेल मिलता है, और जब तक नई वैल्यू सेव नहीं होती, कंसोल रोटेशन को बकाया दिखाता है।
सिंक डेस्टिनेशन में सिर्फ़ लिखता है, और वहाँ से सिर्फ़ वही सीक्रेट मिटाता है जो उसने ख़ुद लिखे थे। सिंक मिटाने पर डेस्टिनेशन जैसा है वैसा ही रहता है।
हर संगठन के लिए अलग एन्क्रिप्शन, हर रीड का ऑडिट
हर टेनेंट के लिए एनवेलप एन्क्रिप्शन
हर संगठन की अपनी कुंजी होती है, जिसे एक मास्टर कुंजी से रैप किया जाता है।
सिफ़रटेक्स्ट अपनी जगह से बँधा
हर सिफ़रटेक्स्ट अपने प्रोजेक्ट, एनवायरनमेंट, नाम और वर्ज़न से बँधा होता है, इसलिए उसे किसी दूसरे सीक्रेट में नहीं ले जाया जा सकता।
वैल्यू लॉग से बाहर
सीक्रेट की वैल्यू हमारे लॉग में कभी नहीं लिखी जातीं, और CLI व Action उन्हें आपके आउटपुट में छिपा देते हैं।
हर रीड का ऑडिट ट्रेल
हर रीड के लिए: किसने पढ़ा, कहाँ से, कौन-सा वर्ज़न और नतीजा क्या रहा।
तुलना
Moatgator Vault, 1Password और Doppler
1Password और Doppler स्थापित सीक्रेट मैनेजर हैं, और Vault जो करता है उसका बड़ा हिस्सा दोनों करते हैं। तालिका दिखाती है कि हर एक कहाँ खड़ा है; उनके बारे में हर सेल के साथ एक सार्वजनिक स्रोत और वह तारीख है जब हमने उसे जाँचा। Vault लोगों के लिए पासवर्ड मैनेजर नहीं है: इसका फ़ोकस ऐप, CI और मोबाइल डिवाइस पर है।
| क्षमता | Moatgator Vault | 1Password | Doppler |
|---|---|---|---|
| वैल्यू की जगह रेफ़रेंस | mg://project/environment/NAME, मोबाइल SDK में भी | 1 op://vault/item/field | आंशिक23 Doppler के भीतर ${…} रेफ़रेंस; फ़ाइलों के लिए {{.NAME}} टेम्पलेट |
| सीक्रेट को एनवायरनमेंट वेरिएबल बनाकर कमांड चलाना | आउटपुट में वैल्यू छिपी रहती हैं | 4 op run, आउटपुट में वैल्यू डिफ़ॉल्ट रूप से मास्क | 56 doppler run; CLI के लिए आउटपुट मास्किंग का दस्तावेज़ नहीं |
| टेम्पलेट से फ़ाइल बनाना | फ़ाइल 0600 अनुमतियों के साथ लिखी जाती है | 7 op inject | 3 secrets substitute और --mount |
| इनहेरिटेंस वाले एनवायरनमेंट | 3 स्तर तक, नाम से ओवरराइड | आंशिक8 Environments मौजूद हैं, एक-दूसरे से स्वतंत्र | 910 branch configs रूट config से इनहेरिट करते हैं; config इनहेरिटेंस Team और Enterprise पर |
| वर्ज़न इतिहास और रोलबैक | रोलबैक नया वर्ज़न बनाता है | 11 आइटम इतिहास और रीस्टोर | 12 लॉग से रोलबैक |
| सीमित स्कोप और समाप्ति वाले मशीन टोकन | सिर्फ़ पढ़ने के लिए, प्रोजेक्ट और एनवायरनमेंट के हिसाब से, समाप्ति अनिवार्य | 1314 service accounts, हर vault के लिए अनुमतियाँ और वैकल्पिक समाप्ति | 15 हर config के लिए service tokens, वैकल्पिक समाप्ति |
| टोकन को तुरंत रद्द करना | 16 | 15 | |
| OIDC के साथ CI, बिना सेव किए गए टोकन के | GitHub Actions, 15 मिनट का टोकन | आंशिक1718 load-secrets-action सेव किया गया टोकन इस्तेमाल करता है; OIDC वाला Credential Broker पब्लिक प्रीव्यू में | 196 service account identities, Team और Enterprise प्लान |
| GitHub Actions, Railway और Vercel में सिंक | हर बदलाव के बाद; सिर्फ़ लिखता है, सिर्फ़ अपना लिखा हुआ मिटाता है | आंशिक820 Environments का AWS Secrets Manager में सिंक (beta); GitHub, Railway और Vercel नहीं मिले | 2122 GitHub, Vercel और Railway इंटीग्रेशन सीक्रेट अपने-आप भेजते हैं |
| शेड्यूल्ड रोटेशन | आंशिक आपके अपने सीक्रेट के लिए नई रैंडम वैल्यू; थर्ड-पार्टी कुंजियों के लिए ईमेल रिमाइंडर | सार्वजनिक डॉक्स में नहीं मिला2316 service account टोकन हाथ से रोटेट होते हैं; सेव किए गए सीक्रेट का शेड्यूल्ड रोटेशन नहीं मिला | 24 समर्थित सर्विस, जैसे डेटाबेस, का ऑटोमैटिक रोटेशन, Team और Enterprise पर |
| भूमिकाएँ और संरक्षित प्रोडक्शन | ओनर, एडमिन, डेवलपर और रीडर; prod संरक्षित | 258 vault और Environment अनुमतियाँ | 26 प्रोजेक्ट और एनवायरनमेंट भूमिकाएँ |
| हर सीक्रेट रीड का ऑडिट | कौन, कहाँ से, वर्ज़न और नतीजा | 27 1Password Business पर उपयोग रिपोर्ट | आंशिक28 ऐक्सेस लॉग हर ऐक्टर की पहली और सबसे हाल की रीड रखता है |
| मोबाइल ऐप को सिर्फ़ अटेस्ट किए गए डिवाइस पर डिलीवरी | Attest के साथ RASP, हर सेशन के लिए एन्क्रिप्टेड | सार्वजनिक डॉक्स में नहीं मिला2930 SDK और Connect डॉक्स में नहीं मिला | सार्वजनिक डॉक्स में नहीं मिला3121 SDK और इंटीग्रेशन डॉक्स में नहीं मिला |
1Password कहाँ मज़बूत है
स्रोत
- 1. 1Password CLI — Secret references · जाँचने की तारीख
- 2. Doppler — Secrets (referencing) · जाँचने की तारीख
- 3. Doppler — Secret injection with templates · जाँचने की तारीख
- 4. 1Password CLI — op run · जाँचने की तारीख
- 5. Doppler — Accessing secrets (run, --mount) · जाँचने की तारीख
- 6. Doppler — GitHub OIDC examples · जाँचने की तारीख
- 7. 1Password — Load secrets into config files (op inject) · जाँचने की तारीख
- 8. 1Password Environments · जाँचने की तारीख
- 9. Doppler — Branch configs · जाँचने की तारीख
- 10. Doppler — Config inheritance · जाँचने की तारीख
- 11. 1Password — View and restore previous versions of items · जाँचने की तारीख
- 12. Doppler — Versioning · जाँचने की तारीख
- 13. 1Password CLI — op service-account · जाँचने की तारीख
- 14. 1Password CLI — op connect · जाँचने की तारीख
- 15. Doppler — Service tokens · जाँचने की तारीख
- 16. 1Password — Manage service accounts · जाँचने की तारीख
- 17. 1Password — GitHub Actions (load-secrets-action) · जाँचने की तारीख
- 18. 1Password Credential Broker — GitHub Actions (public preview) · जाँचने की तारीख
- 19. Doppler — Service account identities (OIDC) · जाँचने की तारीख
- 20. 1Password — Sync Environments to AWS Secrets Manager (beta) · जाँचने की तारीख
- 21. Doppler — Integrations · जाँचने की तारीख
- 22. Doppler — GitHub Actions integration · जाँचने की तारीख
- 23. 1Password Secrets Automation · जाँचने की तारीख
- 24. Doppler — Secrets rotation · जाँचने की तारीख
- 25. 1Password — Create, share, and manage vaults · जाँचने की तारीख
- 26. Doppler — Project permissions · जाँचने की तारीख
- 27. 1Password — Reports (usage reports) · जाँचने की तारीख
- 28. Doppler — Access logs · जाँचने की तारीख
- 29. 1Password SDKs · जाँचने की तारीख
- 30. 1Password Connect · जाँचने की तारीख
- 31. Doppler — Future SDKs and integration roadmap · जाँचने की तारीख
- 32. 1Password — About the 1Password security model · जाँचने की तारीख
- 33. 1Password — About your Secret Key · जाँचने की तारीख
- 34. Doppler — Security fact sheet · जाँचने की तारीख
- 35. Doppler — Pricing · जाँचने की तारीख
1Password और Doppler अपने-अपने मालिकों के ट्रेडमार्क हैं, जिनका नाम सिर्फ़ तुलना किए गए प्रोडक्ट की पहचान के लिए लिया गया है। उनके बारे में हम जो कहते हैं, वह दिखाई गई तारीख पर उनके सार्वजनिक दस्तावेज़ों से लिया गया है। “नहीं मिला” का मतलब है कि हमें उद्धृत पेजों में यह नहीं मिला, यह नहीं कि प्रोडक्ट में यह नहीं है। अगर कुछ बदला है, तो हमें लिखें, हम सुधार देंगे।
प्लान
Vault, Startup, Scale और Enterprise प्लान में शामिल है।
| प्लान | प्रति संगठन प्रोजेक्ट | प्रति एनवायरनमेंट सीक्रेट |
|---|---|---|
| Startup | 5 | 100 |
| Scale | 50 | 500 |
| Enterprise | 200 | 1,000 |
अक्सर पूछे जाने वाले प्रश्न
क्या Vault इस्तेमाल करने के लिए मुझे अपना कोड बदलना होगा?
सर्वर और CI पर नहीं: आपका कोड पहले की तरह एनवायरनमेंट वेरिएबल पढ़ता रहता है, और आप प्रोसेस को moatgator secrets run या GitHub Action से शुरू करते हैं। Android ऐप में, रेफ़रेंस के साथ Moatgator.vault.get कॉल करें।
जिसके पास मेरा APK है, क्या वह Vault का कोई सीक्रेट पढ़ सकता है?
वैल्यू APK में नहीं होती। API इसे सिर्फ़ उसी डिवाइस को भेजती है जो सीक्रेट की नीति के तहत Attest में पास हुआ हो, उस सेशन के लिए एन्क्रिप्ट करके, और SDK इसे सिर्फ़ मेमोरी में रखता है। पास होने के बाद भी डिवाइस कॉम्प्रोमाइज़ हो सकता है, इसलिए पैसे के लेन-देन वाली हर चीज़ के लिए सर्वर-साइड जाँचें बनाए रखें।
अगर कोई सर्विस टोकन लीक हो जाए तो क्या होगा?
कंसोल में उसे रद्द करें और अगला अनुरोध अस्वीकार हो जाएगा। सर्विस टोकन सिर्फ़ पढ़ने के लिए होते हैं, एक प्रोजेक्ट और आपके चुने हुए एनवायरनमेंट तक सीमित होते हैं, और डिफ़ॉल्ट रूप से 90 दिन में समाप्त हो जाते हैं।
क्या Vault, 1Password या Doppler की जगह लेता है?
ज़रूरी नहीं। अगर आप सर्वर और CI के लिए इनमें से किसी एक का पहले से इस्तेमाल करते हैं, तो वह बना रह सकता है। Vault अटेस्ट किए गए डिवाइस पर आपके मोबाइल ऐप तक डिलीवरी जोड़ता है, और अगर आप एक ही टूल चाहें तो सर्वर और CI को भी संभाल सकता है।
किन प्लान में Vault शामिल है?
Startup, Scale और Enterprise। प्रति संगठन प्रोजेक्ट: 5, 50 और 200। प्रति एनवायरनमेंट सीक्रेट: 100, 500 और 1,000।
एक सीक्रेट से शुरुआत करें
एक प्रोजेक्ट बनाएँ, एक सीक्रेट जोड़ें और उसे CLI, अपने CI या अपने ऐप से रिज़ॉल्व करें।