स्टार्टअप स्क्रिप्ट/कॉन्फ़िगरेशन फ़ाइल में डेटाबेस पासवर्ड स्टोर करने का सबसे अच्छा तरीका?

तो हमारे वेब सर्वर ऐप्स को डेटाबेस से कनेक्ट करने की आवश्यकता है, और कुछ अन्य ऐप्स में स्टार्टअप स्क्रिप्ट होती हैं जो बूट समय पर निष्पादित होती हैं।

इन अनुप्रयोगों के लिए नाम/पासवर्ड स्टोर करने का सबसे अच्छा तरीका क्या है

  • सुरक्षा, उदा। शायद हम sysadmins को डेटाबेस पासवर्ड नहीं जानना चाहते हैं
  • रखरखाव, उदा। पासवर्ड बदलते समय कॉन्फ़िगरेशन को बदलने में आसान बनाते हैं, आदि।

दोनों खिड़कियां और लिनक्स समाधान की सराहना की!

0
ro fr bn

7 उत्तर

स्पष्टीकरण: सुरक्षा के मामले में, रखरखाव (उदाहरण के लिए यदि लॉगिन बदलने की जरूरत है, तो क्या मैं इसे बाद में पा सकता हूं)

@lomax: शायद मैं पासवर्ड को देखने के लिए हर किसी को भौतिक सर्वर (जैसे sysadmins) तक पहुंच नहीं चाहता हूं।

धन्यवाद!

0
जोड़ा

सादे पाठ? अगर वे आपके सर्वर पर हैं, तो मुझे उम्मीद है कि सर्वर सुरक्षित है ताकि अनधिकृत पहुंच की अनुमति न दी जा सके। अगर लोग सर्वर पर आपकी कॉन्फ़िगरेशन फ़ाइलों तक पहुंच सकते हैं, तो कुछ पहले गलत हो गया है।

0
जोड़ा
इस रणनीति के बाद गहराई से रक्षा बनाने का अवसर खो जाएगा।
जोड़ा लेखक AJ., स्रोत

अपना पासवर्ड सुरक्षित करने का सबसे अच्छा तरीका एक का उपयोग करना बंद करना है। एक विश्वसनीय कनेक्शन का प्रयोग करें: कैसे करें: ASP.NET 2.0 में Windows प्रमाणीकरण का उपयोग कर SQL सर्वर से कनेक्ट करें । तब आपके पास छिपाने के लिए कुछ भी नहीं है - अपने web.config और दुनिया को स्रोत प्रकाशित करें, फिर भी वे आपके डेटाबेस को हिट नहीं कर सकते हैं।

यदि वह आपके लिए काम नहीं करेगा, तो अंतर्निहित एएसपी में कॉन्फ़िगरेशन एन्क्रिप्शन सिस्टम का उपयोग करें नेट

0
जोड़ा

ज्यादातर मामलों में, मेरा मानना ​​है कि यह एक सादा पाठ फ़ाइल में पासवर्ड को खराब करने के लिए पर्याप्त है (उदाहरण के लिए बेस 64 के साथ)। आप रूट एक्सेस के साथ एक निर्धारित sysadmin के खिलाफ संग्रहीत पासवर्ड को पूरी तरह से सुरक्षित नहीं कर सकते हैं, इसलिए वास्तव में कोशिश करने की कोई आवश्यकता नहीं है। सरल obfuscation, हालांकि, एक कंधे surfer के लिए पासवर्ड गलती से खुलासा के खिलाफ की रक्षा करता है।

एक अधिक जटिल विकल्प एक समर्पित सुरक्षित पासवर्ड सर्वर स्थापित करना है जो या तो:

  • एक पासवर्ड डिक्रिप्शन सेवा प्रदान करता है
  • वास्तव में अन्य कम सुरक्षित सर्वरों द्वारा उपयोग के लिए पासवर्ड संग्रहीत करता है

इस्तेमाल किए गए नेटवर्क प्रोटोकॉल के आधार पर, यह tcpdump के साथ एक दुष्ट sysadmin के खिलाफ सुरक्षा नहीं कर सकता है। और यह शायद एक डीबगर के साथ एक निर्धारित sysadmin के खिलाफ रक्षा नहीं करेगा, या तो। उस समय, यह केर्बेरोज टिकट जैसे कुछ देखने का समय हो सकता है।

