एसक्यूएलमा प्रयोगकर्ता र भूमिकाहरूको लागि नियन्त्रण पहुँच

सुरक्षा डेटाबेस प्रशासकहरूको लागि सर्वोच्च छ कि उनीहरूको गीगाबाइटीको अनावश्यक व्यापारिक डाटालाई अनधिकृत बाहिर जाने व्यक्तिहरू र उनीहरूको प्राधिकरणलाई टाढ्ने प्रयासमा आन्तरिक डेटा सुरक्षित गर्न खोज्ने। सबै सम्बन्धी डाटाबेस प्रबन्ध प्रणालीहरूले यी खतराहरूलाई कम गर्न को लागी डिजाइन गरिएका केही प्रकारको सुरक्षा प्रणाली प्रदान गर्दछ। तिनीहरू माइक्रोसफ्ट पहुँच जटिल जटिल प्रयोगकर्ता / भूमिका संरचनामा प्रदान गरिएको सरल पासवर्ड सुरक्षाबाट दायरा र उन्नत सम्बन्धी डाटाबेसहरू जस्तै Oracle र Microsoft SQL Server द्वारा समर्थित। यो आलेखले संरचित क्वेरी भाषा (वा SQL ) लागू गर्ने सबै डेटाबेसहरूमा सामान्य सुरक्षा तंत्रमा ध्यान केन्द्रित गर्दछ। एकसाथ, हामी डाटा पहुँच नियन्त्रणहरू बलियो बनाउन र तपाइँको डेटाको सुरक्षा सुनिश्चित गर्ने प्रक्रिया मार्फत हिंड्छौं।

प्रयोगकर्ताहरू

सर्भर-आधारित डाटाबेस सबै कम्प्युटर प्रयोगकर्ता अवधारणालाई समर्थन गर्दछ जुन कम्प्यूटर अपरेटिङ सिस्टमहरूमा प्रयोग गरिन्छ। यदि तपाइँ प्रयोगकर्ता / समूह पदानुक्रमसँग माइक्रोसफ्ट विन्डोज NT र विन्डोज 2000 मा फेला पर्यो भने, तपाइँ फेला पार्नुहुनेछ कि प्रयोगकर्ता / भूमिका समूहहरू SQL Server र Oracle द्वारा समर्थित धेरै समान छन्।

यो अत्यधिक सिफारिस गरिएको छ कि तपाईंले प्रत्येक व्यक्तिको लागि व्यक्तिगत डाटाबेस प्रयोगकर्ता खाताहरू सिर्जना गर्नुहुनेछ जुन तपाईको डाटाबेसमा पहुँच हुने छ। प्रयोगकर्ताहरू बीच खाताहरू साझेदारी गर्नको लागि टेक्निकल रूपमा सम्भव छ वा सजिलै प्रत्येक प्रयोगकर्ताको लागि एक प्रयोगकर्ता खाता प्रयोग गर्नुपर्दछ जुन तपाईंको डेटाबेसमा पहुँच गर्न आवश्यक छ, तर म यो अभ्यासलाई दुई कारणका लागि दृढतापूर्वक प्रोत्साहन गर्दछु। पहिलो, यो व्यक्तिगत खाताता को हटाउने छ - यदि प्रयोगकर्ताले तपाईंको डेटाबेसमा परिवर्तन गर्दछ (हामीलाई आफैले $ 5,000 उचाई दिईरहन्छ), तपाईले यसलाई एक व्यक्ति को फिर्ता गर्न को लागी लेखा परीक्षा लग को प्रयोग मा ट्रेस गर्न सक्षम नहीं हुनेछ। यसबाहेक, यदि एक विशेष प्रयोगकर्ताले तपाईंको संगठन छोड्दछ र तपाई डेटाबेसबाट यसको पहुँच हटाउन चाहानुहुन्छ भने, तपाईले पासवर्ड परिवर्तन गर्न बाध्य हुने छ जुन सबै प्रयोगकर्ताहरू मा निर्भर गर्दछ।

प्रयोगकर्ता खाताहरू सिर्जना गर्नका लागि प्लेटफार्म प्लेटफार्ममा प्लेटफर्ममा भिन्न हुन्छन् र तपाईले तपाइँको DBMS-specific कागजातलाई सही प्रक्रियाको लागि सल्लाह दिनुपर्छ। Microsoft SQL Server प्रयोगकर्ताहरूले sp_adduser भण्डारण प्रक्रियाको प्रयोगको खोजी गर्नु पर्छ। Oracle डाटाबेस प्रशासकहरू CREATE USER कमांड उपयोगी पाउनेछन्। तपाईं वैकल्पिक प्रमाणीकरण योजनाहरूको खोजी गर्न पनि सक्नुहुन्छ। उदाहरणको लागि, माइक्रोसफ्ट SQL सर्भरले Windows NT एकीकृत सुरक्षाको प्रयोगलाई समर्थन गर्दछ। यो योजना अन्तर्गत, प्रयोगकर्ताहरूले तिनीहरूको विन्डोज NT प्रयोगकर्ता खाताहरूको डेटाबेसमा चिनिन्छन् र डेटाबेस पहुँच गर्न अतिरिक्त प्रयोगकर्ता आईडी र पासवर्ड प्रविष्टि गर्न आवश्यक छैन। यो दृष्टिकोण डाटाबेस प्रशासकहरूको बीचमा धेरै लोकप्रिय छ किनभने यो खाता व्यवस्थापनले सञ्जाल प्रशासन कर्मचारीलाई बदल्दछ र यसलाई अन्त प्रयोगकर्तामा एक मात्र साइन-इनको सुविधा प्रदान गर्दछ।

