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

SQL सर्वर को समझना हमेशा एन्क्रिप्टेड

डेटा-संचालित सिस्टम के लिए सुरक्षा सबसे महत्वपूर्ण आवश्यकताओं में से एक है। एन्क्रिप्शन डेटा को सुरक्षित करने के तरीकों में से एक है। विकिपीडिया एन्क्रिप्शन को इस प्रकार परिभाषित करता है:

एन्क्रिप्शन किसी संदेश या जानकारी को इस तरह से एन्कोड करने की प्रक्रिया है कि केवल अधिकृत पक्ष ही उस तक पहुंच सकते हैं और जो अधिकृत नहीं हैं वे नहीं कर सकते। "

SQL Server 2016 में, Microsoft ने Always Encrypted नामक एक एन्क्रिप्शन सुविधा पेश की थी। . इस लेख में, हम देखेंगे कि हमेशा एन्क्रिप्टेड है, और इसका उपयोग सरल उदाहरणों की सहायता से डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए कैसे किया जा सकता है।

SQL सर्वर हमेशा एन्क्रिप्टेड क्या होता है?

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

कई एन्क्रिप्शन तकनीक मौजूद हैं, हालांकि वे हमेशा एन्क्रिप्टेड जितनी सुरक्षित नहीं हैं . उदाहरण के लिए, डेटाबेस पक्ष पर डेटा को एन्क्रिप्ट करने के लिए सममित कुंजी एन्क्रिप्शन का उपयोग किया जाता है। इस दृष्टिकोण का एक दोष यह है कि यदि किसी अन्य डेटाबेस व्यवस्थापक के पास डिक्रिप्शन कुंजी है, तो वह डेटा तक पहुंच सकता है।

दूसरी ओर, हमेशा एन्क्रिप्टेड . के मामले में , डेटा क्लाइंट साइड पर एन्क्रिप्ट किया गया है और डेटाबेस सर्वर डेटा का एक सिफर संस्करण प्राप्त करता है। इसलिए, डेटाबेस के अंत में डेटा को डिक्रिप्ट नहीं किया जा सकता है। डेटा को एन्क्रिप्ट करने वाला केवल क्लाइंट ही इसे डिक्रिप्ट कर सकता है।

कुंजी प्रकार

SQL सर्वर हमेशा एन्क्रिप्ट की गई सुविधा दो प्रकार की कुंजियों का उपयोग करती है:

  • कॉलम एन्क्रिप्शन कुंजी (सीईके)

इसे हमेशा डेटाबेस सर्वर पर रखा जाता है। डेटा वास्तव में कॉलम सीईके का उपयोग करके एन्क्रिप्ट किया गया है। हालांकि, अगर डेटाबेस के किसी व्यक्ति के पास सीईके तक पहुंच है, तो वह डेटा को डिक्रिप्ट कर सकता है।

  • कॉलम मास्टर कुंजी (CMK)

यह कुंजी क्लाइंट साइड या किसी तीसरे पक्ष के स्टोरेज पर रखी जाती है। सीएमके का उपयोग सीईके की सुरक्षा के लिए किया जाता है, सुरक्षा की एक अतिरिक्त परत जोड़ता है। जिसके पास सीएमके तक पहुंच है, वह वास्तव में सीईके को डिक्रिप्ट कर सकता है जिसका उपयोग वास्तविक डेटा को समझने के लिए किया जा सकता है।

एन्क्रिप्शन प्रकार

  • नियतात्मक

इस प्रकार का एन्क्रिप्शन हमेशा एक ही प्रकार के डेटा के लिए समान एन्क्रिप्टेड टेक्स्ट जेनरेट करेगा। यदि आप किसी तालिका स्तंभ पर खोज और समूहीकरण लागू करना चाहते हैं, तो उस स्तंभ के लिए नियतात्मक एन्क्रिप्शन का उपयोग करें।

  • यादृच्छिक रूप से

यादृच्छिक एन्क्रिप्शन एक ही प्रकार के डेटा के लिए अलग एन्क्रिप्टेड टेक्स्ट उत्पन्न करेगा, जब भी आप डेटा को एन्क्रिप्ट करने का प्रयास करेंगे। यदि कॉलम का उपयोग समूहीकरण और खोज के लिए नहीं किया जाता है, तो यादृच्छिक एन्क्रिप्शन का उपयोग करें।

कॉन्फ़िगर करना हमेशा एन्क्रिप्टेड SSMS का उपयोग करना

हम SSMS के माध्यम से हमेशा एन्क्रिप्टेड SQL सर्वर को कॉन्फ़िगर कर सकते हैं। लेकिन इससे पहले, हमें डेटाबेस बनाने और डेटाबेस में एक टेबल जोड़ने की जरूरत है। ऐसा करने के लिए निम्न स्क्रिप्ट निष्पादित करें:

CREATE DATABASE School

Use School
CREATE TABLE Student  
(  
   StudentId int identity(1,1) primary key,  
   Name varchar(100),  
   Password varchar(100) COLLATE Latin1_General_BIN2 not null,  
   SSN varchar(20)  COLLATE Latin1_General_BIN2 not null
)

उपरोक्त लिपि में, हम विद्यालय नामक एक नया डेटाबेस बनाते हैं . डेटाबेस में चार कॉलम होते हैं:StudentId , नाम , पासवर्ड , और SSN . आप देख सकते हैं कि पासवर्ड और एसएसएन कॉलम में एक COLLATE है। उस कॉलम के लिए COLLATE निर्दिष्ट करना आवश्यक है जिसे आप हमेशा एन्क्रिप्टेड चाहते हैं . एन्क्रिप्शन के प्रकार को "लैटिन1_जनरल_बीआईएन2" के रूप में निर्दिष्ट किया गया है।

