ट्रैविस-सीआई पर गुप्त एपीआई कुंजी का उपयोग करना


92

मैं अपनी एक परियोजना के लिए ट्रैविस-सीआई का उपयोग करना चाहता हूं ।

परियोजना एक एपीआई आवरण है, इसलिए कई परीक्षण गुप्त एपीआई कुंजी के उपयोग पर निर्भर करते हैं। स्थानीय स्तर पर परीक्षण करने के लिए, मैं उन्हें पर्यावरण चर के रूप में संग्रहीत करता हूं। ट्रैविस पर उन कुंजियों का उपयोग करने का एक सुरक्षित तरीका क्या है?

जवाबों:


99

ट्रैविस में पर्यावरण चर ( "पर्यावरण चर को एन्क्रिप्ट करना" ) को एन्क्रिप्ट करने की सुविधा है । इसका उपयोग आपकी गुप्त API कुंजियों की सुरक्षा के लिए किया जा सकता है। मैंने इसे सफलतापूर्वक अपनी Heroku API कुंजी के लिए उपयोग किया है।

आपको बस इतना करना है कि ट्रैविस मणि स्थापित करें, जो स्ट्रिंग आप चाहते हैं उसे एन्क्रिप्ट करें और अपने में एन्क्रिप्टेड स्ट्रिंग जोड़ें .travis.yml। एन्क्रिप्शन केवल एक रिपॉजिटरी के लिए मान्य है। travisआदेश अपने रेपो के लिए अपने सार्वजनिक कुंजी हो जाता है और उसके बाद निर्माण के दौरान स्ट्रिंग डिक्रिप्ट कर सकते हैं।

gem install --user travis
travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo

यह आपको निम्न आउटपुट देता है:

Please add the following to your .travis.yml file:

  secure: "OrEeqU0z6GJdC6Sx/XI7AMiQ8NM9GwPpZkVDq6cBHcD6OlSppkSwm6JvopTR\newLDTdtbk/dxKurUzwTeRbplIEe9DiyVDCzEiJGfgfq7woh+GRo+q6+UIWLE\n3nowpI9AzXt7iBhoKhV9lJ1MROrnn4DnlKxAEUlHTDi4Wk8Ei/g="

12
दस्तावेज़ का उपयोग करने के लिए मत भूलना कि आप किस चर का उपयोग कर रहे हैं, और क्यों, क्योंकि एक बार उन्हें एन्क्रिप्ट करने के बाद केवल मूल कुंजियों वाला कोई व्यक्ति उन्हें पुनर्प्राप्त कर सकता है।
जर्सीबॉय

2
ऐसा लगता है कि ट्रैविस मणि के नए संस्करण विपरीत क्रम में अपने तर्क रखना पसंद करते हैं: travis encrypt [args..] [options]यानी आप जो करना चाहते हैं travis encrypt MY_SECRET_ENV=super_secret -r my_username/my_repo। विकल्पों को पहले रखना और अंतिम रूप से एन्क्रिप्ट किया जाने वाला डेटा एक चेतावनी प्रदर्शित करता है।
जॉर्डन

3
विकल्प के साथ --add env.globalकरने के लिए travisआदेश, यह आपके .travis.yml स्वचालित रूप से संशोधन होगा।
थॉमस

1
@RamIdavalapati: चूँकि रहस्य एन्क्रिप्टेड हैं, इसलिए इसे सुरक्षित माना जाता है, हाँ।
Odi

1
@ रमेश-एक्स: हाँ क्योंकि यह एन्क्रिप्शन ट्रैविसीआई के लिए है। यदि किसी का ट्रैविसी पर नियंत्रण है, तो वे SECRET_ENV
Odi

7

के अनुसार इस ट्रैविस ci दस्तावेज में यह है कि कहा है:

यदि आपके पास हरोकू और ट्रैविस सीआई कमांड लाइन क्लाइंट स्थापित हैं, तो आप अपनी कुंजी प्राप्त कर सकते हैं, इसे एन्क्रिप्ट कर सकते हैं और अपने प्रोजेक्ट निर्देशिका से निम्न कमांड चलाकर अपने .travis.yml में जोड़ सकते हैं:

travis encrypt $(heroku auth:token) --add deploy.api_key

अपने ओएस के अनुसार हरोकू क्लाइंट स्थापित करने के लिए निम्न ट्यूटोरियल देखें


मैं बस सत्यापित करना चाहता हूं: आपकी फ़ाइल में जो कुंजी जुड़ती है, वह संस्करण नियंत्रण पर अपलोड करने के लिए सुरक्षित है, है ना?
vapurrmaid

5

आप रिपॉजिटरी सेटिंग्स में गुप्त चर को भी परिभाषित कर सकते हैं :

रिपॉजिटरी सेटिंग्स में परिभाषित चर सभी बिल्ड के लिए समान हैं, और जब आप किसी पुराने बिल्ड को पुनरारंभ करते हैं, तो यह नवीनतम मानों का उपयोग करता है। ये चर स्वचालित रूप से कांटे के लिए उपलब्ध नहीं हैं।

रिपॉजिटरी सेटिंग्स में वैरिएबल को परिभाषित करें:

  • रिपॉजिटरी प्रति भिन्न।
  • संवेदनशील डेटा रखें, जैसे कि थर्ड-पार्टी क्रेडेंशियल।

रिपॉजिटरी सेटिंग्स में चर को परिभाषित करने के लिए, सुनिश्चित करें कि आप लॉग इन हैं, प्रश्न में रिपॉजिटरी में नेविगेट करें, कॉग मेनू से "सेटिंग" चुनें, और "पर्यावरण चर" अनुभाग में "नया वेरिएबल जोड़ें" पर क्लिक करें।


1
समझ में नहीं आया कि गुप्त चर कैसे बनाएं । जब googling, परिणाम समझाता है कि एन्क्रिप्ट कैसे करें।
XedinUnogn

@XedinUnogn यह गुप्त चर के लिए इस्तेमाल किया जा सकता है। लिंक से: "डिफ़ॉल्ट रूप से, इन नए पर्यावरण चर का मान लॉग में निर्यात लाइन से छिपा होता है। यह आपके .travis.yml में एन्क्रिप्टेड चर के व्यवहार से मेल खाता है। चर हमारे सिस्टम में एन्क्रिप्टेड संग्रहीत हैं, और बिल्ड स्क्रिप्ट उत्पन्न होने पर डिक्रिप्ट हो जाना। "
बामउपिन

0

एपीआई कुंजी के एक अलग सेट का उपयोग करें और इसे उसी तरह से करें। आपका ट्रैविस बॉक्स आपके बिल्ड रन के लिए सेटअप हो जाता है और फिर आपके निर्माण के समाप्त होने के बाद फिर से पूरी तरह से फट जाता है। बिल्ड के दौरान आपके पास आपके बॉक्स तक रूट पहुंच है, इसलिए आप इसके साथ जो चाहें कर सकते हैं।


4
क्या आप "यह उसी तरह करते हैं" से क्या मतलब है? मैं वास्तव में रेपो स्वयं (यानी .travis.yml फ़ाइल) में एपीआई कुंजी को संग्रहीत करने के विचार को पसंद नहीं करता, लेकिन ट्रैविस पर पर्यावरण चर को कॉन्फ़िगर करने का एक और तरीका नहीं लगता है।
BM5k

एनवी चर एक सार्वजनिक कुंजी के साथ एन्क्रिप्टेड हो जाएगा, इसलिए केवल गुप्त कुंजी का मालिक इसे डिक्रिप्ट कर सकता है। आपको एक महत्वपूर्ण टोकन का उपयोग नहीं करना चाहिए। मेरे मामले में मैंने GitHub के लिए पहले से ही एक ट्रैविस का उपयोग किया था। यह काफी अच्छी तरह से काम किया और जीथब के भीतर से मैं उस टोकन को रद्द कर सकता हूं जब भी मुझे लगता है कि ट्रैविस एक जोखिम है। मेरे रेपो डोंट में एन्क्रिप्टेड टोकन होने से मुझे नींद खराब होती है। github.com/ecki/GCViewer/blob/topic-ciupload/.travis.yml
Eckes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.