0
जोड़ा

मैं लोमैक्सक्स से सहमत हूं: अगर कोई पहले से ही सर्वर पर है या इसके पास व्यापक पहुंच है (जैसे सिसाडमिन), तो गेम काफी अधिक है। तो विचार उस सर्वर का उपयोग करना होगा जिस पर आप भरोसा करते हैं कि यह उस डिग्री के लिए सुरक्षित है जिसे आप चाहते हैं। विशेष रूप से:

  • आपको sysadmins पर विश्वास करने की आवश्यकता है
  • आपको किसी अन्य व्यक्ति पर विश्वास करने की आवश्यकता है जो एक ही सर्वर पर कोड चला रहा है (यही कारण है कि साझा होस्टिंग मेरे लिए एक बड़ा नंबर नहीं है)

इसके अलावा, पर्यावरण चर इन प्रकार के प्रमाण-पत्रों को संग्रहीत करने के लिए एक लोकप्रिय विकल्प प्रतीत होते हैं, क्योंकि इसका मतलब है कि केवल स्रोत तक पहुंच (उदाहरण के लिए देव बॉक्स से समझौता करके) इसे सीधे प्रकट नहीं करता है और यह भी अच्छी तरह से स्थानीयकृत किया जा सकता है प्रत्येक सर्वर (देव, परीक्षण, आदि)।

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

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

हालांकि, यह obfuscation से वास्तव में बहुत अधिक नहीं है, क्योंकि आपका कोड कहीं भी कुछ स्रोत भंडार में संग्रहीत होने की संभावना है।

मैं सुझाव दूंगा कि फ़ायरवॉल और एक निजी नेटवर्क बबल का उपयोग करके भौतिक रूप से और नेटवर्क पर अपने सर्वर तक पहुंच को नियंत्रित करने के लिए बेहतर सेवा दी जाएगी, और पासवर्ड को लॉक डाउन की अनुमति के साथ डिस्क पर स्पष्ट (या बेस -64 एन्कोडेड) में स्टोर करें अपने वेब ऐप के लिए रन उपयोगकर्ता को।

आप आईपी द्वारा केवल अपनी वेब ऐप मशीनों से कनेक्शन स्वीकार करने के लिए डेटाबेस सर्वर को लॉक कर सकते हैं।

आखिरकार, आपकी समस्या यह है कि कुंजी (आपके डीबी उपयोगकर्ता नाम/पासवर्ड जोड़ी) को आपके वेब ऐप्स द्वारा प्रोग्रामेटिक, अप्रयुक्त उपयोग के लिए उपलब्ध होना आवश्यक है।

0
जोड़ा

PostgreSQL इस तरह की स्थिति के लिए एक अच्छा समाधान प्रदान करता है प्रलेखन। अनिवार्य रूप से, आप रिमोट मशीन पर PostgreSQL सर्वर पोर्ट पर अपनी मशीन पर एक पोर्ट को पुल करने के लिए एसएसएच का उपयोग करते हैं। इसमें प्रमाणीकरण के तीन चरण हैं:

  1. स्थानीय बंदरगाह तक पहुंच प्रतिबंधित करें, जैसे कि केवल एक विशेष उपयोगकर्ता इसे कनेक्ट करने दें।
  2. किसी विशेष उपयोगकर्ता के रूप में ssh के साथ PostgreSQL होस्ट में पासवर्ड-कम कनेक्शन सेट करें।
  3. उपयोगकर्ता ssh को पासवर्ड के बिना PostgreSQL तक स्थानीय पहुंच के रूप में कनेक्ट करने दें।

यह सुरक्षा को कम करता है कि आपके उपयोगकर्ता खाते सुरक्षित हैं या नहीं और आपकी एसएसएच कॉन्फ़िगरेशन ध्वनि है, और आपको कहीं भी पासवर्ड की आवश्यकता नहीं है।

Edit: I should add that this will work with any database that listens to a TCP/IP port. It just happens to be described in PostgreSQL. And you will want iptables (or the equivalent off Linux) to do the port restrictions. See this.

0
जोड़ा