SQL లో వినియోగదారులు మరియు పాత్రలకు యాక్సెస్ నియంత్రణలు

సెక్యూరిటీ అనధికారిక బయటివారు మరియు వారి అధికారాన్ని అధిగమించడానికి ప్రయత్నించేవారికి యొక్క రహస్యంగా ఉన్న కళ్ళు నుండి కీలక వ్యాపార డేటా యొక్క వారి గిగాబైట్లను రక్షించడానికి కోరుతూ డేటాబేస్ నిర్వాహకులకు పారామౌంట్. అన్ని రిలేషనల్ డేటాబేస్ మేనేజ్మెంట్ సిస్టమ్లు ఈ బెదిరింపులను తగ్గించటానికి రూపొందించిన ఒక రకమైన అంతర్గత భద్రతా యంత్రాంగాలను అందిస్తాయి. ఒరాకిల్ మరియు మైక్రోసాఫ్ట్ SQL సర్వర్ వంటి అధునాతన రిలేషనల్ డేటాబేస్లచే మద్దతు ఇవ్వబడిన సంక్లిష్టమైన వినియోగదారు / పాత్ర నిర్మాణంకు మైక్రోసాఫ్ట్ యాక్సెస్ అందించే సాధారణ పాస్వర్డ్ రక్షణ నుండి ఇవి ఉంటాయి. ఈ వ్యాసం స్ట్రక్చర్డ్ క్వరీ లాంగ్వేజ్ (లేదా SQL ) అమలు చేసే అన్ని డేటాబేస్లకు సంబంధించిన భద్రతా యంత్రాంగాలపై దృష్టి పెడుతుంది. కలిసి, మేము డేటా యాక్సెస్ నియంత్రణలు బలోపేతం మరియు మీ డేటా భద్రత భరోసా ప్రక్రియ ద్వారా నడిచే చేస్తాము.

వినియోగదారులు

సర్వర్-ఆధారిత డేటాబేస్లు కంప్యూటర్ ఆపరేటింగ్ సిస్టమ్స్లో ఉపయోగించే వినియోగదారు భావనకు మద్దతు ఇస్తాయి. మీరు Microsoft Windows NT మరియు Windows 2000 లో కనిపించే యూజర్ / సమూహ సోపానక్రమంతో మీకు బాగా తెలిసి ఉంటే, SQL సర్వర్ మరియు ఒరాకిల్ మద్దతు ఇచ్చే యూజర్ / పాత్ర సమూహాలను చాలా పోలి ఉంటాయి.

మీ డాటాబేస్ను యాక్సెస్ చేసే ప్రతి వ్యక్తికి మీరు వ్యక్తిగత డేటాబేస్ యూజర్ ఖాతాలను రూపొందించాలని సిఫార్సు చేస్తారు. వినియోగదారుల మధ్య ఖాతాలను భాగస్వామ్యం చేయడం లేదా మీ డేటాబేస్ను ప్రాప్యత చేయడానికి అవసరమైన ప్రతి రకం యూజర్ కోసం ఒక వినియోగదారు ఖాతాను ఉపయోగించడం సాంకేతికంగా సాధ్యమవుతుంది, కానీ నేను రెండు కారణాల కోసం ఈ అభ్యాసాన్ని గట్టిగా నిరుత్సాహపరుస్తాను. మొదట, అది వ్యక్తిగత జవాబుదారీతనంను తొలగిస్తుంది-ఒక వినియోగదారుడు మీ డేటాబేస్లో మార్పు చేస్తే (తనకు $ 5,000 పెంచుకోవడం ద్వారా చెప్పండి), ఆడిట్ లాగ్లను ఉపయోగించడం ద్వారా మీరు ఒక నిర్దిష్ట వ్యక్తికి దానిని తిరిగి గుర్తించలేరు. అంతేకాక, ఒక నిర్దిష్ట వినియోగదారు మీ సంస్థను వదిలేస్తే మరియు మీరు డేటాబేస్ నుండి తన ప్రాప్యతను తీసివేయాలనుకుంటే, వినియోగదారులందరిపై ఆధారపడిన పాస్వర్డ్ను మీరు మార్చాలి.

