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

PostgreSQL डेटाबेस सुरक्षा को मजबूत करने के लिए एन्क्रिप्शन का उपयोग करना

कृपया ध्यान दें:ब्लॉग के कुछ हिस्सों में पोस्टग्रेएसक्यूएल के लिए समर्थन, परामर्श और प्रशिक्षण प्रदान करने वाली कंपनी साइबरटेक द्वारा "पोस्टग्रेक्यूएल इंस्टेंस लेवल एनक्रिप्शन की घोषणा की उपलब्धता" से संदर्भ और उदाहरण शामिल हैं।

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

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

  • एसएसएल होस्ट प्रमाणीकरण
  • एक नेटवर्क पर डेटा एन्क्रिप्ट करना
  • डेटा विभाजन एन्क्रिप्शन
  • विशिष्ट स्तंभों के लिए एन्क्रिप्शन
  • पासवर्ड संग्रहण एन्क्रिप्शन
  • क्लाइंट-साइड एन्क्रिप्शन

हालाँकि, आप जितनी अधिक परिष्कृत एन्क्रिप्शन रणनीति अपनाते हैं, उतनी ही अधिक संभावना है कि आप अपने डेटा से बाहर हो जाएंगे। इसके अलावा, पढ़ने की प्रक्रिया न केवल कठिन होगी बल्कि क्वेरी और डिक्रिप्ट करने के लिए बहुत सारे संसाधनों की भी आवश्यकता होगी। आपके द्वारा चुना गया एन्क्रिप्शन विकल्प उस डेटा की प्रकृति पर निर्भर करता है जिससे आप संवेदनशीलता के मामले में काम कर रहे हैं। नीचे दिया गया चित्र सर्वर लेनदेन के दौरान डेटा एन्क्रिप्शन और डिक्रिप्शन की समग्र प्रक्रिया को दिखाता है।

यह आलेख विभिन्न तरीकों पर चर्चा करता है जिसमें एक उद्यम संवेदनशील जानकारी को सुरक्षित कर सकता है लेकिन रुचि का मुख्य बिंदु इंस्टेंस-स्तरीय एन्क्रिप्शन होगा जिसका उल्लेख पहले किया गया था।

एन्क्रिप्शन

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

डेटाबेस एन्क्रिप्शन को विभिन्न तरीकों से लागू किया जा सकता है लेकिन कई डेवलपर्स परिवहन स्तर को ध्यान में रखने में विफल होते हैं। हालांकि, अलग-अलग दृष्टिकोण भी धीमा डेटा एक्सेस समय के बीच अलग-अलग नुकसान से जुड़े हैं, खासकर जब वर्चुअल मेमोरी को भारी रूप से एक्सेस किया जा रहा है।

आराम पर डेटा का एन्क्रिप्शन

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

पूर्ण डिस्क एन्क्रिप्शन (FDE)

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

  • एन्क्रिप्ट करने और डिक्रिप्ट करने की प्रक्रिया समग्र डेटा एक्सेस समय को धीमा कर देती है।
  • सिस्टम चालू होने पर डेटा को सुरक्षित नहीं किया जा सकता है क्योंकि जानकारी को डिक्रिप्ट किया जाएगा और पढ़ने के लिए तैयार किया जाएगा। इसलिए आपको फ़ाइल-आधारित एन्क्रिप्शन जैसी कुछ अन्य एन्क्रिप्शन रणनीतियों को संलग्न करने की आवश्यकता है।

फ़ाइल-आधारित एन्क्रिप्शन

इस मामले में, फ़ाइलों या निर्देशिकाओं को स्टैकेबल क्रिप्टोग्राफ़िक फ़ाइल सिस्टम द्वारा ही एन्क्रिप्ट किया जाता है। PostgreSQL में, हम अक्सर इस आलेख में चर्चा के अनुसार pg_crypto दृष्टिकोण का उपयोग करते हैं।

