Architecture Decision Record

Active theme: Light

← निर्णय रिकॉर्ड के उदाहरण

गोपनीय जानकारी (secrets) का भंडारण

विषय-सूची:

सारांश

मुद्दा

हमें गोपनीय जानकारी, जैसे पासवर्ड, निजी कुंजियाँ, प्रमाणीकरण टोकन आदि, संग्रहीत करनी होती है।

कुछ गोपनीय जानकारी उपयोगकर्ता-उन्मुख है। उदाहरण के लिए, हमारा डेवलपर अपने मोबाइल फ़ोन का उपयोग करके किसी सेवा का पासवर्ड देखने में सक्षम होना चाहता है।

कुछ गोपनीय जानकारी प्रणाली-उन्मुख है। उदाहरण के लिए, हमारी निरंतर डिलीवरी पाइपलाइन को हमारी क्लाउड होस्टिंग के क्रेडेंशियल देखने में सक्षम होना चाहिए।

निर्णय

उपयोगकर्ता-उन्मुख गोपनीय जानकारी के लिए Bitwarden

प्रणाली-उन्मुख गोपनीय जानकारी के लिए Vault by HashiCorp।

अवस्था

तय। नए विकल्पों के सामने आने पर हम उनके लिए खुले हैं।

विवरण

मान्यताएँ

इस उद्देश्य और हमारी वर्तमान स्थिति के लिए, हम उपयोगकर्ता-उन्मुख सुविधा, जैसे उपयोगी मोबाइल ऐप, को महत्व देते हैं।

  • हम चलते-फिरते तेज़, आसान पहुँच सुनिश्चित करना चाहते हैं, जैसे ऑन-कॉल सिस्टम विश्वसनीयता इंजीनियरिंग करने वाले डेवलपर के लिए।

  • हम कुछ गोपनीय जानकारी चुनिंदा लोगों, जैसे किसी टीम, के बीच साझा करने में सक्षम होना चाहते हैं।

हम एकल-प्रदाता के लिए समाधान खोजने का प्रयास नहीं कर रहे, जैसे सारी गोपनीय जानकारी केवल Amazon या Azure या Google पर संग्रहीत करना।

हम "याद रखो" या "नोट पर लिख लो" या "अपना ही तरीका निकाल लो" जैसे तदर्थ दृष्टिकोण नहीं चाहते।

इस उद्देश्य के लिए हमारा सुरक्षा मॉडल प्रतिष्ठित COTS विक्रेताओं, जैसे SaaS पासवर्ड प्रबंधन उपकरणों, के उपयोग के साथ ठीक है।

बाधाएँ

फ़िलहाल हम कुछ ऐसा चाहते हैं जो आसान हो, यानी कोड लिखने की ज़रूरत नहीं, सर्वर इंस्टॉल करने की ज़रूरत नहीं, कोई बड़ी प्रतिबद्धता करने की ज़रूरत नहीं, सबको मानकीकृत करने की ज़रूरत नहीं।

रुख

हमने विचार किया:

  1. उपयोगकर्ता-उन्मुख रेडीमेड पासवर्ड प्रबंधक: LastPass, 1Password, Bitwarden, Dashlane, KeePass, pass, GPG आदि।

  2. प्रणाली-उन्मुख COTS पासवर्ड प्रबंधक: AWS KMS, Vault by HashiCorp, EnvKey, Secret Server by Thycotic, Devolutions Password Server, Confidant by Lyft।

  3. साझाकरण-उन्मुख दृष्टिकोण: साझा Google दस्तावेज़, या साझा Slack चैनल, या साझा नेटवर्क फ़ोल्डर आदि का उपयोग।

  4. कम-तकनीकी तदर्थ दृष्टिकोण, जैसे याद रखना, नोट लिखना, या हर उपयोगकर्ता पर अपना तरीका निकालने के लिए निर्भर रहना।

तर्क