भूमिकाहरू

यदि तपाईँ साना साना प्रयोगकर्ताहरूको साथमा वातावरणमा हुनुहुन्छ भने, तपाईले तपाईलाई प्रयोगकर्ता खाताहरू सिर्जना गर्न र अनुमतिहरू सिमित गर्न सिधै तिनीहरूलाई पत्ता लगाउनुहुनेछ कि तपाइँका आवश्यकताहरूको लागि पर्याप्त छ। यद्यपि, यदि तपाईसँग धेरै प्रयोगकर्ताहरू छन् भने, तपाइँ प्रायः सम्भावित खाताहरू र उचित अनुमतिहरू कायम राख्न बोझबाट अभिवृद्धि गरिनेछ। यो बोझ कम गर्न, सम्बन्धित डाटाबेसले भूमिकाको धारणालाई समर्थन गर्दछ। Windows NT समूहहरूमा डेटाबेस भूमिकाहरू समान रूपमा प्रकार्य गर्दछ। प्रयोगकर्ता खाताहरू भूमिका (हरू) को लागि तोकिएका छन् र अनुमतिहरू व्यक्तिगत प्रयोगकर्ता खाताहरू भन्दा सट्टाको रूपमा भूमिकाको लागि तोकिएका छन्। उदाहरणको लागि, हामी एक DBA भूमिका सिर्जना गर्न सक्छौं र त्यसपछि हाम्रो प्रशासनिक कर्मचारीको प्रयोगकर्ता खाताहरू यो भूमिकामा थप्न सक्नुहुनेछ। एकपटक हामीले यो गरेपछि, हामी केवल वर्तमान (र भविष्य) प्रशासकहरुलाई एक विशिष्ट अनुमति प्रदान गर्न सक्दछ भूमिका को अनुमति लाई मात्र नियुक्त गरेर। एक पटक फेरि, भूमिका सिर्जना गर्न प्रक्रिया प्लेटफार्ममा प्लेटफार्मबाट भिन्न हुन्छ। एमएस SQL ​​सर्भर प्रशासकहरूले sp_addrole भण्डारण प्रक्रियाको जाँच गर्नु पर्दछ जबकि ओराकल डीबीएहरूले CREATE रोल सिन्ट्याक्स प्रयोग गर्नुपर्छ।

अनुदान अनुमतिहरू

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

यहाँ कथनको सिन्ट्याक्स हो:

GRANT <अनुमतिहरू>
[ON <तालिका>]
<प्रयोगकर्ता / भूमिका> मा
[अनुदान विकल्पको साथ]

अब, यो बयान लाइन-लाइनमा एक नजर राखौं। पहिलो रेखा, GRANT <अनुमतिहरू>, ले हामीलाई निर्दिष्ट तालिका अनुमति निर्दिष्ट गर्न अनुमति दिन्छ। यी त तालिकामा स्तर अनुमतिहरू (जस्तै चयन, इन्सर्ट, अद्यावधिक र मेटाउनुहोस्) वा डेटाबेस अनुमतिहरू (जस्तै CREATE TABLE, ALTER DATABASE र GRANT)। एक भन्दा धेरै अनुमति एक GRANT बयानमा प्रदान गर्न सकिन्छ, तर तालिका-तह अनुमतिहरू र डेटाबेस-स्तर अनुमतिहरू एक बयानमा संयुक्त हुन सक्छ।

दोस्रो रेखा, ON

, तालिका-तह अनुमतिहरूको लागि प्रभावित तालिका निर्दिष्ट गर्न प्रयोग गरिन्छ। यदि हामी डेटाबेस स्तर स्तर अनुमति दिँदै यो रेखा छोड्नेछ। तेस्रो रेखालाई प्रयोगकर्ता वा भूमिका अनुमति दिइएको छ भनेर निर्दिष्ट गर्दछ।

अन्तमा, चतुर्थ विकल्पको साथ चौथो लाइन वैकल्पिक हो। यदि यो लाइन बयानमा समावेश छ भने, प्रयोगकर्ता प्रभावितले अन्य प्रयोगकर्ताहरूलाई त्यहि अनुमतिहरू प्रदान गर्न अनुमति पनि छ। ध्यान दिनुहोस् कि अनुमति सँगको साथ निर्दिष्ट गर्न सकिँदैन जब अनुमति एक भूमिकामा नियुक्त गरिन्छ।

उदाहरणहरु

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