आइए अब पहले विद्यार्थी तालिका में दो रिकॉर्ड जोड़ने का प्रयास करें।

insert into Student ( Name, Password, SSN)
VALUES ('John','abc123', '451236521478'),
('Mike','xyz123', '789541239654')

इस समय, हमने हमेशा एन्क्रिप्टेड कॉन्फ़िगर नहीं किया है छात्र तालिका के किसी भी कॉलम पर, इसलिए यदि आप छात्र तालिका से रिकॉर्ड का चयन करने का प्रयास करते हैं, तो आप एन्क्रिप्टेड मानों के बजाय वास्तविक डेटा मान देखेंगे। रिकॉर्ड का चयन करने के लिए निम्न क्वेरी निष्पादित करें:

SELECT * FROM Student

आउटपुट इस तरह दिखता है:

आइए अब SSMS को कॉन्फ़िगर करें हमेशा एन्क्रिप्टेड को सक्षम करने के लिए . जैसा कि हमने पहले कहा, हमेशा एन्क्रिप्टेड स्तंभ एन्क्रिप्शन कुंजियाँ और स्तंभ मास्टर कुंजियाँ बनाता है।

स्कूल डेटाबेस के लिए मौजूदा कॉलम एन्क्रिप्शन कुंजी और कॉलम मास्टर कुंजी देखने के लिए, डेटाबेस -> स्कूल -> सुरक्षा -> हमेशा एन्क्रिप्टेड कुंजी पर जाएं जैसा कि निम्न आकृति में दिखाया गया है:

चूंकि आपके पास डेटासेट में कोई एन्क्रिप्टेड रिकॉर्ड नहीं है, इसलिए आपको सूची में कोई सीईके या सीएमके नहीं दिखाई देगा।

आइए अब छात्र तालिका के पासवर्ड और SSN कॉलम पर एन्क्रिप्शन सक्षम करें। ऐसा करने के लिए, डेटाबेस -> स्कूल पर राइट क्लिक करें। ड्रॉपडाउन मेनू से, कॉलम एन्क्रिप्ट करें select चुनें विकल्प जैसा कि नीचे दिए गए चित्र में दिखाया गया है:

क्लिक करें अगला परिचय . पर बटन खिड़की। कॉलम चयन . से विंडो, पासवर्ड और एसएसएन कॉलम जांचें। पासवर्ड कॉलम के लिए, एन्क्रिप्शन प्रकार को यादृच्छिक . के रूप में चुनें . SSN कॉलम के लिए, नियतात्मक चुनें . यह निम्न स्क्रीनशॉट में दिखाया गया है:

अगलाक्लिक करें मास्टर कुंजी कॉन्फ़िगरेशन . पर बटन खिड़की। डिफ़ॉल्ट रूप से, मास्टर कुंजी क्लाइंट मशीन पर संग्रहीत होती है जैसा कि नीचे दिखाया गया है:

अगलाक्लिक करें सेटिंग चलाएँ . पर बटन और सारांश खिड़कियाँ। यदि सब कुछ ठीक रहा, तो आपको निम्न परिणाम देखना चाहिए खिड़की।

अब यदि आप फिर से डेटाबेस -> स्कूल -> सुरक्षा -> हमेशा एन्क्रिप्टेड कुंजी पर जाते हैं, तो आपको नई बनाई गई सीईके और सीएमके को निम्न आकृति में दिखाया जाना चाहिए:

अब विद्यार्थी तालिका से रिकॉर्ड चुनने का प्रयास करें।

SELECT * FROM Student

आउटपुट इस तरह दिखता है।

आउटपुट से, आप देख सकते हैं कि पासवर्ड और SSN कॉलम एन्क्रिप्ट किए गए हैं।

डिक्रिप्टेड डेटा पुनर्प्राप्त करना

SELECT क्वेरी ने एन्क्रिप्टेड डेटा लौटाया। क्या होगा यदि आप डिक्रिप्टेड रूप में डेटा पुनर्प्राप्त करना चाहते हैं? ऐसा करने के लिए SSMS में एक नई क्वेरी विंडो बनाएं और फिर कनेक्शन बदलें . पर क्लिक करें ऑब्जेक्ट एक्सप्लोरर के शीर्ष पर आइकन जैसा कि निम्न आकृति में दिखाया गया है:

SQL सर्वर कनेक्शन विंडो दिखाई देगी। विकल्प चुनें नीचे दाईं ओर से बटन जैसा कि नीचे दिखाया गया है:

दिखाई देने वाली विंडो से, अतिरिक्त कनेक्शन पैरामीटर्स पर क्लिक करें ऊपर बाईं ओर से टैब करें और टेक्स्ट बॉक्स में "कॉलम एन्क्रिप्शन सेटिंग =सक्षम" दर्ज करें जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है। अंत में, कनेक्ट . क्लिक करें बटन।

अब फिर से निम्न चयन क्वेरी निष्पादित करें:

SELECT * FROM Student

परिणामों में, आप नीचे दिखाए गए अनुसार डिक्रिप्टेड रूप में लौटाए गए रिकॉर्ड देखेंगे:

निष्कर्ष

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर (T-SQL) में तालिका के लिए विभाजन जानकारी प्राप्त करने के 2 तरीके

  2. SQL सर्वर के लिए सीधे संग्रहण स्थान का परिचय

  3. संग्रहीत प्रक्रिया से डेटा पुनर्प्राप्त करें जिसमें एकाधिक परिणाम सेट हैं

  4. SQL सर्वर पूर्णांक को बाइनरी स्ट्रिंग में बदलें

  5. SQL सर्वर में लेफ्ट जॉइन बनाम लेफ्ट आउटर जॉइन