Bitwarden, LastPass, 1Password और Dashlane सभी वाणिज्यिक रेडीमेड उत्पाद हैं।

  • उपयोगकर्ताओं, टीमों, संगठनों आदि के लिए समान प्रकार की सुविधाएँ।

  • Windows और Mac के लिए डेस्कटॉप क्षमता, और Android और iOS के लिए मोबाइल क्षमता।

  • स्वचालित फ़ॉर्म भरने आदि के लिए Chrome और Firefox के लिए ब्राउज़र एक्सटेंशन।

Bitwarden के अन्य उत्पादों पर दो फ़ायदे हैं:

  • Bitwarden ओपन सोर्स है, जिसका अर्थ है कि सुरक्षा की सहकर्मी समीक्षा हो सकती है और कंपनी को सुरक्षा-उन्मुख डेवलपर व्यापक रूप से सराहते हैं।

  • सॉफ़्टवेयर कर्मियों के किस्से दूसरों की तुलना में Bitwarden को काफ़ी अधिक पसंद करने का वर्णन करते हैं।

एक सामान्य अच्छा लेख: https://jcs.org/2017/11/17/bitwarden

एक सामान्य साथ-साथ मतदान वाली साइट: https://stackshare.io/stackups/bitwarden-vs-dashlane

हम KeyPass, pass, GPG आदि को स्थगित करते हैं क्योंकि अतिरिक्त जटिलता है। ये सभी तकनीकी उपयोगकर्ताओं के लिए अच्छे समाधान लगते हैं। GPG विशेष रूप से उन तकनीकी उपयोगकर्ताओं के लिए अच्छा लगता है जो सिस्टम-पार कमांड-उन्मुख क्षमताएँ चाहते हैं।

हम KMS को स्थगित करते हैं क्योंकि उसमें एकल-प्रदाता लॉक-इन है।

हम प्रणाली-उन्मुख ज़रूरतों के लिए Vault चुनते हैं, क्योंकि समीक्षाएँ आश्चर्यजनक रूप से सकारात्मक हैं, और क्योंकि HashiCorp के पास शीर्ष-गुणवत्ता वाले सॉफ़्टवेयर और सहायता का उत्कृष्ट रिकॉर्ड है।

हम साझा दस्तावेज़ों, साझा चैनलों, साझा नेटवर्क फ़ोल्डरों आदि जैसे साझाकरण दृष्टिकोण पर वीटो लगाते हैं। ये वे सुरक्षा गुण नहीं देते जो हम चाहते हैं।

हम तदर्थ कम-तकनीकी दृष्टिकोण पर वीटो लगाते हैं, क्योंकि हम सब सहमत हैं कि यह दीर्घकालिक रास्ता नहीं है।

निहितार्थ

डेवलपरों को गोपनीय जानकारी दो जगह ट्रैक करनी पड़ सकती है: उपयोगकर्ता-उन्मुख पहुँच के लिए Bitwarden, और प्रणाली-उन्मुख पहुँच के लिए Vault।

संबंधित

संबंधित निर्णय

कौन-सा CI/CD सर्वर चुनना है, इस निर्णय में गोपनीय जानकारी तक पहुँचने की क्षमता का प्रमाण शामिल होना चाहिए।

हमें तय करना होगा कि गोपनीय जानकारी का प्रबंधन कैसे करें, नीतियों, रोटेशन, संगठनों आदि के संदर्भ में।

संबंधित आवश्यकताएँ

गोपनीय जानकारी की अनुपालन, ऑडिटिंग, और HR ऑनबोर्डिंग/ऑफ़बोर्डिंग से जुड़ी आवश्यकताएँ होंगी।

संबंधित कलाकृतियाँ

हम अपेक्षा करते हैं कि हम कुछ गोपनीय जानकारी को एनवायरनमेंट वेरिएबल में निर्यात कर सकते हैं।

संबंधित सिद्धांत

आसानी से पलटा जा सकने वाला।

आसानी से समानांतर, यानी कई प्रकार के पासवर्ड प्रबंधकों का उपयोग करना आसान है।

