जहाँ पर ansible-vault पासवर्ड डालना है


26

हम git में पासवर्ड या कुंजियाँ लीक करने से रोकने के लिए अपनी परियोजना में ansible वॉल्ट का उपयोग करने की योजना बना रहे हैं।

विचार यह है कि हमारे सभी संवेदनशील डेटा को एक सादा फ़ाइल में डाल दिया जाए और फिर इस फ़ाइल को git में धकेलने से पहले पासवर्ड का उपयोग करके ansible-वॉल्ट के साथ एन्क्रिप्ट करें।

फ़ाइल को डिक्रिप्ट करने के लिए, हमें वॉल्ट पासवर्ड को ansible में पास करना होगा, मैं 3 संभावनाओं के बारे में सोच रहा हूं:

  • इसे सर्वर एनवायरमेंट वेरिएबल के अंदर स्टोर करें
  • इसे ansible-playbook कमांड के विकल्प के रूप में पास करें
  • इसे एक गैर संस्करण फ़ाइल में संग्रहीत करें।

क्या कोई अन्य विकल्प है, जो कि एसिसेबल-वॉल्ट पासवर्ड को स्टोर करने का सबसे अच्छा (और सुरक्षित) तरीका है, इस पर बेस्ट से प्रैक्टिस डॉक्यूमेंटेशन कुछ भी नहीं कह रहा है।


बहुत ही प्रासंगिक बात: danielsomerfield.github.io/turtles
Xiong Chiamiov

यहाँ कुछ अच्छे उत्तर हैं: devops.stackexchange.com/questions/3806/…
Vish

जवाबों:


13

विचार यह है कि हमारे सभी संवेदनशील डेटा [...]

इस वाक्य में "सभी" का अर्थ उस योजना को लागू करने से पहले बहुत सावधानी से विश्लेषण किया जाना चाहिए।

Ansible वॉल्ट एक बहुत ही उपयोगी उपकरण है, लेकिन इसका उपयोग केवल उन रहस्यों को संग्रहीत करने के लिए किया जाना चाहिए जो हैं:

  1. विशेष रूप से ansible परिनियोजन के लिए आवश्यक है
  2. आसानी से मालिकों के लिए बेकार बना दिया जाना चाहिए जो उनके बारे में अनभिज्ञ हों, लेकिन यह नाजायज रूप से उन्हें "याद" कर सकता है (आमतौर पर ऑफ-बोर्ड किए गए कर्मचारी)

दूसरा बिंदु महत्वपूर्ण है।

बहुत से लोग, और संभावित रूप से पूरी DevOps टीम, के पास पहुंच योग्य वॉल्ट पासवर्ड और इसलिए सभी रहस्य होंगे।

इसलिए, तिजोरी में संग्रहीत सभी रहस्यों के लिए, एक शर्त होनी चाहिए जिसके लिए किसी व्यक्ति या मशीन के पास अनधिकृत पहुंच हो, यदि वह वांछित है, तो उनका कोई उपयोग करने में असमर्थ होना चाहिए।

ठोस शब्दों में, यदि आप डेटाबेस और उसके उपयोगकर्ताओं को तैनात करने के लिए ansible का उपयोग करते हैं, तो आप पासवर्ड को तिजोरी में स्टोर कर सकते हैं, लेकिन आपको बहुत सावधानी बरतनी होगी (और सबसे अधिक संभावना एक अन्य समाधान पर विचार करें) यदि वह सेवा इंटरनेट से उपलब्ध होगी। और किसी भी वीपीएन प्रमाणीकरण की आवश्यकता के बिना!

उपयोगकर्ता (DevOps) गुप्त के संपर्क में, "याद रहे" पासवर्ड का उपयोग करने में असमर्थ होना चाहिए, यदि एक सुरक्षा अवरोधक उन पर लगाया जाता है (उदाहरण के लिए, वीपीएन एक्सेस निरस्त)। इसके अलावा, स्रोत कोड रिपॉजिटरी (जहां वॉल्ट संग्रहीत है) तक पहुंच को पासवर्ड बदलने से पहले ही रद्द कर दिया जाना चाहिए।

इन शर्तों के तहत, एसिबल वॉल्ट एक बहुत ही उपयोगी उपकरण है।

तिजोरी में इंटरनेट पर किसी भी व्यक्ति या मशीन द्वारा उपयोग किए जा सकने वाले रहस्य को संग्रहीत करने की कोशिश एक गलती के बजाय होगी (उदाहरण के लिए, उपयोगकर्ताओं के वीपीएन क्रेडेंशियल)।

क्या कोई अन्य विकल्प है, जो ansible-वॉल्ट पासवर्ड को स्टोर करने का सबसे अच्छा (और सुरक्षित) तरीका है

पिछले पैराग्राफ से शर्तों के तहत, मुझे लगता है कि एक अच्छा अभ्यास होगा:

  1. तिजोरी का पासवर्ड किसी बाहरी सुरक्षित तिजोरी ( HashiCorp की तिजोरी या क्रेडेंशियल मैनेजमेंट के लिए कोई सास) से संग्रहीत करें
  2. DevOps को बाहरी तिजोरी आइटम तक पहुँचने की अनुमति दें (उन्हें परीक्षण के लिए पासवर्ड की आवश्यकता होगी) और CI / CD सिस्टम या ansible custom
  3. रहस्यों का उपयोग करने के लिए एक सम्मेलन रखें ! आप रहस्यों में परिवर्तन की समीक्षा नहीं कर पाएंगे और आप रहस्यों की फाइलों में मौजूद चरों के लिए जीआरपी नहीं बना पाएंगे! इसलिए शुरुआत से ही पूरी तरह से तैयार रहें। एक अच्छा सम्मेलन एक secret_उपसर्ग के साथ ansible वॉल्ट में संग्रहीत सभी चर का नाम है । जब आप कुछ इस तरह देखेंगे:

    postgres.yml:

    postgres_password: "{{ secret_postgres_password }}"
    

    आपको पता चल जाएगा कि मूल्य को अनजान तिजोरी में रखा गया है।


1
अन्सिबल वॉल्ट पासवर्ड को कहीं अधिक सुरक्षित रखने के बारे में अच्छी बात (HashiCorp वॉल्ट या सास वॉल्ट जैसे एडब्ल्यूएस सीक्रेट मैनेजर)। हालाँकि, इसे अभी भी घुमाया जाना (बदला हुआ) है अगर कोई टीम को छोड़ देता है, क्योंकि उन्हें इसके लिए उपयोग करना पड़ता है, भले ही संक्षेप में। यह शायद अलग-अलग वाल्टों (देव, परीक्षण, उत्पादन) के उपयोग से कम किया जा सकता है, यमलोक में रहस्य फाइलें। २.४ से २४+ की मदद से आप a वॉल्ट आईडी ’का उपयोग करके ऐसी फ़ाइलों के लिए अलग-अलग पासवर्ड निर्दिष्ट कर सकते हैं - डॉक्स पेज
रिचडेल

1
अंसिबल 2.3 ने एक ऐसी सुविधा शुरू की, जो कि पूरी फाइल में नहीं बल्कि YAML फाइलों में मूल्यों को कूटबद्ध करती है - इस उत्तर के अंत में बिंदु 3 में आपके द्वारा उल्लिखित पुराने अधिवेशन की तुलना में इसे बनाए रखना सरल है।
रिचवेल

7

हम git में पासवर्ड या कुंजियाँ लीक करने से रोकने के लिए अपनी परियोजना में ansible वॉल्ट का उपयोग करने की योजना बना रहे हैं।

चूंकि आपने अभी तक कुछ भी लागू नहीं किया है, इसलिए आप इस पर पुनर्विचार कर सकते हैं। एक सिस्टम का उपयोग करना जैसे Ansible वॉल्ट में कई सिक्योरिटी डाउनसाइड हैं:

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

