Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle 12c मूल्यों द्वारा पहचाना गया

चूंकि मैं ओरेकल के साथ काम करते हुए अपने करियर में याद कर सकता हूं, इसलिए मैं उपयोगकर्ता के पासवर्ड को पासवर्ड हैश में संशोधित करने में सक्षम हूं। मैंने कभी-कभी जो तरकीब अपनाई है, वह थी यूजर आईडी / पासवर्ड हैश को स्टोर करना, पासवर्ड को किसी ऐसी चीज में बदलना, जिसे मैं जानता हूं, उस यूजर के रूप में डेटाबेस से कनेक्ट करें और फिर अपना काम करें। जब मेरा काम पूरा हो जाए, तो पासवर्ड को वापस उसी पर सेट करें जो निम्न के जैसा था:

'asdf1234%^&*qwerty' मानों से पहचाने जाने वाले उपयोगकर्ता बॉब को बदलें;

जब तक मुझे पता था कि हैश मान था, तब तक इसे वापस सेट करने के लिए मुझे उपयोगकर्ता के पासवर्ड को जानने की आवश्यकता नहीं थी। कल मुझे कुछ जानकारी मिली जहां 12c में इस तरह से पासवर्ड सेट करने का प्रयास करते समय लोगों को निम्न त्रुटि प्राप्त हो रही थी:

ORA-02153:अमान्य VALUES पासवर्ड स्ट्रिंग

यदि आप My Oracle सपोर्ट में इस त्रुटि को देखते हैं, तो आप नोट 2096579.1 पर सबसे अधिक संभावना है। उस नोट में, यह बताता है कि यह विधि अब संभव नहीं है। यह कहता है "यह 12c में नई कार्यक्षमता है जो उपयोगकर्ताओं को सही तरीके से बनाने के लिए बाध्य करती है"। लेकिन मैंने पाया है कि यह बिल्कुल सच नहीं है।

Oracle 12c ने उपयोगकर्ता आईडी/पासवर्ड हैश मानों को अधिक सुरक्षित बनाने के लिए नई कार्यक्षमता पेश की। यहां 12c सुरक्षा गाइड का लिंक दिया गया है जहां यह पासवर्ड के लिए 12c सत्यापनकर्ता के बारे में बात करता है। उस खंड में ध्यान दें, यह हैश होने पर पासवर्ड में जोड़े गए नमक मूल्य का उल्लेख करता है। यह देखने के लिए कि यह क्यों महत्वपूर्ण है, आइए एक उदाहरण देखें। मैं एक उपयोगकर्ता बनाऊंगा और SYS.USER$ के SPARE4 कॉलम में संग्रहीत उपयोगकर्ता आईडी/पासवर्ड हैश को देखूंगा।

SQL> create user bob identified by abc123;
User created.
SQL> grant create session to bob;
Grant succeeded.
SQL> select spare4 from sys.user$ where name='BOB';
SPARE4
--------------------------------------------------------------------------------
S:44F34BA1369D58A6CB262D166587D5238D9148FC9BDD390A98C29A3B6A34;H:FD30F9DA6ECB907
6C10C04D20AFF9492;T:450FF7F2A4BB8104E33E7C09FF1698AEA2DE3EBD60BFA681942057D83EE2
DD773BB4F7B1046355D1CB63EBF256BC7B466BB1B3185A0988D1CBAE3276D1B181756DB27BB40505
8C44152DB2DD41074396

पिछले संस्करणों में, SPARE4 कॉलम में लगभग इतने वर्ण नहीं होंगे। यह निश्चित रूप से पूर्व-12c संस्करणों की तुलना में अधिक जटिल है। मेरा अनुमान, हालांकि अपुष्ट है, यह है कि एस:उपरोक्त आउटपुट का हिस्सा नमक मूल्य है। मुझे यकीन नहीं है कि H:और T:क्या दर्शाते हैं।

हम उपयोगकर्ता को रिवर्स इंजीनियर करने के लिए DBMS_METADATA पैकेज का उपयोग कर सकते हैं। जब हम ऐसा करते हैं, तो हम देख सकते हैं कि हम अभी भी VALUES द्वारा पहचाने गए खंड का उपयोग कर सकते हैं।

SQL> select dbms_metadata.get_ddl('USER','BOB') from dual;
DBMS_METADATA.GET_DDL('USER','BOB')
--------------------------------------------------------------------------------
CREATE USER "BOB" IDENTIFIED BY VALUES 'S:44F34BA1369D58A6CB262D166587D5238D9
148FC9BDD390A98C29A3B6A34;H:FD30F9DA6ECB9076C10C04D20AFF9492;T:450FF7F2A4BB8104E
33E7C09FF1698AEA2DE3EBD60BFA681942057D83EE2DD773BB4F7B1046355D1CB63EBF256BC7B466
BB1B3185A0988D1CBAE3276D1B181756DB27BB405058C44152DB2DD41074396;5844087A3D506FD3
'
 DEFAULT TABLESPACE "USERS"
 TEMPORARY TABLESPACE "TEMP"

और वास्तव में, यह काम करता है। मैं बॉब के पासवर्ड को कुछ अलग में बदल दूंगा, फिर इसे इस हैश मान में बदल दूंगा और पुराने पासवर्ड से जोड़ दूंगा।

SQL> alter user bob identified by newpass;
User altered.
SQL> alter user bob identified by values 'S:44F34BA1369D58A6CB262D166587D5238D9148FC9BDD390A98C29A3B6A34;H:FD30F9DA6ECB9076C10C04D20AFF9492;T:450FF7F2A4BB8104E33E7C09FF1698AEA2DE3EBD60BFA681942057D83EE2DD773BB4F7B1046355D1CB63EBF256BC7B466BB1B3185A0988D1CBAE3276D1B181756DB27BB405058C44152DB2DD41074396;5844087A3D506FD3';
User altered.
SQL> connect bob/abc123
Connected.

इसलिए हमने कोई कार्यक्षमता नहीं खोई है जैसा कि एमओएस नोट में निहित है। हमें यहां बहुत लंबे हैश मान से निपटना है।

जहां यह वास्तव में महत्वपूर्ण हो जाता है, जब उपयोगकर्ताओं को पूर्व-12c संस्करण से 12c तक ले जाने के लिए exp/imp या डेटा पंप का उपयोग करने का प्रयास किया जाता है। यदि आप Oracle 11g डेटाबेस का पूर्ण निर्यात करते हैं, तो डंप में पुराने पासवर्ड हैश मान होंगे। 12c में आयात करते समय, वह तब होगा जब आपको ORA-02153 त्रुटि प्राप्त होगी। इस समस्या को हल करने के लिए, ज्ञात पासवर्ड के साथ 12c डेटाबेस में उपयोगकर्ताओं को पहले से तैयार करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में बूलियन फील्ड

  2. Oracle में इस पथ को उल्टा करें z/y/x से x/y/z . तक

  3. ओरेकल के लिए एमएस एक्सेस आसान रूपांतरण/माइग्रेशन

  4. ऑरैकल क्वेरी में दिनांक पैरामीटर जोड़ें

  5. जावा SQLData - सूची/सरणी के साथ उपयोगकर्ता ऑब्जेक्ट पर कास्ट करें?