आज़माने में सस्ता, यानी निःशुल्क परीक्षण है और कोई प्रतिबद्धता नहीं।

टिप्पणियाँ

मूल्यांकन टिप्पणियाँ यहाँ हैं। ये टिप्पणियाँ सभी विभिन्न devops चर्चा मंचों पर सार्वजनिक टिप्पणियाँ हैं।

Vault by HashiCorp

Vault ठीक वही है जो आप यहाँ चाहते हैं।

हालाँकि, Vault को सीधे उत्पादन में न डालें, पहले उसे परीक्षण परिवेश में खड़ा करें, क्योंकि HashiCorp के उत्पाद अद्भुत होने पर भी उनका दस्तावेज़ीकरण काफ़ी कमज़ोर हो सकता है।

सीखने की प्रक्रिया बहुत कठिन है और खड़ा करना मामूली नहीं है।

शुरुआती सेटअप थोड़ा कष्टदायक है। लेकिन यह पूरी तरह सार्थक है, और समुदाय इसे इतना समर्थन देगा कि आपका काम चल जाए।

दस्तावेज़ बुरे हैं, लेकिन ऑनलाइन लोगों के सेटअप करने के कई मार्गदर्शक हैं और यदि आप उनमें से कुछ को मिलाएँ तो आपके पास काम करने वाला सेटअप होगा।

शुरुआती सेटअप में उनके helm chart (vault और consul) के साथ छेड़छाड़ करनी पड़ी। हालाँकि तकनीकी रूप से आप कई अन्य बैक-एंड उपयोग कर सकते हैं, मैं वास्तव में उनकी अनुशंसा नहीं करता। यदि आपके पास संग्रहीत करने के लिए बहुत अधिक डेटा नहीं है तो बैक-एंड/consul बहुत छोटा हो सकता है।

निश्चित रूप से CLI के साथ सहज/परिचित हों, क्योंकि GUI उनके एंटरप्राइज़ संस्करण के लिए अवधारणा-प्रमाण/विज्ञापन पोर्टल जैसा है।

यह तथ्य कि आप बस इसे "भर" नहीं सकते, कष्टदायक है। उदाहरण के लिए, यदि आपके पास 5 फ़ील्ड हैं तो आपको प्रत्येक आइटम के लिए प्रत्येक फ़ील्ड मैन्युअल रूप से जोड़नी होगी। इसलिए ऐसा नहीं है कि आप किसी विशिष्ट श्रेणी के लिए फ़ील्ड पूर्व-परिभाषित करें, और उस श्रेणी के सभी आइटम के लिए उन फ़ील्ड को भरें; यह अधिक "हर बार सब कुछ आप ही बनाते हैं" जैसा है, जो (मेरे विचार से) सिरदर्द है।

आप vault के ऊपर UI के रूप में goldfish को भी देखना चाह सकते हैं। इससे आपकी टीम को इसके साथ जोड़ना काफ़ी अच्छा हो जाता है। उनके पास डेमो भी है। 1. consul सेट अप करें। 2. consul की ओर इंगित करता vault सेट अप करें। 3. vault की ओर इंगित करता goldfish सेट अप करें। 3. बैकअप के लिए consul snapshot चलाने हेतु कोई cron जॉब सेट करें।

LastPass

LastPass Teams। हम इसका उपयोग करते हैं, इसमें कस्टम टेम्पलेट, ACL हैं, मेरे विचार से कुछ भी गायब नहीं है।

मैंने अपने संगठन में LastPass लागू किया और इसे C+/B- दर्जा देता हूँ। हाल के समय की सबसे बड़ी समस्या विश्वसनीयता की कमी है। पिछले 90 दिनों में कई घंटों तक वॉल्ट ज़बरदस्ती ऑफ़लाइन मोड में डाले गए। यह मेरे संगठन के लिए आदर्श नहीं है क्योंकि 20+ साझा फ़ोल्डरों में, सचमुच, 4,000+ पासवर्ड संग्रहीत हैं। जैसा कि आप कल्पना कर सकते हैं, इतने पासवर्ड के साथ रोज़ कम से कम कुछ अपडेट या जोड़े जाते हैं। यदि समस्याएँ एक-दो घंटे से अधिक चलें तो हमारे पास आपदा पुनर्प्राप्ति योजना है: एक स्क्रिप्ट हर रात वॉल्ट के CSV डंप पर हस्ताक्षर करती और उसे एन्क्रिप्ट करती है जिसे keepass में आयात किया जा सकता है।

