निश्चित रूप से यह एक चिंता का विषय है। Dockerfiles को सामान्यतः रिपॉजिटरी में चेक किया जाता है और अन्य लोगों के साथ साझा किया जाता है। एक विकल्प है कि किसी भी क्रेडेंशियल (उपयोगकर्ता नाम, पासवर्ड, टोकन, कुछ भी संवेदनशील) को रनवे पर पर्यावरण चर के रूप में प्रदान किया जाए । यह -e
तर्क (सीएलआई पर अलग-अलग संस्करणों के लिए) या --env-file
तर्क (एक फ़ाइल में कई चर के लिए ) के माध्यम से संभव है docker run
। डॉकटर-कम्पोज़ के साथ पर्यावरण का उपयोग करने के लिए इसे पढ़ें ।
यदि --env-file
निश्चित रूप से कोई उपयोग करता है ps
या लॉग में दिखाई दे रहा है, तो इससे बचाव के लिए यह निश्चित रूप से सुरक्षित विकल्प है set -x
।
हालाँकि, env var विशेष रूप से सुरक्षित नहीं हैं। वे के माध्यम से दिखाई दे रहे हैं docker inspect
, और इसलिए वे किसी भी उपयोगकर्ता के लिए उपलब्ध हैं जो docker
कमांड चला सकते हैं । (बेशक, किसी भी उपयोगकर्ता जो docker
होस्ट पर एक्सेस करता है, वैसे भी रूट होता है।)
मेरा पसंदीदा पैटर्न एक आवरण स्क्रिप्ट का उपयोग करना है ENTRYPOINT
या CMD
। आवरण स्क्रिप्ट पहले किसी बाहरी स्थान से गुप्त समय में कंटेनर में आयात कर सकती है, फिर आवेदन निष्पादित करती है, रहस्य प्रदान करती है। इसके सटीक मैकेनिक्स आपके रन टाइम वातावरण के आधार पर भिन्न होते हैं। AWS में, आप SAM बाल्टी में एन्क्रिप्ट किए गए रहस्यों को संग्रहीत करने के लिए IAM भूमिकाओं, प्रमुख प्रबंधन सेवा और S3 के संयोजन का उपयोग कर सकते हैं । की तरह कुछ HashiCorp वॉल्ट या credstash एक और विकल्प है।
AFAIK निर्माण प्रक्रिया के हिस्से के रूप में संवेदनशील डेटा का उपयोग करने के लिए कोई इष्टतम पैटर्न नहीं है। वास्तव में, मेरे पास इस विषय पर एक एसओ प्रश्न है । आप एक छवि से परतों को हटाने के लिए डॉकटर-स्क्वैश का उपयोग कर सकते हैं । लेकिन इस उद्देश्य के लिए डॉकर में कोई मूल कार्यक्षमता नहीं है।
आप कंटेनर में विन्यास पर शर्मीली टिप्पणी उपयोगी पा सकते हैं ।