फ़ाइल सिस्टम एन्क्रिप्शन के कुछ लाभों में शामिल हैं:

  • सार्वजनिक कुंजी क्रिप्टोग्राफी के उपयोग के माध्यम से कार्रवाई नियंत्रण लागू किया जा सकता है
  • एन्क्रिप्टेड फ़ाइलों का अलग-अलग प्रबंधन जैसे कि व्यक्तिगत रूप से बदली गई फ़ाइलों का बैकअप एन्क्रिप्टेड रूप में भी, संपूर्ण एन्क्रिप्टेड वॉल्यूम के बैकअप के बजाय।

हालाँकि, यह अधिक विश्वसनीय एन्क्रिप्शन विधि नहीं है जिसका उपयोग आप अपने संकुल डेटा के लिए कर सकते हैं। इसका कारण यह है कि कुछ फ़ाइल-आधारित एन्क्रिप्शन समाधान एन्क्रिप्टेड फ़ाइलों के अवशेष छोड़ सकते हैं जिन पर एक हमलावर पुनर्प्राप्त हो सकता है। इसलिए सर्वोत्तम संयोजन दृष्टिकोण इसे पूर्ण डिस्क एन्क्रिप्शन के साथ संयोजित करना है।

इंस्टेंस लेवल एन्क्रिप्शन

इंस्टेंस स्तर बफ़र्स का उपयोग करता है जैसे कि PostgreSQL क्लस्टर बनाने वाली सभी फाइलें डिस्क पर डेटा-एट-रेस्ट एन्क्रिप्शन के रूप में संग्रहीत की जाती हैं। फिर उन्हें डिक्रिप्ट ब्लॉक के रूप में प्रस्तुत किया जाता है क्योंकि उन्हें डिस्क से साझा बफ़र्स में पढ़ा जाता है। साझा बफ़र्स से डिस्क पर इन ब्लॉकों को लिखने के बाद, वे फिर से स्वचालित रूप से एन्क्रिप्ट हो जाते हैं। डेटाबेस को पहले initdb कमांड का उपयोग करके एन्क्रिप्शन के साथ आरंभ किया जाता है। दूसरे, स्टार्टअप के दौरान, सर्वर द्वारा इन दोनों में से किसी एक तरीके से एन्क्रिप्शन कुंजी प्राप्त की जाती है; pgcrypto.keysetup_command पैरामीटर के माध्यम से या एक पर्यावरण चर के माध्यम से।

आज श्वेतपत्र डाउनलोड करें क्लस्टरकंट्रोल के साथ पोस्टग्रेएसक्यूएल प्रबंधन और स्वचालन इस बारे में जानें कि पोस्टग्रेएसक्यूएल को तैनात करने, मॉनिटर करने, प्रबंधित करने और स्केल करने के लिए आपको क्या जानना चाहिए। श्वेतपत्र डाउनलोड करें

इंस्टेंस लेवल एन्क्रिप्शन सेट करना

आप इंस्टेंस स्तर एन्क्रिप्शन को कैसे सेटअप कर सकते हैं, इस पर एक छोटा संक्षिप्त विवरण नीचे दिए गए चरणों में दिया गया है:

  1. जांचें कि क्या आपने RedHat आधारित OS के लिए rpm -qa |grep contrib कमांड का उपयोग करके "contrib" इंस्टॉल किया है या डेबियन आधारित OS के लिए dpkg -l |grep contrib। यदि यह सूची में नहीं है, तो इसे apt-get install postgresql-contrib के साथ स्थापित करें यदि आप डेबियन आधारित वातावरण का उपयोग कर रहे हैं या yum install postgresql-contrib यदि आप RedHat आधारित OS का उपयोग कर रहे हैं।
  2. पोस्टग्रेएसक्यूएल कोड बनाएं।
  3. एन्क्रिप्शन कुंजी स्थापित करके क्लस्टर प्रारंभ करना और वह initdb कमांड चला रहा है
    read -sp "Postgres passphrase: " PGENCRYPTIONKEY
    export PGENCRYPTIONKEY=$PGENCRYPTIONKEY
    initdb –data-encryption pgcrypto --data-checksums -D cryptotest
  4. सर्वर को
    $ postgres -D /usr/local/pgsql/data
  5. PGENCRYPTIONKEY पर्यावरण चर को कमांड के साथ सेट करना:
    export PGENCRYPTIONKEY=topsecret pg_ctl -D cryptotest start
    कुंजी को ऊपर दिए गए कमांड "pgcrypto.keysetup_command" postgresql.conf पैरामीटर के माध्यम से एक कस्टम और अधिक सुरक्षित कुंजी पढ़ने की प्रक्रिया के माध्यम से भी सेट किया जा सकता है।

