Permisos de base de admisión, revogación e DENY
O linguaxe de control de datos (DCL) é un subconxunto do linguaxe de consulta estruturada (SQL) e permite aos administradores da base de datos configurar o acceso de seguridade ás bases de datos relacionales. Complementa o Idioma de definición de datos (DDL), que se usa para engadir e eliminar obxectos de base de datos, eo Idioma de manipulación de datos (DML) usado para recuperar, inserir e modificar os contidos dunha base de datos.
DCL é o máis simple dos subconxuntos de SQL , xa que consta de só tres comandos: CONCERTO, REVOCAR e DENY. Combinados, estes tres comandos proporcionan aos administradores a flexibilidade para configurar e eliminar os permisos da base de datos dunha forma extremadamente granular.
Engadir permisos co comando GRANT
O comando GRANT é usado por administradores para engadir novos permisos a un usuario da base de datos . Ten unha sintaxe moi sinxela, definida do seguinte xeito:
CONCELLO [privilexio] ON [obxecto] A [usuario] [CON OPCIÓN DE SUBIDA]Aquí está o resumo de cada un dos parámetros que pode fornecer con este comando:
- O privilexio pode ser a palabra clave ALL (para conceder unha gran variedade de permisos) ou un permiso de base de datos específico ou conxunto de permisos. Exemplos inclúen CREATE DATABASE, SELECT, INSERT, ACTUALIZACIÓN, BORRAR, EXECUCIÓN e CREAR VIEW.
- O obxecto pode ser calquera obxecto de base de datos. As opcións de privilexio válidas varían en función do tipo de obxecto de base de datos que inclúe nesta cláusula. Normalmente, o obxecto será unha base de datos, función, procedemento almacenado , táboa ou vista.
- O usuario pode ser calquera usuario da base de datos. Tamén pode substituír un papel para o usuario nesta cláusula se desexa usar a seguridade da base de datos baseada en roles.
- Se inclúe a cláusula opcional WITH GRANT OPTION ao final do comando GRANT, non só concede ao usuario especificado os permisos definidos na instrución SQL, senón que tamén lle permite ao usuario conceder eses mesmos permisos a outros usuarios da base de datos. Por este motivo, use esta cláusula con coidado.
Por exemplo, supoña que desexa conceder ao usuario Joe a capacidade de recuperar información da táboa empregados nunha base de datos chamada RH. Podes usar o seguinte comando SQL:
CONCELLO SELECCIONAR EN HR.employees TO JoeJoe agora terá a capacidade de recuperar información da mesa de empregados. Non poderá, con todo, permitir o permiso doutros usuarios para recuperar información desa táboa porque non incluía a cláusula WITH WITHOUT GRANT OPTION na declaración GRANT.
Revogando o acceso á base de datos
O comando REVOKE úsase para eliminar o acceso á base de datos dun usuario que anteriormente concedeu tal acceso. A sintaxe para este comando defínese como segue:
REVOCE [GRANT OPTION FOR] [permiso] ON [obxecto] FROM [usuario] [CASCADE]Aquí está o resumo dos parámetros para o comando REVOKE:
- O permiso especifica os permisos da base de datos para eliminar do usuario identificado. O comando revoca as afirmacións de GRANT e DENY previamente realizadas para o permiso identificado.
- O obxecto pode ser calquera obxecto de base de datos. As opcións de privilexio válidas varían en función do tipo de obxecto de base de datos que inclúe nesta cláusula. Normalmente, o obxecto será unha base de datos, función, procedemento almacenado, táboa ou vista.
- O usuario pode ser calquera usuario da base de datos. Tamén pode substituír un papel para o usuario nesta cláusula se desexa usar a seguridade da base de datos baseada en roles.
- A cláusula OPTION FOR GRANT elimina a capacidade do usuario especificado para conceder o permiso especificado a outros usuarios. Nota : Se inclúe a cláusula OPCIÓN DE SUBIDA para unha declaración REVOKE, o permiso principal non se revoca. Esta cláusula revoca só a capacidade de concesión.
- A opción CASCADE tamén revoca o permiso especificado de calquera usuario que o usuario especificado concedeu o permiso.
Por exemplo, o comando seguinte revoca o permiso concedido a Joe no exemplo anterior:
REVOCE SELECCIONAR EN HR.employees FROM JoeExplicitamente negando o acceso á base de datos
O comando DENY úsase para impedir explícitamente que un usuario reciba un permiso particular. Isto é útil cando un usuario é membro dun rol ou grupo ao que se lle outorga un permiso e quere evitar que ese usuario individual herda o permiso creando unha excepción. A sintaxe para este comando é a seguinte:
DENY [permission] ON [object] TO [user] Os parámetros para o comando DENY son idénticos aos empregados para o comando GRANT.
Por exemplo, se desexa garantir que Matthew nunca recibirá a capacidade de eliminar información da táboa de empregados, emita o seguinte comando: