हमारे पास जावा वेब एप्लिकेशन जेबॉस और लिनक्स पर चल रहा है। उत्पादन पर्यावरण डेटाबेस कनेक्शन पैरामीटर एक विन्यास फाइल से आते हैं जो केवल उत्पादन पर्यावरण ऐप सर्वर पर मौजूद है। वह कॉन्फ़िगरेशन फ़ाइल केवल उपयोगकर्ता आईडी द्वारा पठनीय है जो एप्लिकेशन को भी चलाती है, (चलो उस उपयोगकर्ता एप्यूज़र को कॉल करें) और केवल वे लोग जो उत्पादन पर्यावरण सर्वर में लॉग इन कर सकते हैं और अपुशर के लिए सूडो हमारी ऑपरेशंस टीम के सदस्य हैं। उत्पादन पर्यावरण स्वयं अन्य सभी वातावरण से बंद हो गया है।उत्पादन वातावरण में पासवर्ड सुरक्षित करना
हम इसे और अधिक सुरक्षित बनाना चाहते हैं। विशेष रूप से हम ऑपरेशन टीम को डेटाबेस कनेक्शन पासवर्ड और अन्य कुंजियों को पढ़ने से रोकना चाहते हैं जो वर्तमान में कॉन्फ़िगरेशन फ़ाइल में हैं।
ध्यान रखने योग्य एक और कारक यह है कि ऑपरेशन टीम आवेदन के निर्माण और तैनाती के लिए ज़िम्मेदार है।
हमारे विकल्प क्या हैं? समाधान को मैन्युअल रूप से पुनरारंभ करने के साथ-साथ ओएस रीबूट होने पर एप्लिकेशन को स्वचालित रूप से प्रारंभ करने का समर्थन करने की आवश्यकता होती है।
अद्यतन
समाधान मैं अब की जांच कर रहा हूँ (उनके सुझाव, जो मोटे तौर चरण 1 में तब्दील हो के लिए अदाम्सकी को टिप):
एक आवरण निष्पादन योग्य है कि एक उपयोगकर्ता के लिए
setuid
है लिखें जो अनुप्रयोगों को शुरू/बंद करता है और जेबॉस निर्देशिका पेड़ में कॉन्फ़िगरेशन फ़ाइलों और सब कुछ का मालिक है।निर्माण के बाद WAR पर हस्ताक्षर करने के लिए
jarsigner
का उपयोग करें। युद्ध की इमारत विकास द्वारा की जाएगी।setuid
रैपर हस्ताक्षर की पुष्टि करेगा, यह सत्यापित करता है कि युद्ध को छेड़छाड़ नहीं किया गया है।केवल हस्ताक्षरित WAR को तैनात करने के लिए तैनाती प्रक्रिया बदलें।
setuid
रैपर भी JBoss तैनाती निर्देशिका में WAR को स्थानांतरित कर सकता है।http://wiki.eclipse.org/Jetty/Howto/Secure_Passwords
यह कम से कम सुनिश्चित करता है कि आप न सिर्फ सीधे पासवर्ड पढ़ा लेकिन कुछ गंभीर प्रयास करने की जरूरत है सकते हैं:
नोट: किसी भी हस्ताक्षर करने के केवल यदि आप एक वास्तविक प्रमाण पत्र और नहीं एक selfsigned एक का उपयोग समझ में आता है। इसके अतिरिक्त JVM अभी भी छेड़छाड़ की जा सकती है। –
ठीक है, JDK स्थापित है, साथ ही लॉक करने की आवश्यकता होगी विशेष रूप से 'cacerts' dir। – sourcedelica