వినియోగదారు ఖాతాలను రూపొందించే పద్ధతులు ప్లాట్ఫారమ్ నుండి ప్లాట్ఫాంకు మారుతుంటాయి మరియు మీరు ఖచ్చితమైన ప్రక్రియ కోసం మీ DBMS- నిర్దిష్ట డాక్యుమెంటేషన్ను సంప్రదించాలి. మైక్రోసాఫ్ట్ SQL సర్వర్ వినియోగదారులు sp_adduser నిల్వ విధానాన్ని ఉపయోగించడాన్ని పరిశోధించాలి. ఒరాకిల్ డేటాబేస్ నిర్వాహకులు CREATE USER కమాండ్ ఉపయోగకరంగా ఉంటారు. మీరు ప్రత్యామ్నాయ ప్రమాణీకరణ పథకాలను దర్యాప్తు చేయాలనుకోవచ్చు. ఉదాహరణకు, మైక్రోసాఫ్ట్ SQL సర్వర్ విండోస్ NT ఇంటిగ్రేటెడ్ సెక్యూరిటీను ఉపయోగించుకుంటుంది. ఈ పథకం కింద, వినియోగదారులు వారి Windows NT యూజర్ ఖాతాల ద్వారా డేటాబేస్కు గుర్తించబడతారు మరియు డేటాబేస్ను ప్రాప్తి చేయడానికి అదనపు యూజర్ ID మరియు పాస్వర్డ్ను నమోదు చేయవలసిన అవసరం లేదు. ఈ విధానం డేటాబేస్ నిర్వాహకులలో బాగా ప్రాచుర్యం పొందింది ఎందుకంటే ఇది ఖాతా నిర్వహణ యొక్క భారం నెట్వర్క్ నిర్వాహక సిబ్బందికి మారుతుంది మరియు అంతిమ వినియోగదారునికి ఒకే సైన్-ఇన్ యొక్క సౌలభ్యాన్ని అందిస్తుంది.

పాత్రలు

మీరు తక్కువ సంఖ్యలో ఉన్న వినియోగదారులతో పర్యావరణంలో ఉన్నట్లయితే, మీరు బహుశా వినియోగదారు ఖాతాలను సృష్టించడం మరియు నేరుగా వాటికి అనుమతులను కేటాయించడం మీ అవసరాలను సరిపోతుంది. అయినప్పటికీ, మీకు ఎక్కువ సంఖ్యలో వినియోగదారులు ఉంటే, ఖాతాలను నిర్వహించడం మరియు సరైన అనుమతుల యొక్క భారం ఎక్కువగా ఉంటుంది. ఈ భారం తగ్గించడానికి, సంబంధిత డేటాబేస్లు పాత్రల భావనను సమర్ధించాయి. డేటాబేస్ పాత్రలు Windows NT సమూహాలకు సమానంగా పనిచేస్తాయి. వాడుకరి ఖాతాలు పాత్ర (లు) కు కేటాయించబడతాయి మరియు అనుమతులను వ్యక్తిగత వినియోగదారు ఖాతాల కంటే మొత్తం పాత్రకు కేటాయించబడతాయి. ఉదాహరణకు, మేము ఒక DBA పాత్రను సృష్టించి, ఆపై మా నిర్వాహక సిబ్బంది యొక్క వినియోగదారు ఖాతాలను ఈ పాత్రకు చేర్చగలము. మేము దీనిని పూర్తి చేసిన తర్వాత, పాత్రకు అనుమతిని కేటాయించడం ద్వారా అన్ని ప్రస్తుత (మరియు భవిష్యత్తు) నిర్వాహకులకు మేము ఒక నిర్దిష్టమైన అనుమతిని కేటాయించవచ్చు. మరోసారి, పాత్రలు సృష్టించడం కోసం విధానాలు వేదిక నుండి ప్లాట్ఫాం మారుతుంది. MS SQL సర్వర్ నిర్వాహకులు sp_addrole నిల్వ విధానాన్ని పరిశోధించాలి, ఒరాకిల్ DBA లు CREATE ROLE సింటాక్స్ ను ఉపయోగించాలి.