उपहार चयन, इन्सर्ट, अपडेट
ग्राहकहरूमा
DataEntry मा

र यो त्यहाँ छ! अब हामी डेटाबेस-तह अनुमतिहरू असाइन गर्दै छौं जहाँ एक मामलाको जाँच गरौं। हामी DBA भूमिका को सदस्यहरूलाई हाम्रो डाटाबेसमा नयाँ टेबल जोड्न अनुमति दिन्छौं। यसबाहेक, हामी तिनीहरूलाई पनि प्रयोग गर्न अनुमति दिने अन्य प्रयोगकर्ताहरू प्रदान गर्न सक्षम हुन चाहन्छौं। यहाँ SQL कथन छ:

उपहार सिर्जना तालिका
DBA लाई
अनुदान विकल्पको साथ

ध्यान दिनुहोस् कि हामीले गन्तव्य विकल्प लाइन समावेश गरेको छ भनेर सुनिश्चित गर्नका लागि हाम्रो DBA ले यो प्रयोगकर्तालाई अन्य प्रयोगकर्ताहरूलाई असाइन गर्न सक्दछ।

अनुमतिहरू हटाउँदै

एकपटक हामीले अनुमतिहरू दिएपछि, यसलाई प्रायः पछि मितिमा रद्द गर्नको लागि आवश्यक साबित हुन्छ। सौभाग्य देखि, SQL ले पहिले अनुमति दिइएको अनुमतिहरू हटाउन REVOKE आदेश प्रदान गर्दछ। यहाँ सिंक्याक्स छ:

रिभोक गर्नुहोस् [को लागि अनुमति विकल्प] <अनुमतिहरू>
ON


<प्रयोगकर्ता / भूमिका> बाट

तपाइँले यो आदेशको सिन्ट्याक्स GRANT आदेशको जस्तो छ भनेर सूचना दिनेछ। एकमात्र भिन्नता यो हो कि GRANT OPTION को आदेश को अन्त्य सम्म REVOKE कमांड लाइन मा निर्दिष्ट गरिएको छ। उदाहरणको रूपमा, हामी कल्पना गर्छौं कि हामी मरियमको पहिले अनुमति प्राप्त गर्न चाहानुहुन्छ जुन ग्राहक डेटाबेसबाट रेकर्डहरू हटाउन अनुमति दिइएको छ। हामी निम्न आदेश प्रयोग गर्यौं:

पुनः छोड्नुहोस्
ग्राहकहरूमा
मरियम बाट

र यो त्यहाँ छ! त्यहाँ एक अतिरिक्त तंत्र हो जुन माइक्रोसफ्ट SQL सर्भर द्वारा उल्लेख गरिएको उल्लेख गरिएको हो - DENY आदेश। यो आदेश स्पष्ट रूपमा प्रयोगकर्तालाई अनुमति अस्वीकार गर्न प्रयोग गर्न सकिन्छ जुन अन्यथा विद्यमान वा भविष्य भूमिका सदस्यता मार्फत हुन सक्छ। यहाँ सिंक्याक्स छ:

DENY <अनुमतिहरू>
ON


<प्रयोगकर्ता / भूमिकामा

उदाहरणहरु

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

दिन हटाउनुहोस्
ग्राहकहरूमा
मरियमलाई

DENY आदेश मूलतः डेटाबेस पहुँच नियन्त्रणमा "नकारात्मक अनुमति" सिर्जना गर्दछ। यदि हामीले पछि ग्राहकहरूको तालिकाबाट पङ्क्तिहरू हटाउन मरियमलाई अनुमति दिनेछौं भने, हामी केवल GRANT आदेश प्रयोग गर्न सक्नुहुन्न। त्यो आदेश अवस्थित DENY द्वारा तुरुन्त ओभरराइड गरिनेछ। यसको सट्टा, हामी निम्न अनुमति को लागी नकारात्मक अनुमति प्रविष्टि हटाउन को लागि हामी REVOKE आदेश को उपयोग गर्नेछौं:

पुनः छोड्नुहोस्
ग्राहकहरूमा
मरियम बाट

तपाईं नोटिस गर्नेछु कि यो आदेश एक सकारात्मक अनुमति हटाउनको लागी एक समान हो। सम्झनुहोस् कि DENY र GRANT समान काममा काम गर्न दुवै आदेश * mdash; तिनीहरू दुवै अनुमति (सकारात्मक वा नकारात्मक) डाटाबेस पहुँच नियन्त्रण प्रणालीमा। REVOKE आदेश निर्दिष्ट प्रयोगकर्ताको लागि सबै सकारात्मक र नकारात्मक अनुमतिहरू हटाउँदछ। एकपटक यो आदेश जारी भएपछि, मरियमले तालिकाबाट पङ्क्तिहरू मेटाउन सक्नेछन् भने उनी त्यो अनुमतिको एक भूमिकाको सदस्य हुन्। वैकल्पिक रूपमा, एक GRANT आदेश DELETE अनुमति सिधै उनको खातामा प्रदान गर्न जारी गर्न सकिन्छ।

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