Data Control language: Grant, Revoke

Data Control Language (DCL) database ના સુરક્ષા રક્ષક તરીકે કામ કરે છે, GRANT અને REVOKE વાપરીને બિલકુલ નિયંત્રિત કરતાં કે કયા users કયાં ચોક્કસ tables જોઈ કે બદલી શકે.

10 min read · 12 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

ખુલ્લા દરવાજાવાળા Database નું દુઃસ્વપ્ન

તમારા Semester 1 ના labs માં, જ્યારે તમે programs લખતા કે નાની text files સંભાળતા, ત્યારે તમે તમારી system ના એકમાત્ર માલિક હતા. પણ વાસ્તવિક software applications માં, જેમ કે એક university management portal કે એક banking application, સેંકડો જુદા users રોજ log in કરે છે. જો એક junior receptionist ને એક student નું સરનામું તપાસવું હોય, તો શું એમની પાસે exam ના marks બદલવાની કે આખો fee નો ચોપડો કાઢી નાખવાની સત્તા પણ હોવી જોઈએ? બધાને root administrative password આપવો એ પાકી આફતનું નિમંત્રણ છે. તો આપણે આપણું database અનેક users માટે કેવી રીતે ખોલીએ અને સાથે ખાતરી કરીએ કે એ માત્ર એમની નોકરીની ભૂમિકા માટે સ્પષ્ટપણે જરૂરી ક્રિયાઓ જ કરી શકે?

Theory

College ની Master Key સામે ચોક્કસ Library નો પાસ

તમારા college ના campus ના મકાનને કલ્પો. આચાર્ય પાસે master key છે જે staff room, પરીક્ષાનું કબાટ, server room, અને મુખ્ય દરવાજો ખોલી શકે છે. એક પહેલા semester ના student ને માત્ર એક ચોક્કસ વર્ગખંડમાં બેસવા દેવા આ master key આપવી અત્યંત ખતરનાક છે. એને બદલે, college એક Library Card (એક ચોક્કસ પાસ) આપે છે જે તમને library ના વાચનખંડમાં જવા અને પુસ્તકો લેવા દે છે, પણ પરીક્ષાની કચેરીમાં પગ મૂકતાં તમને સંપૂર્ણપણે રોકે છે. SQL માં, Data Control Language (DCL) બિલકુલ આ ચોક્કસ પ્રવેશના પાસ આપવા કે પાછા લેવા જેવું કામ કરે છે, દરવાજા પરનાં ભૌતિક તાળાં બદલ્યા વગર.

Theory

Privilege ના સુરક્ષા માળખાની ઔપચારિક વ્યાખ્યા

SQL નો Data Control Language (DCL) ઘટક એવા commands નો બનેલો છે જે એક database system ની અંદર પ્રવેશની પરવાનગીઓ અને અધિકારના સ્તરો નિયંત્રિત કરે છે. પરવાનગીઓ મોટે ભાગે બે શ્રેણીઓમાં વર્ગીકૃત થાય છે: System Privileges (database instance પર CREATE TABLE કે CONNECT જેવી વહીવટી ક્રિયાઓ કરવાના અધિકારો આપતાં) અને Object Privileges (એક ચોક્કસ table કે view પર SELECT, INSERT, UPDATE, કે DELETE જેવી કામગીરી ચલાવવાના અધિકારો આપતાં). DCL ના બે પાયાના commands છે GRANT (જે privileges બક્ષે છે) અને REVOKE (જે એ પાછા ખેંચે છે).

At a glance

Table 1: SQL Data Control Language commands માટે આવશ્યક સંરચનાત્મક syntax નું mapping.

