सुरक्षित तिजोरी के साथ अपने राज को सुरक्षित रखें

यह Ansible वॉल्ट ब्लॉग बताता है कि कैसे संवेदनशील डेटा (पासवर्ड / गुप्त कुंजी / प्रमाणित फ़ाइलें) एन्क्रिप्टेड फ़ाइलों में संग्रहीत और Ansible Playbooks में एम्बेडेड है।

प्रौद्योगिकी का अधिक उपयोग, सुरक्षा के लिए संभावित खतरा अधिक। एक विशिष्ट Ansible सेट आपको फीड-इन 'सीक्रेट्स' की आवश्यकता होती है। ये रहस्य वस्तुतः कुछ भी हो सकते हैं, पासवर्ड, एपीआई टोकन, एसएसएच सार्वजनिक या निजी कुंजी, एसएसएल प्रमाण पत्र, आदि। हम इन रहस्यों को कैसे सुरक्षित रखते हैं? Ansible एक सुविधा प्रदान करता है जिसे Ansible Vault कहते हैं।

इस ब्लॉग में, मैं प्रदर्शित करूंगा कि कैसे अंसिबल वॉल्ट का उपयोग किया जाए और डेटा को सुरक्षित रखने के लिए कुछ सर्वोत्तम प्रथाओं का पता लगाएं।





इस ब्लॉग में शामिल विषय:

यदि आप DevOps में महारत हासिल करना चाहते हैं, ' पाठ्यक्रम आपका विकल्प होगा।



अन्सिबल वॉल्ट क्या है?

कोड के रूप में बुनियादी ढाँचा रखने से दुनिया के लिए आपके संवेदनशील डेटा को उजागर करने का खतरा पैदा हो सकता है, जिससे अवांछित सुरक्षा मुद्दे हो सकते हैं। अन्सिबल वॉल्ट एक ऐसी सुविधा है जो आपको अपने सभी रहस्यों को सुरक्षित रखने की अनुमति देती है। यह संपूर्ण फ़ाइलों, पूरे YAML प्लेबुक या यहां तक ​​कि कुछ चर को भी एन्क्रिप्ट कर सकता है। यह एक ऐसी सुविधा प्रदान करता है जहाँ आप संवेदनशील डेटा को न केवल एन्क्रिप्ट कर सकते हैं बल्कि उन्हें अपनी प्लेबुक में भी एकीकृत कर सकते हैं।

वॉल्ट को फाइल-लेवल ग्रैन्युलैरिटी के साथ लागू किया जाता है, जहां फाइलें या तो पूरी तरह से एन्क्रिप्ट की जाती हैं या पूरी तरह से अनएन्क्रिप्टेड होती हैं। यह एन्क्रिप्ट करने के साथ-साथ फ़ाइलों को डिक्रिप्ट करने के लिए एक ही पासवर्ड का उपयोग करता है जो कि Ansible Vault को बहुत उपयोगकर्ता के अनुकूल बनाता है।

Ansible वॉल्ट का उपयोग क्यों करें?

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



मान लीजिए, हमारे पास एक प्लेबुक है जो आपके EC2 उदाहरण को AWS पर प्रदान करता है। आपको प्लेबुक में अपनी AWS एक्सेस कुंजी आईडी और AWS गुप्त कुंजी प्रदान करनी होगी। आप इन कुंजियों को स्पष्ट कारणों से दूसरों के साथ साझा नहीं करते हैं। आप उन्हें कैसे अप्रकाशित रखते हैं? दो तरीके हैं - या तो इन दो चर को एन्क्रिप्ट करें और उन्हें प्लेबुक में एम्बेड करें या पूरी प्लेबुक को एन्क्रिप्ट करें।

यह सिर्फ उस परिदृश्य में से एक था, जहां अनसुनी तिजोरी का उपयोग किया जा सकता है। हम या तो पूरी फाइलों को एन्क्रिप्ट कर सकते हैं या कुछ वैरिएबल को एन्क्रिप्ट कर सकते हैं जो संवेदनशील डेटा को होल्ड कर सकते हैं और फिर रनटाइम के दौरान Ansible स्वचालित रूप से उन्हें डिक्रिप्ट करता है। अब हम सुरक्षित रूप से GitHub को ये मान दे सकते हैं।

एन्क्रिप्टेड फ़ाइल बनाना

एक एन्क्रिप्टेड फ़ाइल बनाने के लिए, का उपयोग करें ansible- वॉल्ट बनाएं कमांड और फाइलनाम पास करें।

$ ansible-vault create filename.yaml

आपको एक पासवर्ड बनाने के लिए प्रेरित किया जाएगा और फिर उसे पुनः टाइप करके इसकी पुष्टि करें।

ansible vault create - Ansible Vault - Edureka

आपके पासवर्ड की पुष्टि हो जाने के बाद, एक नई फ़ाइल बनाई जाएगी और एक संपादन विंडो खुलेगी। डिफ़ॉल्ट रूप से, Ansible Vault का संपादक vi है। आप डेटा जोड़ सकते हैं, बचा सकते हैं और बाहर निकल सकते हैं।

और आपकी फाइल एन्क्रिप्टेड है

एन्क्रिप्टेड फ़ाइलें संपादित करना

यदि आप एक एन्क्रिप्टेड फ़ाइल को संपादित करना चाहते हैं, तो आप इसका उपयोग करके संपादित कर सकते हैं ansible-वॉल्ट एडिट आज्ञा।

$ ansible-वॉल्ट संपादित करें Secrets.txt

जहां mystery.txt पहले से ही बनाई गई, एन्क्रिप्टेड फ़ाइल है।

आपको तिजोरी का पासवर्ड डालने के लिए कहा जाएगा। फ़ाइल (डिक्रिप्टेड संस्करण) एक vi संपादक में खुल जाएगी और फिर आप आवश्यक परिवर्तन कर सकते हैं।

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

एन्क्रिप्टेड फ़ाइल देखना

यदि आप किसी एन्क्रिप्टेड फ़ाइल को देखना चाहते हैं, तो आप इसका उपयोग कर सकते हैं ansible-vault view आज्ञा।

$ एसिबल-वॉल्ट दृश्य फ़ाइल नाम

फिर से आपको पासवर्ड के लिए कहा जाएगा।

और आप समान आउटपुट देखेंगे।

रिगिंग वॉल्ट पासवर्ड

बेशक, कई बार आप वॉल्ट पासवर्ड बदलना चाहते हैं। आप उपयोग कर सकते हैं ansible-vault rekey आज्ञा।

$ एसिबल-वॉल्ट रीकी सीक्रेट्स.टेक्स्ट

आपको तिजोरी के वर्तमान पासवर्ड और फिर नए पासवर्ड के साथ संकेत दिया जाएगा और अंत में नए पासवर्ड की पुष्टि करके किया जाएगा।

अनएन्क्रिप्टेड फ़ाइलों को एन्क्रिप्ट करना

मान लें कि आपके पास एक फ़ाइल है जिसे आप एन्क्रिप्ट करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं ansible-वॉल्ट एनक्रिप्ट आज्ञा।

$ ansible-वॉल्ट एनक्रिप्ट filename.txt

आपको पासवर्ड डालने और पुष्टि करने के लिए कहा जाएगा और आपकी फ़ाइल एन्क्रिप्ट की गई है।

कैसे पथ में जावा जोड़ने के लिए - -

अब जब आप फ़ाइल सामग्री को देखते हैं, तो यह सब एन्क्रिप्टेड है।

एन्क्रिप्टेड फ़ाइलों को डिक्रिप्ट करना

यदि आप एक एन्क्रिप्टेड फ़ाइल को डिक्रिप्ट करना चाहते हैं, तो आप उपयोग कर सकते हैं ansible-वॉल्ट डिक्रिप्ट आज्ञा।