అనుమతులు మంజూరు

ఇప్పుడు మేము మా డేటాబేస్కు వినియోగదారులను జోడించాము, ఇది అనుమతులను జోడించడం ద్వారా భద్రతను పటిష్టం చేయడానికే సమయం. మా మొదటి దశ మా వినియోగదారులకు తగిన డేటాబేస్ అనుమతులను మంజూరు చేస్తుంది. మేము SQL GRANT స్టేట్మెంట్ వాడకం ద్వారా దీనిని సాధించవచ్చు.

ప్రకటన యొక్క సింటాక్స్ ఇక్కడ ఉంది:

GRANT <అనుమతులు>
[పట్టికలో]
<వినియోగదారు / పాత్రకు
[GRANT OPTION తో]

ఇప్పుడు, ఈ ప్రకటన లైన్-బై-లైన్లో పరిశీలించండి. మొదటి పంక్తి, GRANT <అనుమతులు>, మేము మంజూరు చేసే నిర్దిష్ట పట్టిక అనుమతులను పేర్కొనడానికి అనుమతిస్తుంది. ఇవి పట్టిక-స్థాయి అనుమతులను (SELECT, INSERT, UPDATE మరియు DELETE వంటివి) లేదా డేటాబేస్ అనుమతులను (CREATE TABLE, ALTER DATABASE మరియు GRANT వంటివి) కావచ్చు. ఒక్క GRANT స్టేట్మెంట్లో ఒకటి కంటే ఎక్కువ అనుమతి మంజూరు చేయవచ్చు, కానీ టేబుల్-లెవల్ అనుమతులు మరియు డేటాబేస్-లెవల్ అనుమతులు ఒక్క ప్రకటనలో కలిపి ఉండకపోవచ్చు.

రెండవ పంక్తి, ఆన్ లైన్ లో

, టేబుల్-స్థాయి అనుమతుల కోసం ప్రభావిత పట్టికను సూచించడానికి ఉపయోగించబడుతుంది. మేము డేటాబేస్ స్థాయి అనుమతులను మంజూరు చేస్తే ఈ పంక్తి విస్మరించబడుతుంది. మూడవ లైన్ అనుమతులు మంజూరు చేయబడుతున్న యూజర్ లేదా పాత్రను నిర్దేశిస్తుంది.

చివరగా, నాల్గవ లైన్, GRANT OPTION తో, ఐచ్ఛికం. ఈ లైన్ ప్రకటనలో చేర్చబడితే, వినియోగదారుని ప్రభావితం చేసే వినియోగదారుడు ఇతర వినియోగదారులకు ఈ అదే అనుమతులను మంజూరు చేయడానికి కూడా అనుమతిస్తారు. ఒక పాత్రకు అనుమతులను కేటాయించినప్పుడు ఉన్న GRANT OPTION తో పేర్కొనబడలేదని గమనించండి.

ఉదాహరణలు

కొన్ని ఉదాహరణలు చూద్దాం. మా మొదటి దృష్టాంతంలో, ఇటీవల వినియోగదారుల రికార్డులను జోడించడం మరియు కొనసాగించే 42 డేటా ఎంట్రీ ఆపరేటర్ల బృందాన్ని నియమించారు. వారు కస్టమర్లు పట్టికలో సమాచారాన్ని యాక్సెస్ చేయగలరు, ఈ సమాచారాన్ని సవరించగలరు మరియు పట్టికకు కొత్త రికార్డులను చేర్చగలరు. వారు డేటాబేస్ నుండి రికార్డును పూర్తిగా తొలగించలేరు. మొదట, మేము ప్రతి ఆపరేటర్కు యూజర్ ఖాతాలను సృష్టించాలి, ఆపై వాటిని అన్నింటినీ ఒక కొత్త పాత్రకు చేర్చండి, DataEntry. తరువాత, వాటిని సరైన అనుమతులను మంజూరు చేయటానికి క్రింది SQL స్టేట్మెంట్ వాడాలి:

GRANT SELECT, INSERT, UPDATE
వినియోగదారులపై
డేటా ఎన్టైర్కు

మరియు అది అన్ని ఉంది! ఇప్పుడు మనము డేటాబేస్-స్థాయి అనుమతులను కేటాయించే కేస్ ను పరిశీలించండి. మేము మా డేటాబేస్కు కొత్త పట్టికలను చేర్చడానికి DBA పాత్ర సభ్యులను అనుమతించాలనుకుంటున్నాము. అంతేకాకుండా, ఇతర వినియోగదారులకు ఇదే విధంగా అనుమతిని మంజూరు చేయాలని మేము కోరుకుంటున్నాము. ఇక్కడ SQL స్టేట్మెంట్:

పట్టికను సృష్టించండి
DBA కు
GRANT OPTION తో

మా DBA లు ఇతర వినియోగదారులకు ఈ అనుమతిని కేటాయించవచ్చని నిర్ధారించడానికి మేము GRANT OPTION లైన్తో సహా చేర్చామని గమనించండి.

అనుమతులు తొలగించడం

ఒకసారి మేము అనుమతులను మంజూరు చేసిన తర్వాత, వాటిని తరువాతి రోజున రద్దు చేయవలసిన అవసరం ఉంది. అదృష్టవశాత్తూ, SQL మాకు గతంలో మంజూరు అనుమతులు తొలగించడానికి REVOKE ఆదేశం అందిస్తుంది. సింటాక్స్ ఇక్కడ ఉంది:

REVOKE [అనుమతి ఇవ్వండి] <అనుమతులు>

లో
నుండి

ఈ కమాండ్ యొక్క వాక్యనిర్మాణం GRANT కమాండ్ యొక్క మాదిరిని మీరు గమనించవచ్చు. మాత్రమే వ్యత్యాసం GRANT OPTION తో కమాండ్ ముగింపులో కాకుండా REVOKE కమాండ్ లైన్ లో పేర్కొన్న ఉంది. ఉదాహరణకు, వినియోగదారుల డేటాబేస్ నుండి రికార్డులను తీసివేయడానికి మేరీ యొక్క గతంలో మంజూరు చేసిన అనుమతిని ఉపసంహరించాలని మేము కోరుకుంటున్నాం. మేము కింది ఆదేశాన్ని ఉపయోగించుకుంటాము:

REVOKE DELETE
వినియోగదారులపై
మేరీ నుండి

మరియు అది అన్ని ఉంది! మైక్రోసాఫ్ట్ SQL సర్వర్ మద్దతు ఇచ్చే మరొక అదనపు మెకానిజం ఉంది-అది DENY ఆదేశం. ఈ కమాండ్ ఒక వినియోగదారుకు ప్రస్తుత లేదా భవిష్యత్ పాత్ర సభ్యత్వాన్ని కలిగి ఉండటానికి అనుమతిని స్పష్టంగా తిరస్కరించడానికి ఉపయోగించబడుతుంది. సింటాక్స్ ఇక్కడ ఉంది:

DENY <అనుమతులు>

లో
<వినియోగదారు / పాత్రకు

ఉదాహరణలు