LastPass में सेवा के घटे हुए प्रदर्शन के अनगिनत बिना रिपोर्ट किए पल रहे हैं: लॉगिन "काम" करता है लेकिन साइट नहीं खींचता, एडमिन पैनल में यादृच्छिक सुविधाएँ टूटी हैं, और नए शीर्ष-स्तर साझा फ़ोल्डरों के लिए कुंजियाँ ठीक से साझा नहीं होतीं। मेरे पास एक विशिष्ट 'key push'/बैकअप उपयोगकर्ता है जो हर समूह में है। आमतौर पर उस उपयोगकर्ता के रूप में लॉग इन करने से कुंजी साझाकरण की कोई भी समस्या ठीक हो जाती है, लेकिन तब नहीं जब सेवा घटी हुई हो, चाहे स्टेटस पेज कुछ भी कहे...

एकीकरण के लिए, यदि आपके पास न्यूनतम विशेषाधिकार मॉडल वाले उचित ACL हैं तो यह आसान हो सकता है, जैसे यदि किसी उपयोगकर्ता के पास किसी प्रविष्टि या फ़ोल्डर पर पढ़ना-लिखना और केवल-पढ़ना, दोनों हों तो उन्हें केवल-पढ़ने की अनुमतियाँ मिलती हैं। दुर्भाग्य से मेरे संगठन के ACL सबसे अच्छे नहीं हैं, इसलिए मैंने JSON प्रोविज़निंग API और ~500 पंक्तियों के python का उपयोग किया क्योंकि हमारे सैकड़ों ACL की निर्भर प्रकृति न्यूनतम विशेषाधिकार मॉडल से अच्छी तरह मेल नहीं खाती थी। अंततः मैंने किसी उपयोगकर्ता के सभी ACL लिए और एक तरह की निर्भरता-यात्रा (dependency walk) की।

यदि आपके ACL या समूह संरचना पहले से ही न्यूनतम विशेषाधिकार संरचना को ध्यान में रखकर बनी है, तो Windows के लिए AD/LDAP सिंक उपकरण अच्छा काम करेगा।

उनकी बिक्री टीम से संपर्क करें और वे आपको लंबा एंटरप्राइज़ परीक्षण दे सकते हैं। ट्रिगर दबाने से पहले इसकी सीमाओं को पूरी तरह समझ लें। हमें काफ़ी विकास-पीड़ाएँ हुईं, लेकिन सर्वर-साइड पर रुकावटों या बाधाओं के अलावा यह अविश्वसनीय रूप से सुगम रहा है।

Bitwarden

Bitwarden के आसपास अच्छे उपकरण हैं (WebUI, CLI, मोबाइल, डेस्कटॉप)। स्व-होस्ट करने योग्य और सेटअप करना काफ़ी आसान। काफ़ी अच्छा दस्तावेज़ीकरण और PrivacyTools द्वारा अनुशंसित उपकरण।

EnvKey

https://www.envkey.com/ एक SaaS है। लागू करना, एकीकृत करना और प्रबंधित करना वास्तव में आसान।

सुविधाएँ:

  • API कुंजियों और क्रेडेंशियल की सुरक्षा।

  • कॉन्फ़िगरेशन को हर जगह समन्वित रखना।

  • स्मार्ट, एंड-टू-एंड एन्क्रिप्टेड कॉन्फ़िगरेशन और गोपनीय जानकारी प्रबंधन।

  • असुरक्षित साझाकरण और कॉन्फ़िगरेशन के बेतरतीब फैलाव को रोकना।

  • मिनटों में एकीकृत करना।

