Zougangskontrollen fir Benotzer a Rollen op SQL

Sécherheet ass primär fir Datenbankadministratoren, déi hir Gigabytes vu vitalen Aarbechtsdaten aus den Auteuren vun net autoriséiert Ausgrenzern schützen an Insider versichen d'Autoritéit ze iwwerschreiden. All relational Datenbankmanagementsysteme stellen e puer intrinsesch Sécherheetsmechanismen virgesinn fir dës Gefore ze minimiséieren. Si reegelen vun der einfachen Passwuert Schutz vun Microsoft Access an déi komplexe Benotzer / Roll Struktur, déi duerch fortgeschratt Relatiounen vu Datenbanken wéi Oracle a Microsoft SQL Server ënnerstëtzt gëtt. Dësen Artikel konzentréiert sech op déi Sécherheetsmechanismen déi all Datebase sinn déi déi Strukturéiert Query Language (oder SQL ) implementéieren. Zesumme ginn mir duerch de Prozess vun der Gestioun vun den Daten zougänglech Kontroll a fir d'Sécherheet vun Är Donnéeën ze garantéieren.

Benotzer

Serverbaséiert Datenbanken ënnerstëtzen all e Benotzerkonzept deen ähnlech wéi bei Computer-Betriebssystemen benotzt gëtt. Wann Dir d'Benotzer / Grupp Hierarchie vertraut, déi an Microsoft Windows NT an Windows 2000 fonnt gi sinn, fannt dir datt d'Benotzer / Roll Gruppéiere vu SQL Server an Oracle ënnerstëtzt sinn ganz ähnlech.

Et ass recommandéiert datt Dir individuell Datenbanknutzerkonten fir jiddereen ze schreiwen, deen op Äre Datebank kënnt. Et ass technesch méiglech Accès op de Benotzer ze verbreeden oder einfach een Userkonto fir all Typ vun Benotzer ze benotzen déi op Äre Datebank zougitt, mee ech soen dës Praxis staark aus zwou Grënn. Eischtens, wäert et individuell Verantwortung eliminéieren - wann e Benotzer eng Verännerung vun Ärer Datebank mécht (lass eis soen, datt hien eng $ 5.000 erhéijen), kënnt Dir se net op eng spezifesch Persoun zeréckkucken andeems Dir d'Audit-Protokollen benotzt. Ausserdeem, wann e spezifesche Benotzer Är Organisatioun verléisst an Dir wëllt säin oder hier Zougank aus der Datebank wiele wëllt, musst Dir de Passwuert änneren, dat all Benotzer verléisst.

D'Methoden fir d'Benotzerkonten z'ënnerstëtzen variéieren vun der Plattform bis op Plattform. Dir musst Är DBMS-spezifesch Dokumentatioun fir dës genee Prozedur consultéieren. Microsoft SQL Server Benotzer sollen d'Benotzung vun der sp_adduser stored Prozedur erméiglecht. Oracle Datebankadministratioun fënnt de Kommando CREATE USER nëtzlech. Dir wëllt och alternative Methoden fir d'Authentifikatioun unhand huelen. Zum Beispill ënnerstëtzen Microsoft SQL Server d'Benotzung vun Windows NT Integrated Security. Ënnert dem Schema sinn Benotzer an d'Datebank identifizéiert duerch seng Windows NT Benotzerkonten a ginn net fir eng Additional User ID a Passwuert fir d'Datebank ze kréien. Dës Approche ass extrem populär bei den Dateebesëtzer, well se d'Belaaschtung vum Accountmanagement op den Personalverwaltungsverloscht verschéckt an et erméiglecht de eenzegen Zeechen op de Endbenutzer.

Rollen

Wann Dir an engem Ëmfeld mat enger klenger Zuel vu Benotzer sidd, kënnt Dir wahrscheinlech datt d'Benotzerkonten erstellen an d'Permissiounen direkt un hinnen zegutt sinn fir Äert Bedürfnisser. Wann Dir eng grouss Zuel vu Benotzer hutt, kënnt Dir wahrscheinlech d'Belaaschtung fir Konten a korrekte Rechter ze iwwerwältegt ginn. Fir dës Laascht ze maachen, sinn relational Datenbanken d'Begrëff vun Rollen. Datebank Rollen funktionnéieren ähnlech wéi Windows NT Gruppen. Benotzerkonten ginn zu Rôle (n) uginn an d'Rechter ginn doduerch zu der Rôl als Ganzt anstatt den eenzelne Benotzerkonten. Zum Beispill kënne mir eng DBA Rôle erstellen an dann d'Benotzerkonten vun eise Verwaltungspersonal fir dës Roll spillen. Nodeems mir dat gemaach hunn, kënne mir all existent (an zukunftsweis) Administrateuren eng spezifesch Ermëttlung ze verëffentlechen, andeems Dir einfach d'Autorisatioun vun der Rôle ass. Eemol erëm, d'Prozedere fir d'Schafe vun Rollen schwätzt vun der Plattform op Plattform. MS SQL Server Administrateuren sollen d'Spuede gespäichert Prozedur erméiglecht, wann Oracle DBAs d'Syntax CREATE ROLL benotzen.

Granting Permissions

Elo datt mir Benotzer fir eis Datebank doduerch sinn, ass et Zäit, fir d'Sécherheet ze stäerken andeems si Permissiounen ergänze. Eist éischte Schrëtt ass fir e Benotzer déi passende Datebank z'erreechen. Mir maachen dat duerch d'Benotzung vun der SQL GRANT Ausso.

Hei ass d'Syntax vun der Erklärung:

GRANT
[ON

]

[MAT GRANT OPTION]

Elo kucke mer op dës Ausso ze kucken. Déi éischt Zeil, GRANT , erméiglecht eis spezifesch Dëscher Rechter ze kréien déi mir gewähren. Dës kënnen entweder Tabellen-Permissiounen (z. B. SELECT, INSERT, UPDATE a DELETE) oder Datebeschutz (z. B. CREATE TABLE, ALTER DATABASE a GRANT) sinn. Méi wéi eng Autorisatioun kann an enger eenzeger GRANT deklaratioun gewielt ginn, awer Table-Level-Berechtigungen an Datebank-Permissiounen kënne eventuell net an enger eenzeger Erklärung kombinéiert ginn.

Déi zweet Zeil, ON

, gëtt benotzt déi bezeechent Dësch fir Toleratioune vum Table-Level. Dës Linn gëtt weg, wann mir d'Datebank-Permissiounen erlaben. Déi drëtt Linn spezifizéiert de Benotzer oder d'Roll, déi Rechter kritt gëtt.

Endlech ass d'véiert Linn, mat GRANT OPTION, optional. Wann dës Linn an der Erklärung integréiert ass, gëtt de Benotzer och bemannt datt dës selwecht Rechter mat aneren Benotzer gewielt ginn. Bedenkt datt d'WITH GRANT OPTION net spezifizéiert ginn wann d'Permissiounen an eng Roll zougewisen ginn.

Beispiller

Loosst eis e puer Beispiller kucken. Am éischte Szenario hu mir zënter kuerzem eng Gruppe vu 42 Dateneingriffsbetreiber agestallt, déi d'Cliente Rekommandatioune dobäigesat ginn an ze behaalen. Si brauche fir Zougang zu Informatiounen an der Tabell vun der Cliente ze kréien, dës Informatioun ze änneren an nei Tabellen ze addéieren. Si däerfen net an der Lag sinn, e Rekord vun der Datebank ganz komplett ze läschen. Als éischt musse mir Benotzeraccounts fir all Operatioun erstellen an dann all se op eng nei Roll spillen, DataEntry. Nees, mir sollten déi folgend SQL-Äusserung benotzen fir hinnen déi entspriechend Erléisungen ze gewähren:

GRANT SELECT, INSERT, AKTUELL
ON Clienten
MAT DataEntry

An dat ass alles drun! Loosst eis elo e Fall wou mir d'Datebank-Permissiounen uginn. Mir wëllen Memberen vun der DBA-Roll spillen, fir nei Dëscher nei Tabellen ze addéieren. Ausserdeem wëlle mir datt se aner Benotzer erlaben d'Erlaabnis d'selwecht ze maachen. Hei ass d'SQL-Ausso:

GRANT CREATE TABLE
DBA
MAT GRANT OPTIOUNS

Remarkéiert datt mir d'MIT GRANT OPTION Zeil ugebuede goufen, fir datt DBAs kënnen dës Erlaabnes fir anere Benotzer zouweisen.

