IRI ब्लॉग के पिछले लेखों में अनुसूचित IRI फील्डशील्ड जॉब स्क्रिप्ट में /INCLUDE लॉजिक या /QUERY सिंटैक्स का उपयोग करके नए डेटाबेस डेटा के स्टेटिक डेटा मास्किंग का विवरण दिया गया है, जिसमें अपडेट का पता लगाने के लिए कॉलम मानों में बदलाव की आवश्यकता होती है। यह आलेख SQL ईवेंट के आधार पर फ़ील्डशील्ड मास्किंग फ़ंक्शन को ट्रिगर करने के लिए एक अधिक निष्क्रिय लेकिन एकीकृत तरीके का वर्णन करता है; दूसरे शब्दों में, डेटा को वास्तविक समय में बनाए जाने पर छिपाने के लिए।
अधिक विशेष रूप से, यह आलेख विंडोज़ पर Oracle 12c में PII को मास्क करने के लिए फ़ील्डशील्ड डेटा मास्किंग लाइब्रेरी फ़ंक्शन को कॉल करने वाली संग्रहीत कार्यविधियों की स्थापना और उपयोग का दस्तावेज़ करता है। यह अन्य डेटाबेस और ऑपरेटिंग सिस्टम के लिए एक 'प्रक्रिया मॉडल' के रूप में भी काम कर सकता है।
न्यूनतम आवश्यकताएं
- Oracle डेटाबेस का एक संस्करण जो JVM-सक्षम है
- Oracle सर्वर /बिन सिस्टम PATH में होना चाहिए
- IRI फील्डशील्ड और इसकी सैंडकी सॉफ्टवेयर डेवलपमेंट किट की लाइसेंस प्राप्त प्रति
- ओरेकल जावा जेआरई 8
- माइक्रोसॉफ्ट .NET v4.8 फ्रेमवर्क
इंस्टॉलेशन
एक बार जब आपके पास sandkey.zip फ़ोल्डर हो, तो sandkey.jar . निकालें और sandkeyFunctions.jar फ़ाइलें, और libsandkey.dll फ़ाइल जो आपके ऑपरेटिंग सिस्टम से मेल खाती है। libsandkey.dll फ़ाइल .zip फ़ाइल के रूट फ़ोल्डर में है
आपके पास फ़ाइलें होने के बाद इन चरणों का पालन करें:
- एक कमांड प्रॉम्प्ट खोलें, जहां फाइलें स्थित हैं, वहां नेविगेट करें, और इन आदेशों को इस प्रारूप में दर्ज करें:
loadjava -r -u <username>/<password>@<database> <filename>
यदि ऐसा करते समय आपको CREATE$java$LOB$TABLE से संबंधित कोई त्रुटि मिलती है, तो आपके पास अपर्याप्त विशेषाधिकार होने की संभावना है और सिस्टम के रूप में एक बार कमांड चलाने की आवश्यकता हो सकती है।
- libsandkey.dll रखें फ़ाइल बिन . में Oracle सर्वर का फ़ोल्डर। वैकल्पिक रूप से, फ़ाइल के स्थान को सिस्टम पथ में जोड़ें।
- एसक्यूएल*प्लस, या इसी तरह के प्रोग्राम का उपयोग करके सिस्टम के रूप में डेटाबेस से कनेक्ट करें, और निम्न क्वेरी दर्ज करें:
select seq, kind, grantee, name, enabled from dba_java_policy where name like ‘%java.lang.RuntimePermission%’;
"java.lang.RuntimePermission#loadLibrary.*" लेबल वाली नीति खोजें। इस मामले में, यह संख्या 99 है। डेटाबेस में सैंडकी उपयोगकर्ता को अनुमति देने के लिए इस नीति को अस्थायी रूप से अक्षम करने की आवश्यकता है।
- अब जबकि पॉलिसी नंबर ज्ञात हो गया है, पॉलिसी को अक्षम करने के लिए निम्नलिखित कमांड जारी करें, उपयोगकर्ता को अनुमति दें, और फिर पॉलिसी को फिर से सक्षम करें:
exec dbms_java.disable_permission(99); exec dbms_java.grant_permission( ‘IRIDEMO’, ‘SYS:java.lang.RuntimePermission’, ‘loadLibrary.libsandkey’, ‘’ ); exec dbms_java.enable_permission(99);
सुनिश्चित करें कि उपयोगकर्ता नाम पूरी तरह से कैपिटल में दिखाया गया है, या सिस्टम इसे पहचान नहीं पाएगा।
- एसक्यूएल*प्लस में स्क्रिप्ट चलाकर या इन आदेशों को मैन्युअल रूप से इनपुट करके निम्न फ़ंक्शन बनाएं:
CREATE FUNCTION enc_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.encaes256(java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION enc_fp_ascii (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.encfpascii(java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION enc_fp_alphanum (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.encfpalphanum(java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION dec_aes256 (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.decaes256(java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION dec_fp_ascii (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.decfpascii(java.lang.String, java.lang.String) return java.lang.String'; / CREATE FUNCTION dec_fp_alphanum (input VARCHAR2, pass VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'sandkeyFunctions.Functions.decfpalphanum(java.lang.String, java.lang.String) return java.lang.String'; /
- अब आप सैंडकी एन्क्रिप्शन और डिक्रिप्शन फ़ंक्शंस का उपयोग करके संग्रहीत कार्यविधियाँ या ट्रिगर बना सकते हैं, जो IRI FieldShield, IRI DarkShield, और IRI CellShield के उपयोगिता संस्करणों में समान स्थिर डेटा एन्क्रिप्शन फ़ंक्शन के साथ संगत हैं।
केस का उपयोग करें:PL/SQL ट्रिगर
यहां एक उदाहरण दिया गया है जो डेटा को स्वचालित रूप से एन्क्रिप्ट करने के लिए सैंडकी एन्क्रिप्शन फ़ंक्शन का उपयोग करता है क्योंकि इसे कर्मचारी तालिका में डाला जाता है:
यह ट्रिगर नए कर्मचारी के LAST_NAME को एन्क्रिप्ट करने के लिए enc_fp_ascii (एएससीआईआई प्रारूप एन्क्रिप्शन को संरक्षित करने) फ़ंक्शन का उपयोग करता है, और प्रत्येक सम्मिलित पंक्ति में नए कर्मचारी के PHONE_NUMBER को एन्क्रिप्ट करने के लिए enc_fp_alphanum फ़ंक्शन का उपयोग करता है।
डेटा डालने से पहले, ट्रिगर नए डेटा को इनपुट . के रूप में पास करता है , और पासवर्ड (एन्क्रिप्शन कुंजी मान) पास . के रूप में , सैंडकी एन्क्रिप्शन फ़ंक्शन में। फ़ंक्शन प्रत्येक मान का सिफरटेक्स्ट परिणाम आउटपुट . के रूप में देता है नई पंक्ति में।
इस उदाहरण में, तालिका में पांच नई पंक्तियों को सम्मिलित करते समय, ध्यान दें कि ऊपर वर्णित कार्यों के साथ LAST_NAME और PHONE_NUMBER कॉलम कैसे एन्क्रिप्ट किए गए थे।
वास्तव में, एक बार स्थापित होने के बाद, सैंडकी मास्किंग फ़ंक्शन का उपयोग पीएल/एसक्यूएल की क्षमताओं के भीतर वांछित किसी भी तरह से किया जा सकता है ताकि अधिक "डायनेमिक" इवेंट ड्राइव डेटा मास्किंग आवश्यकताओं का समर्थन किया जा सके।
अपने डेटाबेस वातावरण में इस दृष्टिकोण के साथ मदद के लिए संपर्क करें।
केस का उपयोग करें:डिक्रिप्टेड व्यू
यह उदाहरण कर्मचारी तालिका के आधार पर एक डिक्रिप्टेड दृश्य के निर्माण को दर्शाता है।
डिक्रिप्टेड दृश्य उसी तरह बनाया जाता है जैसे कोई भी दृश्य कैसे बनाया जाएगा, डेटा कॉलम को कैसे कहा जाता है, इसके अपवाद के साथ। अलग-अलग स्तंभों को उनके संगत कार्यों का उपयोग करके निम्न प्रारूप में डिक्रिप्ट किया जाता है:
<functionName>(<columnName>, ‘<password/key>’) <displayName>
डिक्रिप्टेड दृश्य का निर्माण नामित उपयोगकर्ताओं को दृश्य से डेटा क्वेरी करने की अनुमति देता है, जबकि कर्मचारी तालिका में वास्तविक डेटा को एन्क्रिप्टेड रहने की अनुमति देता है। नीचे एक छवि है कि पूछे जाने पर दृश्य कैसा दिखाई देगा।
सैंडकी और ओरेकल का एकीकरण स्वचालित एन्क्रिप्शन ट्रिगर, डिक्रिप्टेड दृश्य, या कस्टम संग्रहीत प्रक्रियाओं के माध्यम से आपके डेटा की सुरक्षा पर अधिक नियंत्रण की अनुमति देता है। आम तौर पर, फील्डशील्ड मास्किंग रूटीन और पीएल/एसक्यूएल जैसी प्रक्रियाओं का उपयोग करके, अब आप विभिन्न उपयोग मामलों के लिए रीयल-टाइम डेटाबेस ईवेंट के आधार पर संवेदनशील डेटा को मास्क कर सकते हैं।