क्षमताएँ:

  • अपने सभी ऐप, परिवेश और टीमों के लिए कॉन्फ़िगरेशन और पहुँच स्तर एक ही जगह प्रबंधित करें।

  • केवल एक एनवायरनमेंट वेरिएबल के साथ किसी भी विकास या सर्वर परिवेश को कॉन्फ़िगर करें।

लाभ:

  • अच्छा होम पेज।

  • स्पष्ट मूल्य प्रस्ताव।

  • दृश्य रूप से उत्कृष्ट वेब ऐप।

  • बेहतरीन उदाहरण डेटा, जैसे Algolia, AWS, Datadog, GitHub, Stripe आदि।

  • संस्थापक से कंपनी, UI आदि के बारे में 30 मिनट बात की। Dane जानकार, लाभ/हानि के बारे में ईमानदार और व्यवहार्य साझेदार लगते हैं।

  • कंपनी मूलतः 1 संस्थापक वाली सामान्य Y Combinator कंपनी है। 2018-01 में $120K जुटाए।

  • ध्यान एंटरप्राइज़ सुविधाओं तक पहुँचने पर है, खासकर EnvKey क्लाउड-होस्टिंग से ऑन-प्रिमाइसेस या BYOC की ओर जाने पर।

  • संभावित आगे का रास्ता: उपयोग में आसानी के लिए EnvKey से शुरू करना, फिर बाद में (या समानांतर में) Vault जोड़ना।

Confidant by Lyft

https://lyft.github.io/confidant/

Confidant Lyft के डेवलपरों की ओपन-सोर्स गोपनीय जानकारी प्रबंधन सेवा है जो गोपनीय जानकारी का उपयोगकर्ता-अनुकूल भंडारण और सुरक्षित तरीके से पहुँच देती है।

KMS प्रमाणीकरण: Confidant प्रमाणीकरण की "पहले मुर्गी या पहले अंडा" समस्या को AWS KMS और IAM का उपयोग करके हल करता है, ताकि IAM भूमिकाएँ ऐसे सुरक्षित प्रमाणीकरण टोकन बना सकें जिन्हें Confidant सत्यापित कर सके। Confidant आपकी IAM भूमिकाओं के लिए KMS अनुदान भी प्रबंधित करता है, जिससे IAM भूमिकाएँ ऐसे टोकन बना सकती हैं जिनका उपयोग सेवा-से-सेवा प्रमाणीकरण के लिए, या सेवाओं के बीच एन्क्रिप्टेड संदेश भेजने के लिए, किया जा सकता है।

संस्करणित गोपनीय जानकारी का एट-रेस्ट एन्क्रिप्शन: Confidant गोपनीय जानकारी को DynamoDB में केवल-जोड़ने वाले तरीके से संग्रहीत करता है, Fernet सममित प्रमाणित क्रिप्टोग्राफ़ी का उपयोग करके प्रत्येक गोपनीय जानकारी के प्रत्येक संशोधन के लिए अद्वितीय KMS डेटा कुंजी बनाता है।

गोपनीय जानकारी प्रबंधित करने के लिए उपयोगकर्ता-अनुकूल वेब इंटरफ़ेस: Confidant AngularJS वेब इंटरफ़ेस देता है जो अंतिम उपयोगकर्ताओं को गोपनीय जानकारी, गोपनीय जानकारी से सेवाओं के मानचित्रण, और परिवर्तनों का इतिहास आसानी से प्रबंधित करने देता है।

Devolutions Password Server

https://server.devolutions.net/

विशेषाधिकार प्राप्त खातों और सत्रों तक पहुँच को सुरक्षित, प्रबंधित और मॉनिटर करें।

एक व्यापक, अत्यधिक सुरक्षित पासवर्ड वॉल्ट जो आपको अपने विशेषाधिकार प्राप्त खातों तक पहुँच नियंत्रित करने देता है, साथ ही sysadmin के लिए समग्र नेटवर्क दृश्यता बढ़ाता है और अंतिम उपयोगकर्ताओं को सुगम अनुभव देता है।