$ ansible-वॉल्ट डिक्रिप्ट फ़ाइलनाम। txt

हमेशा की तरह, यह आपको तिजोरी पासवर्ड डालने और पुष्टि करने के लिए संकेत देगा।

विशिष्ट चर को एन्क्रिप्ट करना

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

Ansible वॉल्ट आपको केवल विशिष्ट चर को एन्क्रिप्ट करने की अनुमति देता है। आप उपयोग कर सकते हैं ansible-वॉल्ट एन्क्रिप्ट_स्ट्रीमिंग इसके लिए कमान।

$ एसिबल-वॉल्ट एन्क्रिप्ट_स्ट्रीमिंग

आपको सम्मिलित करने के लिए संकेत दिया जाएगा और फिर तिजोरी पासवर्ड की पुष्टि करें। फिर आप उस स्ट्रिंग मान को डालना शुरू कर सकते हैं जिसे आप एन्क्रिप्ट करना चाहते हैं। इनपुट समाप्त करने के लिए ctrl-d दबाएं। अब आप इस एन्क्रिप्टेड को असाइन कर सकते हैंमानप्लेबुक में एक स्ट्रिंग के लिए।

आप एक ही लाइन में एक ही चीज हासिल कर सकते हैं।

$ ansible-वॉल्ट एनक्रिप्ट_स्ट्रिंग 'स्ट्रिंग' --name 'variable_name'

रनटाइम के दौरान एन्क्रिप्टेड फ़ाइलों को डिक्रिप्ट करना

यदि आप रनटाइम के दौरान किसी फ़ाइल को डिक्रिप्ट करना चाहते हैं, तो आप उपयोग कर सकते हैं -स्कूल-वॉल्ट-पास झंडा।

$ asible-playbook launch.yml --ask-वॉल्ट-पास

यह सभी एन्क्रिप्टेड फ़ाइलों को डिक्रिप्ट करेगा जो इस लॉन्च के लिए उपयोग किए जाते हैं। इसके अलावा, यह केवल तभी संभव है जब सभी फाइलें एक ही पासवर्ड से एन्क्रिप्ट की गई हों।

पासवर्ड प्रॉम्प्ट कष्टप्रद हो सकता है। स्वचालन का उद्देश्य व्यर्थ हो जाता है। हम इसे बेहतर कैसे बनाते हैं? Ansible में 'पासवर्ड फ़ाइल' नामक एक सुविधा होती है जो पासवर्ड वाली फ़ाइल का संदर्भ देती है। फिर आप इसे स्वचालित करने के लिए रनटाइम के दौरान इस पासवर्ड फ़ाइल को पास कर सकते हैं।

$ asible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

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

$ asible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

वॉल्ट आईडी का उपयोग करना

वॉल्ट आईडी एक विशेष वॉल्ट पासवर्ड को पहचानकर्ता प्रदान करने का एक तरीका है। वॉल्ट आईडी प्लेबुक के अंदर संदर्भित होने के लिए अलग-अलग पासवर्ड के साथ अलग-अलग फाइलों को एन्क्रिप्ट करने में मदद करती है। Ansible की यह विशेषता Ansible 2.4 की रिलीज़ के साथ सामने आई। इस रिलीज से पहले, प्रत्येक ansible playbook निष्पादन में केवल एक वॉल्ट पासवर्ड का उपयोग किया जा सकता था।

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

$ ansible-playbook - ऑल्ट-आईडी वॉल्ट-पास 1 --vault-id वॉल्ट-पास 2 filen.nl

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

यदि आप इस लेख को उपयोगी पाते हैं, तो देखें ' Edureka द्वारा की पेशकश की। इसमें उन सभी साधनों को शामिल किया गया है, जिन्होंने आईटी उद्योग को अधिक स्मार्ट बना दिया है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इसे पोस्ट करें और हम तुम्हारे पास लौट आएंगे।