మా మునుపటి ఉదాహరణకి తిరిగి రావడమే మేరీ మేనేజర్ పాత్రలో సభ్యునిగా కూడా ఉంది, అది వినియోగదారుల పట్టికకు కూడా అందుబాటులో ఉంది. మునుపటి REVOKE స్టేట్మెంట్ పట్టికకు ఆమె యాక్సెస్ను తిరస్కరించడానికి సరిపోదు. ఇది తన యూజర్ ఖాతాను లక్ష్యంగా చేసుకున్న GRANT స్టేట్మెంట్ ద్వారా ఆమెకి అనుమతిని తీసివేస్తుంది, అయితే నిర్వాహకుల పాత్రలో ఆమె సభ్యత్వం ద్వారా పొందిన అనుమతులను ప్రభావితం చేయదు. అయినప్పటికీ, మేము ఒక డెని ప్రకటనను వాడుతుంటే, అది అనుమతి యొక్క వారసత్వాన్ని నిరోధిస్తుంది. కమాండ్ ఇక్కడ ఉంది:

డెన్ డెలీట్
వినియోగదారులపై
మేరీకి

DENY ఆదేశం తప్పనిసరిగా డేటాబేస్ యాక్సెస్ నియంత్రణలో ఒక "ప్రతికూల అనుమతి" సృష్టిస్తుంది. కస్టమర్ల పట్టిక నుండి వరుసలను తీసివేయడానికి మేరీ అనుమతి ఇవ్వాలని మేము నిర్ణయించుకుంటే, మేము కేవలం GRANT ఆదేశాన్ని ఉపయోగించలేము. ఆ ఆదేశం వెంటనే DENY చేత భర్తీ చేయబడుతుంది. బదులుగా, మేము మొదట ప్రతికూల అనుమతి ఎంట్రీని తొలగించడానికి REVOKE కమాండ్ను ఉపయోగించాము:

REVOKE DELETE
వినియోగదారులపై
మేరీ నుండి

సానుకూల అనుమతిని తీసివేయడానికి ఉపయోగించిన ఈ ఆదేశం సరిగ్గా అదే అని మీరు గమనించవచ్చు. DENY మరియు GRANT ఇద్దరూ ఒకే పనిలో రెండు పనిని ఆదేశించారని గుర్తుంచుకోండి; వారు రెండు డేటాబేస్ యాక్సెస్ కంట్రోల్ మెకానిజంలో అనుమతులను సృష్టించడం (సానుకూల లేదా ప్రతికూల). REVOKE కమాండ్ పేర్కొన్న వినియోగదారునికి అన్ని అనుకూల మరియు ప్రతికూల అనుమతులు తొలగిస్తుంది. ఈ ఆదేశం జారీ అయిన తర్వాత, ఆ అనుమతి ఉన్న పాత్రలో ఆమె సభ్యురాలిగా ఉన్నట్లయితే మేరీ పట్టిక నుండి వరుసలను తొలగించగలుగుతుంది. ప్రత్యామ్నాయంగా, ఆమె ఖాతాకు నేరుగా అనుమతిని అందజేయడానికి GRANT ఆదేశం జారీ చేయబడుతుంది.

ఈ ఆర్టికల్ కాలక్రమంలో, ప్రామాణిక ప్రశ్న భాషను మద్దతు ఇచ్చే యాక్సెస్ కంట్రోల్ మెకానిజం గురించి మీరు ఒక మంచి ఒప్పందాన్ని నేర్చుకున్నారు. ఈ పరిచయం మీకు మంచి ప్రారంభ స్థానం కల్పించాలి, కాని మీ సిస్టమ్ ద్వారా మద్దతు ఉన్న మెరుగైన భద్రతా చర్యలను తెలుసుకోవడానికి మీ DBMS డాక్యుమెంటేషన్ను ప్రస్తావించమని నేను మిమ్మల్ని ప్రోత్సహిస్తాను. మీరు అనేక డేటాబేస్లు నిర్దిష్ట నిలువు వరుసలలో అనుమతులను మంజూరు చేయడం వంటి మరింత ఆధునిక యాక్సెస్ నియంత్రణ విధానాలకు మద్దతిస్తారని మీరు తెలుసుకుంటారు.