Laboratorion8sql Seguridad
Laboratorion8sql Seguridad
Laboratorion8sql Seguridad
SEGURIDAD
Para crear un usuario, debemos realizar los siguientes pasos: Crear el usuario asignndole una cuenta de inicio de sesin. Asignar el usuario a una base de datos y darle permiso de acceso a ella Asociar el usuario a una funcin de usuario la cul contiene unos determinados permisos para acceder a la base de datos.
Cuando un usuario se conecta a un servidor, lo hace a travs de una cuenta facilitada por el administrador de la base de datos. Esta cuenta tiene una serie de permisos que el administrador da, estos permisos pueden ser de restriccin a determinadas tablas, o por ejemplo que un usuario pueda solo insertar, o seleccionar en determinadas tablas.
Existen dos formas de entrar a la base de datos, bien mediante el usuario de windows nt 2000, mediante el usuario de la base de datos. Mediante el usuario de windows, facilitamos al equipo desde el que nos conectamos, los recursos del servidor de sql server, pudiendo incluso bloquear el equipo desde el que se conecta el usuario.
Para que un usuario tenga acceso a una base de datos, despus de crearle una cuenta de inicio de sesin, y asocirsela a una base de datos, hemos de darle permisos para que pueda acceder a esa base de datos. Posteriormente, mediante funciones le indicaremos que es lo que puede hacer en esa base de datos. Puede tener permisos para una base de datos o para todo el servidor.
Funciones
Agrupamos usuarios y sobre estos usuarios daremos permisos a ese grupo de usuarios. Las funciones de usuario, se usan para establecer los permisos que un grupo de usuario tendr sobre una determinada base de datos. Una vez creado el usuario, y asignada la base de datos, podemos asociar este usuario a la funcin que queramos para controlar los permisos que tiene sobre la base de datos asignada.
Crear un usuario
Para crear un usuario y poder usarlo, hemos de establecer todos los pasos descritos en los puntos anteriores. Estos pasos, los realizaremos todos en el analizador de consultas:
Ejemplo 155
1. Creamos el inicio de sesin del usuario.
SP_ADDLOGGIN Crea una cuenta de inicio para un usuario y lo asigna a una base de datos. Sintaxis:
SP_DROPLOGIN
Borra una cuenta de inicio de un usuario, siempre y cuando el usuario no est conectado y no tenga permisos sobre ninguna base de datos (si los tiene hemos de revocarlos antes de borrar la cuenta de inicio y el usuario) Sintaxis:
SP_DROPLOGIN 'Usuario'
Nota: Si el usuario tiene permisos asignados sobre una base de datos, debemos quitar primero esos permisos antes de borrarlo, ya que sino dar error al intentarlo.
Ejemplo 156
2. Asignamos permisos al usuario sobre la base de datos que queramos
SP_GRANTDBACCESS
3.
Para ello usaremos el procedimiento almacenado de sistema SP_GRANTDBACCESS. Sintaxis: SP_GRANTDBACCESS Usuario
Si queremos revocar estos permisos al usuario, usaremos el procedimiento almacenado de sistema SP_REVOKEDBACCESS. Sintaxis: SP_REVOKEDBACCESS Usuario Es decir en este caso sera:
4.
Una vez en el analizador de consultas, solo tendremos acceso a la base de datos asociada al usuario y las bases de datos de ejemplo.
5.
Una vez realizado esto, vemos que en el apartado Funciones de la base de datos, est la funcin creada, si hacemos doble click sobre ella, vemos que no tiene usuarios asignados:
Ejemplo 157
GRANT INSERT, UPDATE, DELETE ON clientes To Becarios
Tambin podemos establecer permisos directamente sobre los usuarios, poniendo el nombre de estos en lugar de la funcin.
Ejemplo 158
GRANT INSERT, UPDATE, DELETE ON clientes To Pepe, Pepa
Ejemplo 159
DENY SELECT ON clientes TO Becarios
Sintaxis:
Ejemplo 160
REVOKE UPDATE On clientes to Becarios
Para asociar un usuario a una funcin usaremos el procedimiento almacenado de sistema SP_ADDROLEMEBER. Sintaxis: SP_ADDROLEMEMBER Funcin, Usuario
Ejemplo 161
EXEC SP_ADDROLEMEMBER 'Becarios', 'Pepe' 'Pepe' agregado a la funcin 'Becarios'.
Una vez realizados estos pasos, si entramos en el analizador de consultas con el usuario Pepe, si intentamos realizar una consulta no permitida, nos advertir mediante un mensaje que no podemos realizar la consulta:
Para eliminar un usuario de una funcin, usaremos el procedimiento almacenado de sistema SP_DROPROLEMEMBER. Sintaxis: SP_DROPROLEMEMBER Funcin, Usuario Es decir en este caso sera:
Ejemplo 162
EXEC SP_DROPROLEMEMBER 'Becarios', 'Pepe' 'Pepe' quitado de la funcin 'Becarios'.
Una vez tengamos la funcin sin usuarios asignados, podremos borrarla, para borrarla usaremos el procedimiento almacenado de sistema SP_DROPROLE. Sintaxis: SP_DROPROLE Funcin En este caso sera:
Ejemplo 163
EXEC SP_DROPROLE Becarios Funcin quitada.
SP_ADDSRVROLEMEMBER Aade a una funcin de sistema el usuario que queramos. Sintaxis: SP_ADDSRVROLEMEMBER 'Usuario','Funcion'
Ejemplo 164
EXEC SP_ADDSRVROLEMEMBER 'Pepe','DbCreator' SP_ADDSRVROLEMEMBER 'PEPE','DBCREATOR'
Ejemplo 165
EXEC SP_ADDSRVROLEMEMBER 'Pepe','DbCreator' 'PEPE' quitado de la funcin 'DBCREATOR'. Otro mtodo que tenemos para poder ofrecer permisos es con la opcin With Grant Option
Con esta opcin despus de la sentencia de conceder derechos, permito al usuario al que estoy concediendo permisos pueda conceder permisos a su vez sobre los privilegios que se le han otorgado.
Sintaxis:
Grant Select, Insert, Update, Delete On Tabla / Vista To Usuario / Funcion With Grant Option
Ejemplo:
Un administrador concede permisos a Pepe para poder hacer selecciones sobre la tabla Clientes. Usuario Administrador
Ejemplo 166
Grant Select On clientes To Pepe With Grant Option
Este usuario podr a su vez conceder permisos a otro usuario sobre sus privilegios, es decir, sobre la tabla emp y solamente con Select.
Usuario Pepe
Ejemplo 167
Grant Select On Clientes To Luisa
La cadena termina aqu, ya que Pepe no ha concedido permisos a Luisa para que pueda conceder permisos a su vez. Si el administrador revocase los permisos Select a Pepe, estos permisos se revocan a su vez sobre el usuario Luisa, ya que no tiene permisos de nadie ms para ver la Tabla. Otra opcin es que el usuario Pepe conceda permisos a Luisa pero solamente sobre unos determinados campos.
Ejemplo 168
Grant Select (Emp_no, Apellido, Fecha_alt, Dept_no) On Clientes To Luisa
Esto se puede utilizar tambin pero sera ms conveniente utilizar una Vista.
10