Permisos de bases de dades de subvencions, revocacions i DENY
El llenguatge de control de dades (DCL) és un subconjunt del llenguatge de consulta estructurada (SQL) i permet als administradors de la base de dades configurar l'accés de seguretat a bases de dades relacionals. Complementa el llenguatge de definició de dades (DDL), que s'utilitza per afegir i eliminar objectes de base de dades, i el llenguatge de manipulació de dades (DML) utilitzat per recuperar, inserir i modificar els continguts d'una base de dades.
DCL és el més simple dels subconjunts de SQL , ja que només consta de tres ordres: CONCESSIÓ, REVOCA i DENY. Combinats, aquests tres comandaments proporcionen als administradors la flexibilitat per establir i eliminar els permisos de la base de dades d'una manera extremadament granular.
Addició de permisos amb el comandament GRANT
La comanda GRANT és utilitzada pels administradors per afegir nous permisos a un usuari de la base de dades . Té una sintaxi molt simple, definida de la següent manera:
CONCESSIÓ [privilegi] ON [object] TO [usuari] [AMB OPCIÓ DE SUBIDA]Aquí teniu el resum de cadascun dels paràmetres que podeu proporcionar amb aquesta comanda:
- Privilege pot ser la paraula clau ALL (per concedir una àmplia varietat de permisos) o un permís de base de dades específic o conjunt de permisos. Els exemples inclouen CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE i CREATE VIEW.
- L'objecte pot ser qualsevol objecte de base de dades. Les opcions de privació vàlides varien en funció del tipus d'objecte de base de dades que incloeu en aquesta clàusula. Normalment, l'objecte serà una base de dades, una funció, un procediment emmagatzemat , una taula o una vista.
- L'usuari pot ser qualsevol usuari de la base de dades. També podeu substituir un paper per l'usuari en aquesta clàusula si voleu fer servir la seguretat de la base de dades basada en funcions.
- Si inclou la clàusula opcional WITH GRANT OPTION al final de l'ordre GRANT, no només atorga a l'usuari especificat els permisos definits en la instrucció SQL, sinó que també dóna a l'usuari la possibilitat de concedir aquests mateixos permisos a altres usuaris de la base de dades. Per aquest motiu, utilitzeu aquesta clàusula amb compte.
Per exemple, suposem que voleu concedir a l'usuari Joe la possibilitat de recuperar informació de la taula d'empleats en una base de dades anomenada HR. Podeu utilitzar la següent comanda SQL:
SELECCIONAR LA SUBVENCIÓ A HR.employees TO JoeJoe ara tindrà la capacitat de recuperar informació de la taula dels empleats. No obstant això, no podrà concedir permís a altres usuaris per recuperar informació d'aquesta taula perquè no incloïa la clàusula WITH WITHOUT GRANT OPTION a la declaració GRANT.
Revocació de l'accés a bases de dades
La comanda REVOKE s'utilitza per eliminar l'accés a la base de dades d'un usuari anteriorment concedit. La sintaxi per a aquesta comanda es defineix de la manera següent:
REVOKE [GRANT OPTION FOR] [permís] ON [object] FROM [usuari] [CASCADE]Aquí teniu el resum dels paràmetres de la comanda REVOKE:
- El permís especifica els permisos de la base de dades per eliminar de l'usuari identificat. La comanda revoca ambdues assercions de GREU i DENY prèviament realitzades per al permís identificat.
- L'objecte pot ser qualsevol objecte de base de dades. Les opcions de privació vàlides varien en funció del tipus d'objecte de base de dades que incloeu en aquesta clàusula. Normalment, l'objecte serà una base de dades, una funció, un procediment emmagatzemat, una taula o una vista.
- L'usuari pot ser qualsevol usuari de la base de dades. També podeu substituir un paper per l'usuari en aquesta clàusula si voleu fer servir la seguretat de la base de dades basada en funcions.
- La clàusula OPTION FOR GRANT elimina la capacitat de l'usuari especificada de concedir el permís especificat a altres usuaris. Nota : Si incloeu la clàusula OPCIÓ DE CONCESSIÓ en una declaració REVOKE, el permís principal no es revoca. Aquesta clàusula revoca només la capacitat de concessió.
- L'opció CASCADE també revoca el permís especificat de qualsevol usuari que l'usuari especificat concedeixi el permís.
Per exemple, el següent comandament revoca el permís concedit a Joe en l'exemple anterior:
REVOCA SELECCIONA A HR.employees FROM JoeExcloent explícitament l'accés a la base de dades
L'ordre DENY s'utilitza per impedir explícitament que un usuari rebi un permís particular. Això és útil quan un usuari és membre d'un rol o grup al qual se li atorga un permís, i voleu impedir que aquest usuari herede el permís creant una excepció. La sintaxi d'aquesta comanda és la següent:
DENY [permission] ON [object] TO [user] Els paràmetres de la comanda DENY són idèntics als utilitzats per a la comanda GRANT.
Per exemple, si voleu assegurar-se que Matthew mai no rebrà la capacitat d'eliminar informació de la taula dels empleats, emet el següent comandament: