2011-02-10 17 views
12

मैं हेरोकू द्वारा होस्ट किए गए आरओआर का उपयोग कर रहा हूं और मैं पेपरक्लिप का उपयोग करके एस 3 पर फ़ाइलों को स्टोर करना चाहता हूं। मेरा स्रोत कोड जिथब पर होस्ट किया गया है और दुनिया को पठनीय है। चाबियाँ बाकी दुनिया से एक रहस्य रखने के लिए सबसे अच्छा अभ्यास क्या है?
पेपरक्लिप पता चलता है कि पहुंच कुंजियों एक विन्यास फाइल में जमा हो जाती है (या कोड में), तो उदाहरण के लिए मेरे पास है:रेल, पेपरक्लिप, हेरोकू, गिटहब और एडब्ल्यूएस पर रूबी - सुरक्षित कुंजी

फ़ाइल: config/s3.yml

access_key_id: my_access_key_id 
secret_access_key: my_very_secret_key 
bucket: bucket_name 

Heroku को कोड करने से काम करता है स्थानीय गिट और फिर इसे हेरोकू में धक्का दे रहा है। चूंकि मैं भी जिथब का उपयोग कर रहा हूं, इसलिए मैं उसी कोड को भी जिथूब पर दबाता हूं। इसका मतलब है कि मैं वहां गुप्त कुंजी भी धक्का देता हूं।
मैं वर्तमान में एक विश्व-पठनीय गीथब खाता का उपयोग कर रहा हूं, इसलिए यदि मैंने जिथब का भुगतान किया है तो मैं आधा समस्या दूर कर सकता हूं लेकिन फिर भी मैं कोड में कॉन्फ़िगरेशन फ़ाइल में लगी गुप्त कुंजी से खुश नहीं हूं। मुझे नहीं पता कि इसके लिए एक बेहतर अभ्यास है या नहीं।

कुंजी को गुप्त रखने और अभी भी पुस्तकालयों और सेवाओं की उपरोक्त सूची का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?

बीटीडब्ल्यू, मैंने पिछले हफ्ते केवल रोर और उसकेोकू के साथ शुरुआत की है, इसलिए मुझे एक नया माना जा सकता है, कृपया विचार करें;) धन्यवाद!

उत्तर

21

आपको अपने heroku ऐप से ENV चर का उपयोग करने की आवश्यकता है।

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

इस चाल के साथ आपको अपने कोड को परिभाषित करने के लिए अपने कोड को अपडेट करने की आवश्यकता नहीं है और कॉन्फ़िगरेशन को कॉन्फ़िगर नहीं किया गया है।

access_key_id: <%= ENV['S3_ACCESS_KEY'] %> 
secret_access_key: <%= ENV['S3_SECRET_KEY'] %> 
bucket: <%= ENV['S3_BUCKET_NAME'] %> 

और

heroku config:add S3_ACCESS_KEY='your_key' 
heroku config:add S3_SECRET_KEY='your_secret' 
heroku config:add S3_BUCKET_NAME='your_nucket_name' 
+0

जानकारी के लिए, 'config: add' को' config: set' द्वारा प्रतिस्थापित किया गया है। – thomasb

-5

गलती .. यदि आप उसकाोकू उपयोग कर रहे हैं तो कोई अन्य तरीका नहीं है। आपको सबकुछ एक रेपो में रखना होगा और उन्हें धक्का देना होगा।

रेग जिथब, यदि आप सार्वजनिक रिपोज़ का उपयोग करने जा रहे हैं - "निजी" यदि आपको अपने ऐप को काम करने के लिए उन चाबियों की आवश्यकता है। यदि आप किसी चयनित कुछ लोगों को उस निजी जिथब रेपो तक पहुंच प्रदान करते हैं तो भी आपको अपने टीम के सदस्यों पर भरोसा करना पड़ता है।

मुझे किसी अन्य विचार से अवगत नहीं है।

+1

यह उत्तर अभी हटाया जाना चाहिए। – user664833

1

कुछ ही समय पहले अमेज़न आधिकारिक AWS SDK for Ruby जारी किया अपने Heroku अनुप्रयोग में इस ENV चर जोड़ें:

अपने s3.yml में आप बस करो की जरूरत है। यह एस 3 के साथ बहुत अच्छी तरह से काम करता है, बॉक्स से अमेरिकी, यूरोपीय और जापानी एस 3 उदाहरणों का समर्थन करता है और अच्छी तरह से बनाए रखा जाता है।

मैंने पेडक्लिप के लिए स्टोरेज मॉड्यूल बनाया है जिसे paperclip-aws कहा जाता है ताकि एडब्ल्यूएस एसडीके के साथ काम किया जा सके।

इसका उपयोग करने के लिए स्वतंत्र महसूस करें। मुझे आशा है कि इससे मदद मिलेगी।

संबंधित मुद्दे