DCL Command નો ગુણધર્મSyntax ના માળખાની રૂપરેખાકામગીરીનું સુરક્ષા પરિણામ
GRANT PrivilegesGRANT privilege_name ON object_name TO user_name;એક લક્ષ્ય user ના ખાતાને નિર્દિષ્ટ કામગીરીનો પ્રવેશ તરત આપે છે.
REVOKE PrivilegesREVOKE privilege_name ON object_name FROM user_name;વ્યાખ્યાયિત privileges તરત છીનવી લે છે, ભવિષ્યના execution ના પ્રયાસો રોકતાં.
WITH GRANT OPTIONએક GRANT statement ની string ના અંતે જોડાય છે.મેળવનાર user ને એ જ અધિકારો બીજા સાથીઓને આગળ આપવા દે છે.
PUBLIC Accountએક user નામને બદલે 'TO PUBLIC' keyword ને નિશાન બનાવવું.વ્યાખ્યાયિત વાંચવા કે લખવાના privileges system ના દરેકે દરેક user ખાતાને પ્રસારિત કરે છે.

Theory

Worked Example: Library Ledger ની સુરક્ષા લાગુ કરવી

ચાલો ટ્રેસ કરીએ કે એક Database Administrator (DBA) rahul_clerk નામના નવા રખાયેલા library assistant માટે પ્રવેશનું નિયંત્રણ કેવી રીતે સંભાળે છે. આપણે એક સુરક્ષિત table ગોઠવીશું, હરોળ બદલવાના ચોક્કસ privileges આપીશું, અને પછી એ પાછા ખેંચીને સુરક્ષાનો અમલ કામ કરતો જોઈશું.

Practical

Library Database Security Pipeline

-- Step 1: Administrator creates the master inventory table
CREATE TABLE library_books (
    book_id INT PRIMARY KEY,
    title VARCHAR(100),
    copies_available INT
);

-- Step 2: Grant specific read and add privileges to the clerk account
GRANT SELECT, INSERT ON library_books TO rahul_clerk;

-- Step 3: Simulate the clerk successfully adding a new textbook record
-- (Executed under rahul_clerk session space)
INSERT INTO library_books VALUES (201, 'Core Python Programming', 5);

-- Step 4: Revoke inserting powers when the internship duration ends
REVOKE INSERT ON library_books FROM rahul_clerk;

Copy કરીને Oracle FreeSQL ખોલો
Oracle FreeSQL, Oracle SQL નું મફત online editor છે. Code પહેલા copy થઈ જાય છે: તેને ત્યાં paste કરીને Run કરો.

Think first

અનધિકૃત કામગીરીના અવરોધને ટ્રેસ કરો

ધારો કે Step 4 ચાલ્યા પછી તરત, user ખાતું rahul_clerk બે અલગ statements ચલાવવાનો પ્રયાસ કરે છે: પહેલું, એક 'SELECT * FROM library_books;' query, અને બીજું, એક 'INSERT INTO library_books VALUES (202, 'Database Systems', 3);' query. RDBMS દરેક statement માટે શું output કરશે?

Show the answer

પહેલું statement (SELECT) સફળતાપૂર્વક ચાલશે અને table ના records દેખાડશે, કારણ કે માત્ર INSERT નું privilege પાછું ખેંચાયું હતું, SELECT ની પરવાનગી અકબંધ છોડતાં. બીજું statement (INSERT) તરત નિષ્ફળ જશે અને 'ORA-01031: insufficient privileges' કે 'Permission Denied' જેવી એક સ્પષ્ટ error ફેંકશે. Database system query ને engine ના સ્તરે જ અટકાવે છે, એ નીચેના સંગ્રહના blocks ને અડી શકે એ પહેલાં.

Quiz

કયા પ્રકારનું SQL privilege એક user ને નવાં user ખાતાં બનાવવાં, server નાં જોડાણો સ્થાપવાં, કે તદ્દન નવાં tables બનાવવાં જેવાં વ્યાપક સંરચનાત્મક database નાં કામો કરવા દે છે?

  1. Object Privileges
  2. System Privileges
  3. Transaction Privileges
  4. Data Definition Privileges
Show the answer

System Privileges

System privileges આખા database instance પર વ્યાપક વહીવટી સત્તા આપે છે (જેમ કે CREATE USER કે CREATE TABLE). Object privileges, એથી ઊલટું, હયાત અલગ tables કે views પરની ચોક્કસ ક્રિયાઓ પૂરતાં ચુસ્ત મર્યાદિત છે (જેમ કે એક ચોક્કસ ledger table પર SELECT કે UPDATE).