प्रदर्शन अपेक्षाएं

एन्क्रिप्शन हमेशा प्रदर्शन की कीमत पर आता है, क्योंकि लागत के बिना कोई विकल्प नहीं है। यदि आपका कार्यभार आईओ-उन्मुख है, तो आप काफी कम प्रदर्शन की उम्मीद कर सकते हैं लेकिन ऐसा नहीं हो सकता है। कभी-कभी विशिष्ट सर्वर हार्डवेयर पर, यदि बफ़र्स में डेटासेट कम साझा किया जाता है या बफ़र्स में रहने का समय छोटा होता है, तो प्रदर्शन हिट नगण्य हो सकता है।

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

कार्यभार कोई एन्क्रिप्शन नहीं एन्क्रिप्शन के साथ प्रदर्शन लागत
बल्क इंसर्ट ऑपरेशन 26s 68s 161%
साझा बफ़र्स में फ़िट पढ़ना-लिखना (1:3 के अनुपात में) 3200TPS 3068TPS 4.13%
केवल साझा किए गए बफ़र्स से पढ़ें 2234 टीपीएस 2219 टीपीएस 0.68%
रीड ओनली नॉट फिटिंग शेयर्ड बफ़र्स 1845 TP 1434 टीपीएस 22.28%
पढ़ना-लिखना 1:3 के अनुपात में साझा बफ़र्स में फ़िट नहीं होता 3422 टीपीएस 2545 टीपीएस 25.6%

जैसा कि ऊपर दी गई तालिका में दिखाया गया है, हम देख सकते हैं कि प्रदर्शन गैर-रैखिक है क्योंकि यह कभी-कभी 161% से 0.7% तक उछल जाता है। यह एक सरल संकेत है कि साझा बफ़र्स और डिस्क के बीच स्थानांतरित किए गए पृष्ठों की मात्रा के प्रति संवेदनशील होने के अलावा एन्क्रिप्शन प्रदर्शन कार्यभार विशिष्ट है। यह शामिल कार्यभार के आधार पर सीपीयू की शक्ति को भी प्रभावित कर सकता है। इंस्टेंस लेवल एन्क्रिप्शन काफी व्यवहार्य विकल्प है और कई वातावरणों के लिए सबसे सरल तरीका है।

निष्कर्ष

डेटा एन्क्रिप्शन विशेष रूप से डेटाबेस प्रबंधन में संवेदनशील जानकारी के लिए एक महत्वपूर्ण उपक्रम है। जहां तक ​​PostgreSQL का संबंध है डेटा एन्क्रिप्शन के लिए कई विकल्प उपलब्ध हैं। उपयोग करने के लिए किस दृष्टिकोण का निर्धारण करते समय, डेटा, एप्लिकेशन आर्किटेक्चर और डेटा उपयोग को समझना महत्वपूर्ण है क्योंकि एन्क्रिप्शन प्रदर्शन की कीमत पर आता है। इस तरह आप समझ पाएंगे:एन्क्रिप्शन को कब सक्षम करना है, आपका डेटा कहां उजागर हुआ है और यह कहां सुरक्षित है, जो उपयोग करने के लिए सबसे अच्छा एन्क्रिप्शन तरीका है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLers के लिए PostgreSQL प्रशिक्षण

  2. Postgresql में आईडी कॉलम स्थिति महत्वपूर्ण है?

  3. मैं एकाधिक स्तंभों के बीच सेट-जैसी विशिष्टता को कैसे लागू करूं?

  4. पोस्टग्रेज में कॉलम को कई पंक्तियों में विभाजित करें

  5. मूडल पोस्टग्रेएसक्यूएल डेटाबेस की स्वचालित विफलता