2008-08-29 24 views
6

जिस सिस्टम पर मैं वर्तमान में काम कर रहा हूं उसे कुछ भूमिका-आधारित सुरक्षा की आवश्यकता है, जिसे जावा ईई स्टैक में अच्छी तरह से तैयार किया गया है। यह प्रणाली व्यवसाय डोमेन विशेषज्ञों के लिए अपना कोड लिखने के लिए एक ढांचा बनने का इरादा रखती है।जावा और हाइबरनेट के साथ डेटा 'सुरक्षा'

हालांकि, डेटा security के लिए भी एक आवश्यकता है। यही है, अंतिम उपयोगकर्ता को कौन सी जानकारी दिखाई दे रही है।

इसका प्रभावी ढंग से डेटाबेस में पंक्तियों (और शायद यहां तक ​​कि कॉलम) की दृश्यता को कम करने का अर्थ है।

हम अपने दृढ़ता के लिए हाइबरनेट का उपयोग कर रहे हैं। हालांकि, हम अपने स्वयं के एनोटेशन का उपयोग कर रहे हैं ताकि व्यापार डोमेन विशेषज्ञों को हमारी दृढ़ता विकल्प का खुलासा न किया जा सके।

पंक्ति आधारित सुरक्षा के लिए इसका मतलब है कि हम इकाई स्तर पर @Secured जैसे एनोटेशन जोड़ सकते हैं, जिससे हमारे चयन को बाधित करने के लिए अंतर्निहित तालिका में अतिरिक्त कॉलम जोड़ा जा सकता है?

कॉलम आधारित सुरक्षा के लिए, शायद हमारे पास @Secured हो सकता है या तो क्वेरी पीढ़ी में सहायता के लिए, या शायद वापस लौटाई गई जानकारी को फ़िल्टर करने के लिए एक पहलू का उपयोग करें?

मुझे यह जानकर उत्सुकता है कि यह हाइबरनेट के कैशिंग तंत्र को कैसे प्रभावित कर सकता है?

मुझे यकीन है कि बहुत से अन्य लोगों के पास एक ही समस्या होगी, और मैं सोच रहा था कि आपने यह कैसे संपर्क किया?

बहुत सराहना की ...

उत्तर

6

हाइबरनेट एक filter mechanism है कि आप के लिए काम कर सकते हैं नहीं है। फिल्टर वापस आने वाली पंक्तियों को सीमित करने के लिए अतिरिक्त खंड शामिल करने के लिए उत्पन्न हाइबरनेट उत्पन्न क्वेरी को फिर से लिखेंगे। मुझे स्तंभों को मुखौटा/छिपाने के लिए हाइबरनेट में कुछ भी पता नहीं है।

आपके डेटाबेस में इस कार्यक्षमता के लिए भी समर्थन हो सकता है। ओरेकल, उदाहरण के लिए, Virtual Private Database (वीपीडी) है जो डेटाबेस स्तर पर आपके प्रश्नों को फिर से लिख देगा। इस समाधान में अतिरिक्त लाभ है कि आपके डीबी के खिलाफ जाने वाले किसी भी बाहरी प्रोग्राम (जैसे रिपोर्टिंग टूल) आपके सुरक्षा प्रतिबंध लागू होंगे। वीपीडी को एनयूएलएस के साथ प्रतिबंधित कॉलम मास्क करने का भी समर्थन है।

दुर्भाग्यवश, उपर्युक्त समाधान उन प्रकार की परियोजनाओं के लिए सुरक्षा आवश्यकताओं का समर्थन करने के लिए पर्याप्त नहीं हैं जो मैं आम तौर पर काम करता हूं। आमतौर पर कुछ प्रकार के संदर्भ होते हैं जिन्हें उपर्युक्त समाधानों में आसानी से व्यक्त नहीं किया जा सकता है। उदाहरण के लिए, उपयोगकर्ता उनके द्वारा बनाए गए डेटा को देख सकते हैं, या जिन्हें सार्वजनिक के रूप में चिह्नित किया गया है, या वे जो प्रोजेक्ट प्रबंधित करते हैं उससे संबंधित हैं।

हम आम तौर पर क्वेरी/खोजक/डीएओ ऑब्जेक्ट्स बनाते हैं जहां हम सुरक्षा को लागू करने के लिए आवश्यक मानों में गुजरते हैं और फिर तदनुसार क्वेरी बनाते हैं।

मुझे आशा है कि इस मदद करता है

1

हाइबरनेट फिल्टर आपको लगता है कि अतिरिक्त प्रतिबंध load() या get() तरीकों से generted SQL कथन को लागू नहीं किया जाएगा पता होना चाहिए का उपयोग करते समय।

संबंधित मुद्दे