संभावित रूप से बहुत अधिक सुरक्षित, यद्यपि अधिक जटिल, सिस्टम जिसमें ये डाउनसाइड नहीं हैं, अपने रहस्यों को संग्रहीत करने के लिए हैशिकॉर्प वॉल्ट का उपयोग करना है। तब आप इसे लगभग आसानी से मान सकते हैं, जितनी आसानी से https://github.com/jhaals/ansible-vault का उपयोग करके Ansible वॉल्ट से ।

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

अब, यदि कोई सीक्रेट सर्वर स्थापित करना और प्रशासित करना आपके लिए बहुत अधिक है, तो निश्चित रूप से आप सिर्फ अन्सिबल वॉल्ट का उपयोग कर सकते हैं। हालांकि सभी व्यक्तिगत मशीनों पर पासवर्ड क्यों स्टोर करें? इंटरैक्टिव उपयोग के लिए, आप पासवर्ड के लिए बस संकेत दे सकते हैं, और उपयोगकर्ता इसे अपनी पसंद के पासवर्ड प्रबंधक में संग्रहीत कर सकते हैं। ओएस एक्स पर iTerm में एक पासवर्ड मैनेजर है जो Keychain.app के साथ एकीकृत होता है जो इसे विशेष रूप से वहां आसान बनाता है।


2
Ansible वॉल्ट का उपयोग करने का सबसे अच्छा तरीका इसका उपयोग नहीं करना है .. जो आपको इंगित करने के लिए धन्यवाद!
तूफान

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

3

यह काफी हद तक जाता है कि संवेदनशील डेटा को संभालने के लिए आपके पास कौन सी आंतरिक नीतियां हैं।

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

export ANSIBLE_VAULT_PASSWORD_FILE=/deep/dark/place

मेरे पास मेरे कार्य केंद्र पर है (जैसा कि मुझे प्लेबुक का परीक्षण करने और विकसित करने की आवश्यकता है), कुछ सहयोगियों के पास यह भी है, और निश्चित रूप से हमारे पास यह मुख्य Ansible नियंत्रण मशीन पर है।

पेशेवरों:

  • साझा स्थान / रिपॉजिटरी में नहीं (यह एक गैर संस्करण फ़ाइल है जैसा आप कहते हैं)
  • किसी को प्ले चलाने के लिए आपके ऐंसीबल वॉल्ट पासवर्ड को जानने की जरूरत नहीं है (यह इस शर्त के तहत है कि आपके पास CI टूल है, जैसे जेनकिंस, जहां आप आसानी से प्लेबुक लॉन्च कर सकते हैं)

विपक्ष:

  • पासवर्ड को घुमाना आसान नहीं है
  • हर कोई जो आपकी प्लेबुक पर काम करता है, उसे अपने वर्कस्टेशन पर होना चाहिए

विपक्ष के पास शमन है, लेकिन फिर से यह उन नीतियों और नियमों पर निर्भर करता है जिन्हें आपने दिन-प्रतिदिन के कार्यों में अपनाया है।


1
अच्छा कॉम्बिनासन .. अन्य उत्तर की जाँच करें, हालांकि यह आपके लिए रुचि का हो सकता है।
तूफान

0

इस परियोजना पर एक नज़र रखने के लिए अपने ansible वॉल्ट एन्क्रिप्टिंग पासवर्ड का प्रबंधन https://github.com/Smile-SA/ansible-vault-manager

यह प्लगइन्स के साथ कई कीरिंग स्टोरेज प्लेटफॉर्म को संभालता है (अब केवल AWS SSM लागू है)। एक मौजूदा Ansible परियोजना के साथ Morehover एकीकरण बहुत आसान है ...


यदि आप कुछ सामान्य जोड़ने के बजाय आसान को और अधिक ठोस बनाने में मदद करेंगे। मैंने गितुब पृष्ठ की README को पढ़ा है, लेकिन क्या आप इसका उत्तर बदल सकते हैं ताकि इसका एक स्पष्ट उदाहरण हो? मै इसे इस्तेमाल करना चाहता हू।
030
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.