Quiz

જો User A એક table પર User B ને 'WITH GRANT OPTION' સાથે SELECT privilege આપે, અને પછી User A એ SELECT privilege User B પાસેથી પાછું ખેંચે, તો એ privilege સીધું User B પાસેથી મેળવનારા બીજા users (જેમ કે User C) નું શું થાય છે?

  1. User C ના પ્રવેશના privileges સંપૂર્ણપણે અસર વગર જળવાઈ રહે છે.
  2. આખું database instance એક CascadePrivilegeException error સાથે crash થાય છે.
  3. User C ના privileges પણ એક સાંકળ જેવી અસરમાં આપોઆપ પાછા ખેંચાય છે.
  4. User B પ્રવેશ જાળવે છે, પણ User C એ તરત ગુમાવે છે.
Show the answer

User C ના privileges પણ એક સાંકળ જેવી અસરમાં આપોઆપ પાછા ખેંચાય છે.

Standard relational database management systems માં, WITH GRANT OPTION વાપરીને privilege આગળ આપનાર user પાસેથી privilege પાછું ખેંચવાથી સાંકળ જેવું revocation થાય છે. કારણ કે User B એ User C ના અધિકારનો મૂળ સ્રોત હતો, એક વાર User B પ્રવેશ ગુમાવે, User C ના અધિકારો પણ આપોઆપ ઓગળી જાય છે.

Watch out

Classic ફાંદો: ખૂટતો Table Owner નો Prefix

University examinations માં એક સામાન્ય marks-ગુમાવતી ભૂલ એ ભૂલી જવું છે કે જ્યારે rahul_clerk જેવો એક user એક administrator કે બીજા user ની માલિકીના table ને query કરવા માંગે, ત્યારે એ માત્ર 'SELECT FROM library_books;' લખી શકતો નથી. આ એક 'Table or View does not exist' error ઊભી કરે છે! એમણે table ના નામ આગળ માલિકના username schema નો ઓળખકર્તા લગાડવો પડશે, જેમ કે 'SELECT FROM admin.library_books;'. Lab exams માં cross-user queries ચલાવતી વખતે હંમેશા schema માલિકનો prefix નિર્દિષ્ટ કરો!

Theory

Access Control ને Semester 3 સાથે જોડવા

બારીક user privileges સંભાળવાં એ વાસ્તવિક data security engineering નો પાયો બનાવે છે. Semester 3 Database Administration (BCA301) અને cloud infrastructure ના configurations માં, તમે આ પાયાના DCL સિદ્ધાંતોને Role-Based Access Control (RBAC) સુધી વિસ્તારશો, GRANT commands ના સમૂહોને એકીકૃત corporate ભૂમિકાઓ (જેમ કે Manager કે Developer) માં બાંધીને હજારો users ની મંજૂરીઓ સલામત રીતે સંભાળતાં.

Summary

Key takeaways

  • Data Control Language database ની સુરક્ષાનું નિયંત્રણ, user ના અધિકારના સ્તરો, અને privileges સંભાળે છે.
  • GRANT command user ખાતાંને ચોક્કસ system કે object સ્તરની કામગીરીની પરવાનગીઓ આપે છે.
  • REVOKE command પહેલાં સોંપાયેલા પ્રવેશના privileges એક user ના session પાસેથી સલામત રીતે પાછા ખેંચે છે.
  • Privileges વ્યાપક વહીવટી System privileges અને database object પર કેન્દ્રિત Object privileges માં વહેંચાયેલા છે.
  • WITH GRANT OPTION modifier users ને પોતાને મળેલા privileges પેટા-users સુધી સોંપવા દે છે.
  • Memory Hook: GRANT સુરક્ષિત દરવાજો ખોલે છે, REVOKE પ્રવેશ બંધ કરે છે, અને હંમેશા schema માલિકનો prefix લગાડો!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Introduction of Relational Model

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Data Control language: Grant, Revoke · Concepts of Relational Database Management Systems · Gri-Learn