सुविधाएँ: केंद्रीकृत संगठन पासवर्ड वॉल्ट, उपयोगकर्ता-विशिष्ट निजी वॉल्ट, पासवर्ड प्रबंधक, क्रेडेंशियल इंजेक्शन, Active Directory एकीकरण, भूमिका-आधारित पहुँच नियंत्रण, दो-कारक प्रमाणीकरण, एंटरप्राइज़ के लिए तैयार, IP प्रतिबंध, प्रबंधन क्षमताएँ, स्वचालित पासवर्ड जनरेटर, मोबाइल ऐप पहुँच, पासवर्ड इतिहास, पहुँच रिपोर्ट, ईमेल अलर्ट।

  • डेटा एन्क्रिप्शन का समर्थन करता है

  • LDAP, O365 और स्थानीय उपयोगकर्ताओं सहित कई प्रमाणीकरण योजनाओं का समर्थन करता है, कई स्रोतों से MFA के समर्थन के साथ

  • अनेक टीमों के लिए सूक्ष्म पहुँच नियंत्रण के साथ कई रिपॉज़िटरी/वॉल्ट

  • आधुनिक वेब UI

  • व्यक्तिगत क्रेडेंशियल/कनेक्शन के लिए निजी क्रेडेंशियल और कनेक्शन वॉल्ट

  • iOS/Android के लिए मोबाइल ऐप

  • प्रत्येक प्रविष्टि के लिए ऑडिट लॉग, कौन/क्या/कब, और यह पूछने का वैकल्पिक प्रॉम्प्ट कि वे इसे क्यों एक्सेस कर रहे हैं

  • अनुकूलन योग्य टेम्पलेट (हालाँकि वे मूल रूप से सैकड़ों कनेक्शन प्रकारों का समर्थन करते हैं)

  • ढेरों और सुविधाएँ और एक Windows/Mac थिक क्लाइंट (Remote Desktop Manager) जिससे आप सिंक कर सकते हैं और जो विकल्पों का बहुत विस्तार करता है...एक-क्लिक कनेक्शन

  • मूल्य इतना बुरा नहीं है - 15 उपयोगकर्ताओं तक पासवर्ड सर्वर के लिए $500 प्रति वर्ष

Secret Server by Thycotic

https://thycotic.com/products/secret-server/

ऑन-प्रिमाइसेस संस्करण की सुविधाएँ:

  • अपनी एंड-टू-एंड सुरक्षा प्रणालियों और अवसंरचना पर पूरा नियंत्रण

  • अपने ऑन-प्रिमाइसेस डेटा केंद्र या अपने निजी वर्चुअल क्लाउड इंस्टेंस में सॉफ़्टवेयर तैनात करें

  • उन कानूनी और नियामक दायित्वों को पूरा करें जिनमें सभी डेटा और प्रणालियों का ऑन-प्रिमाइसेस रहना आवश्यक है

क्लाउड संस्करण की सुविधाएँ:

  • सेवा के रूप में सॉफ़्टवेयर मॉडल आपको साइन अप करके तुरंत शुरू करने देता है

  • आपके बढ़ने के साथ लचीली विस्तार क्षमता

  • 99.9% अपटाइम SLA के साथ Azure द्वारा दिए गए नियंत्रण और अतिरेक

उपयोगकर्ता प्रतिक्रिया:

  • हम पहले उस उत्पाद का उपयोग करते थे। इसे बायपास करना बहुत आसान था और नियम केवल समझदार लोगों के लिए काम करते हैं। आलसी या मूर्ख उपयोगकर्ता टीम क्षेत्र में इसे आसानी से बिगाड़ सकते हैं। उनसे बात करने पर कीमतें बातचीत योग्य हैं।

  • आप इसे SQL express और Win 7 मशीन का उपयोग करके चला सकते हैं।

  • सस्ता।