Äer Permissiounen z'änneren

Nodeems mir d'Permissiounen erlaabt hunn, ass et oft erwisen, datt se se op e spéideren Datum zréckzéien. Glécklech, SQL bitt eis mat dem Befehl REVOKE fir virdru gewéinte Permissiounen ze läschen. Hei ass d'Syntax:

REVOKE [GRANT OPTION FÜR]
ON
FROM

Dir kënnt feststellen datt d'Syntax vun dësem Kommando wéi d'vum Befehl GRANT ähnlech ass. De eenzegen Ënnerscheed ass datt mat GRANT OPTION op der Kommandozeilung REVOKE anstatt am Enn vum Kommando spezifizéiert gëtt. Als Beispill, loosse mer Iech virstellen datt mir d'Mariage virdrun d'Autorisatioun vun der Datebank vum Client ofgeschaaft hunn. Mir benotze de nächste Kommando:

REVOKE DELETE
ON Clienten
AUS Maria

An dat ass alles drun! Et gëtt een zousätzlech Mechanismus, dat vu Microsoft SQL Server ënnerstëtzt gëtt, deen et wäert ass ze ernimmen - den DENY Kommando. Dëst Kommando kann benotzt ginn fir explizit d'Erlaabnes fir engem Benotzer ze verweigeren datt se soss an enger aktueller oder zukënfteger Roll spillen. Hei ass d'Syntax:

DENY
ON

Beispiller

Wéi zréck an eise viregten Beispill, lass Iech virstellen, datt d'Maria och Member vun der Roll vum Manager war, déi och zougänglech zu der Clienter Dësch war. Déi fréier REVOKE Ausso géif net genuch sinn fir hir Zougang op den Dësch ze verweigeren. Et géif d'Autorisatioun vun der Autorisatioun vun der GRANT deklaréiert ginn, déi hir Benotzerkonto opgeriicht huet, awer géifen net déi Rechter hunn, déi duerch hir Memberschaft an de Rôle de Manageren gewonnen hunn. Awer wann mir en DENY Ausso gebrauchen, wäert d'Ierfschaft vun der Erlaabnis blockéieren. Hei ass de Kommando:

DENY DELETE
ON Clienten
Maria

D'Commandatioun DENY erënnert wesentlech eng "negativ Erlaabnes" an der Datebankkontrollen. Wa mir spéider decidéieren datt d'Maria Erlaabnes fir Rei vun Zeeche vun der Client-Tabelle ze räissen, kënne mir net einfach de Befehl GRANT benotzen. Dëst Kommando wier direkt vun der existéierenden DENY iwwerdréit. Mir benotze fir d'éischt de Befehle REVOKE fir den negativen Zougangszeechen ze fuehren:

REVOKE DELETE
ON Clienten
AUS Maria

Dir kënnt feststellen datt dësen Kommando genau déiselwecht ass wéi déi benotzt fir eng positiv Erlaabnes ze entfernen. Vergiess datt d'DENY an GRANT Kommandë souwuel an ähnlecher Art a mdash schaffen, sie erreeegen Äert Permissiounen (positiv oder negativ) am Datebank Zougangskontrollmechanismus. De Befehl REVOKE remutéiert all Positiv an aner Permissiounen fir de spezifizéierte Benotzer. Wann dës Kommando erauskomm ass, kann Maria d'Reegelen aus dem Dësch leeën, wann se Member vun enger Roll ass, déi d'Autorisatioun kritt. Alternativ kann e Befehl GRANT verëffentlecht ginn, fir d'DELETE Zouloossung direkt op hirem Kont ze stellen.

Während dem Laf vum Artikel fannt Dir e gudde Deal iwwer d'Zougangskontrollmechanisme, déi vun der Standard Query Language ënnerstëtzt ginn. Dës Ufro sollt Dir mat engem gudde Startpunkt proposéieren, mee ech encouragéieren Iech fir Är DBMS-Dokumentatioun ze referenzéieren fir d'erhaalte Sécherheetsmoossnamen z'ënnerstëtzen, déi vun Ärem System ënnerstëtzt ginn. Dir fannt dat vill Datenbanken méi fortgeschéckt Zougangskontrollmechanismus ënnerstëtzen, wéi zousätzlech Permissiounen op spezifesch Säiten.