आप डेटाबेस.आईएमएल कैसे सुरक्षित करते हैं?


50

रेल अनुप्रयोगों पर रूबी के भीतर डेटाबेस.इम एक सादा पाठ फ़ाइल है जो डेटाबेस प्रमाण-पत्र संग्रहीत करती है।

जब मैं अपने रेल अनुप्रयोगों को तैनात करता हूं तो मेरे पास कैपिस्ट्रानो नुस्खा में कॉलबैक तैनात करने के बाद होता है जो एप्लिकेशन की/config निर्देशिका में डेटाबेस.आईएमएल फ़ाइल में एक प्रतीकात्मक लिंक बनाता है। फ़ाइल को एक अलग निर्देशिका में संग्रहीत किया जाता है जो मानक कैपिस्ट्रानो/रिलीज निर्देशिका संरचना के बाहर है। मैं 400 फाइल को chmod तो यह केवल उपयोगकर्ता द्वारा इसे पठनीय है जो इसे बनाया।

  • क्या यह इसे लॉक करने के लिए पर्याप्त है? यदि नहीं, तो आप और क्या करते हैं?
  • क्या कोई भी डेटाबेस.आईएमएल फाइलों को एन्क्रिप्ट कर रहा है?
12

आप यह भी सुनिश्चित करें कि आपकी SSH प्रणाली अच्छी तरह से अपने Capistrano बॉट के रूप में प्रवेश से रोकने के लिए सुरक्षित है बनाने के लिए चाहता हूँ। मैं पासवर्ड-सुरक्षित कुंजी जोड़े तक पहुंच प्रतिबंधित करने का सुझाव दूंगा।

सर्वर पर .yml फ़ाइल को एन्क्रिप्ट करना बेकार है क्योंकि आपको बॉट को कुंजी देना है, जिसे संग्रहीत किया जाएगा। । । एक ही सर्वर पर। इसे अपनी मशीन पर एन्क्रिप्ट करना शायद एक अच्छा विचार है। Capistrano भेजने से पहले इसे डिक्रिप्ट कर सकते हैं।


1

यदि आप yml फ़ाइल की सुरक्षा के बारे में बहुत चिंतित हैं, तो मुझे यह पूछना होगा: क्या यह आपके संस्करण नियंत्रण में संग्रहीत है? यदि ऐसा है, तो यह एक और बिंदु है जहां एक हमलावर इसे प्राप्त कर सकता है। यदि आप गैर-एसएसएल पर चेकआउट/चेकइन कर रहे हैं, तो कोई इसे रोक सकता है।

इसके अलावा, कुछ संस्करण नियंत्रण (svn, परीक्षा के लिए) के साथ, भले ही आप इसे हटा दें, फिर भी यह इतिहास में है। इसलिए, अगर आपने इसे किसी भी समय अतीत में हटा दिया है, तो पासवर्ड बदलने के लिए अभी भी एक अच्छा विचार है।

  0

मैं कभी भी अपने स्रोत नियंत्रण भंडार में डेटाबेस.मिल स्टोर नहीं करता हूं। 29 oct. 082008-10-29 21:05:07

  0

कोई भी जो फाइलों में रहस्य संग्रहीत करता है और उन्हें संस्करण नियंत्रण में अपलोड करता है, उसे स्पैंक किया जाना चाहिए। 06 oct. 162016-10-06 00:14:33


3

भले ही आप डेटाबेस.आईएमएल फ़ाइल को सुरक्षित करते हैं, फिर भी लोग लिख सकते हैं कि वे वही प्रमाण-पत्रों का उपयोग करते हैं यदि वे आपके आवेदन के कोड को बदल सकते हैं।

इस पर देखने का एक और तरीका यह है: क्या वेब एप्लिकेशन को डेटाबेस तक बहुत अधिक पहुंच है। यदि अनुमतियों को सच है तो कम करें। आवेदन के लिए पर्याप्त अनुमति दें। इस तरह एक हमलावर केवल वही कर सकता है जो वेब एप्लिकेशन करने में सक्षम होगा।


38

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

production: 
    adapter: mysql 
    database: my_db 
    username: db_user 
    password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %> 

एक इलाज करता है।

+2

यह उपयोगकर्ता उपयोगकर्ता के लिए सीधे डेटाबेस.आईएमएल पर पढ़ने की अनुमतियों को सेट करने में कैसे सुधार करता है? 16 jun. 092009-06-16 20:36:42

+2

मैंने इस दृष्टिकोण को लिया क्योंकि, ए) पासवर्ड डेटाबेस.इम में नहीं है और इसलिए स्रोत नियंत्रण के लिए प्रतिबद्ध नहीं है, और बी) केवल उत्पादन सर्वर पर फ़ाइल डालने के अलावा, कोई अन्य काम नहीं था आवश्यक - कोई Capistrano कार्य, मुख्य संरचना आदि के बाहर कोई भी फाइल नहीं। 17 jun. 092009-06-17 10:39:33

+1

मुझे लगता है कि डेटाबेस.इमॉल पहले स्थान पर भंडार में नहीं है क्योंकि प्रत्येक डेवलपर अपने स्वयं के कार्य वातावरण को परिभाषित करने में सक्षम होना चाहिए। 08 oct. 092009-10-08 04:07:07

+1

यदि प्रत्येक डेवलपर एक ऐप-स्थानीय स्क्लाइट डेटाबेस के साथ विकसित हो रहा है और डेटाबेस सर्वर नहीं है, और यदि केवल एक ही कैनोलिक उत्पादन तैनाती है (एकाधिक समान रूप से कॉन्फ़िगर किए गए सर्वर पर) और एकाधिक उत्पादन तैनाती नहीं है, तो यह ' स्रोत नियंत्रण में config/database.yml'। रेल में ऐसा करने का यह डिफ़ॉल्ट तरीका है। यदि आपका सेटअप उस से अधिक जटिल है, तो हो सकता है कि आप स्रोत नियंत्रण में 'config/database.yml' को रखने में सक्षम न हों। 09 aug. 102010-08-09 20:44:40


10

इस जिथब समाधान पर एक नज़र डालें: https://github.com/NUBIC/bcdatabase। bcdatabase एक एन्क्रिप्टेड स्टोर प्रदान करता है जहां पासवर्ड को yaml फ़ाइलों से अलग रखा जा सकता है।

bcdatabase

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

+3

एक अद्यतन: bcdatabase अब https://github.com/NUBIC/bcdatabase पर रहता है। 26 sep. 112011-09-26 16:09:51

  0

यह अब एक मृत परियोजना की तरह लगता है। क्या कोई प्रतिस्थापन या वैकल्पिक समाधान है जिसे सक्रिय रूप से बनाए रखा जाता है? 14 oct. 162016-10-14 16:23:04

  0

@Streamline - अंतिम प्रतिबद्धता 2014 थी, यह बहुत पहले नहीं है। 15 oct. 162016-10-15 12:15:54