लॉन्चर उत्पाद Bitnami दस्तावेज़imaxe CLI ब्लॉग संपर्क

सीक्रेट प्रबंधन: क्रेडेंशियल कभी AMI में बेक न करें

इमेज के भीतर रखा पासवर्ड होते हुए रिसाव है: वह कॉपी होता है, साझा होता है और हमेशा के लिए किसी स्नैपशॉट में बैठा रहता है। नियम सरल है और अपवाद नहीं मानता: सीक्रेट कभी इमेज में नहीं जाते। सही तरीक़ा यह है।

बैंक तिजोरी का बख़्तरबंद दरवाज़ा
बैंक तिजोरी का बख़्तरबंद दरवाज़ा फ़ोटो: Aldo Moisio · सार्वजनिक डोमेन · Wikimedia Commons

जब आप किसी क्रेडेंशियल को AMI में जड़ देते हैं, तो वह इमेज की हर प्रति के साथ फैलता है, स्नैपशॉट में उकेरा रह जाता है और ऐसे खातों या रीजनों तक पहुँच सकता है जिनकी आपने कल्पना भी नहीं की थी। बस इतना काफ़ी है कि इमेज पर पढ़ने की पहुँच रखने वाला कोई उसे निकाल ले। और चूँकि इमेज संस्करणों के हिसाब से सहेजी जाती हैं, वह सीक्रेट उस दिन के बहुत बाद तक ज़िंदा रह सकता है जब आपने उसे बदल दिया मान लिया था।

सुनहरा नियम: इमेज मशीन को परिभाषित करती है; सीक्रेट रनटाइम पर सौंपे जाते हैं

सीक्रेट कहाँ रहने चाहिए

सेवाक्लाउड या परिवेशकिसके लिए आदर्श
AWS Secrets ManagerAWSबदले जा सकने वाले क्रेडेंशियल, नेटिव एकीकरण
AWS SSM Parameter StoreAWSसरल पैरामीटर और सीक्रेट, कम लागत
HashiCorp Vaultमल्टीक्लाउडगतिशील सीक्रेट और सूक्ष्म नियंत्रण
Azure Key Vault / Google Secret ManagerAzure / GCPहर क्लाउड में नेटिव समकक्ष

सीक्रेट किसी समर्पित प्रबंधक में रखें, कभी इमेज में या साफ़ पाठ user-data में नहीं।

सही पैटर्न: पासवर्ड नहीं, पहचान

किसी इंस्टेंस को संसाधनों तक पहुँच देने का सबसे सुरक्षित तरीक़ा उसे पासवर्ड देना नहीं, बल्कि पहचान देना है। AWS में इंस्टेंस से जुड़ी IAM भूमिका उसे अस्थायी और स्वतः बदलने वाले क्रेडेंशियल दिलाती है, बिना किसी कुंजी को इमेज में ले जाए।

  • इंस्टेंस IAM भूमिकाएँ: इंस्टेंस भूमिका ग्रहण कर अस्थायी क्रेडेंशियल पाता है।
  • Kubernetes में IRSA: प्रति पॉड पहचान, नोड पर साझा कुंजियों के बिना।
  • Vault से गतिशील सीक्रेट: माँग पर बनने वाले अल्पजीवी क्रेडेंशियल।
  • रनटाइम इंजेक्शन: एप्लिकेशन आरंभ में सीक्रेट प्रबंधक से पढ़ता है, बेक की गई फ़ाइल से नहीं।

मेटाडेटा की रक्षा करें: IMDSv2

भूमिका के अस्थायी क्रेडेंशियल इंस्टेंस मेटाडेटा सेवा से मिलते हैं। SSRF दोष का लाभ उठाकर कोई हमलावर उन्हें चुराने की कोशिश कर सकता है। IMDSv2 सत्र टोकन माँगता है और इस श्रेणी के हमलों को घटाता है: अपने लॉन्च में इसे अनिवार्य कर दें।

स्वच्छता: इमेज में निशान न छोड़ें

  • AMI सील करने से पहले शेल इतिहास, क्रेडेंशियल वाले लॉग, अस्थायी SSH कुंजियाँ और सीक्रेट वाली कॉन्फ़िगरेशन फ़ाइलें मिटा दें
  • फ़ाइल सिस्टम के लिए अनुकूलित gitleaks या trufflehog जैसे औज़ारों से इमेज में सीक्रेट खोजें।
  • ~/.ssh/authorized_keys में अतिरिक्त अधिकृत कुंजियाँ न छोड़ें।
  • सीक्रेट वाली सार्वजनिक AMI से बचें: प्रकाशित करें तो जाँच लें कि कुछ लीक न हो।

त्वरित चेकलिस्ट

  • इमेज में शून्य बेक्ड सीक्रेट।
  • भूमिकाओं या फ़ेडरेटेड पहचान के साथ सीक्रेट प्रबंधक।
  • IMDSv2 अनिवार्य।
  • पाइपलाइन में सीक्रेट स्कैन।
  • सील करने से पहले निशानों की सफ़ाई।

अक्सर पूछे जाने वाले सवाल

अगर मेरे एप्लिकेशन को बूट पर ही सीक्रेट चाहिए तो?

वह इंस्टेंस की पहचान का उपयोग कर रनटाइम पर सीक्रेट प्रबंधक से पढ़े। इस तरह सीक्रेट कभी इमेज के भीतर नहीं जाता और बिना पुनर्निर्माण बदला जा सकता है।

क्या सीक्रेट भेजने के लिए user-data इस्तेमाल करना सुरक्षित है?

साफ़ पाठ में नहीं: user-data मेटाडेटा से पढ़ा जा सकता है। ज़्यादा से ज़्यादा इसका उपयोग यह बताने के लिए करें कि प्रबंधक से कौन-सा सीक्रेट लाना है, और मेटाडेटा को IMDSv2 से बचाएँ।

कैसे पता करूँ कि किसी इमेज में पहले से बेक्ड सीक्रेट हैं?

उसके फ़ाइल सिस्टम पर सीक्रेट पहचान औज़ारों से स्कैन करके, और उपयोग से पहले कॉन्फ़िगरेशन फ़ाइलें, इतिहास और अधिकृत कुंजियाँ जाँचकर।

imaxe.cloud में हम क्रेडेंशियल से मुक्त इमेज बनाते हैं, जो सीक्रेट प्रबंधकों और फ़ेडरेटेड पहचान के साथ जुड़ने के लिए सोची गई हैं।

सीक्रेटvaultiamimdsv2secrets manager
IM

imaxe टीम

हम सूची की AMIs बनाते और अनुरक्षित करते हैं। जब हम कोई संस्करण प्रकाशित करते हैं, तो हम इसे किसी से भी पहले उत्पादन में उपयोग करते हैं।

कैटलॉग से

इस लेख से संबंधित AMI

पढ़ना जारी रखें

संबंधित लेख