Sunteți pe pagina 1din 15

Seguridad de Bases de Datos

Ing. Ronald Prez

rrperez@unimet.edu.ve rperez@shopepk.com ronaldperezr@hotmail.com

Administracin de Bases de Datos

mbito del permiso

Los permisos se conceden en un asegurable que puede ser una base de datos, un esquema o un objeto.

Esto crea una estructura jerrquica permisos en una base de datos.

de

Administracin de Bases de Datos

mbito del permiso


Los permisos que se pueden conceder son los siguientes:

SELECT INSERT UPDATE DELETE EXECUTE REFERENCES CONTROL ALTER VIEW DEFINITION

Administracin de Bases de Datos

Sintaxis GRANT
GRANT { ALL [ PRIVILEGES ] } | permission [ ( column [ ,...n ] ) ] [ ,...n ] [ ON [ class :: ] securable ] TO principal [ ,...n ] [ WITH GRANT OPTION ] [ AS principal ]

Administracin de Bases de Datos

Sintaxis REVOKE
REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] | permission [ ( column [ ,...n ] ) ] [ ,...n ] } [ ON [ class :: ] securable ] { TO | FROM } principal [ ,...n ] [ CASCADE] [ AS principal ]

Administracin de Bases de Datos

Diseo de triggers DDL


El objetivo principal de los triggers DDL es auditar y regular acciones realizadas en una base de datos. Esto hace que se restrinjan las operaciones DDL Incluso aunque un usuario tenga permiso para ejecutar el comando DDL. Sintaxis general:
CREATE TRIGGER <trigger_name, sysname, table_alter_drop_safety> ON DATABASE FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE> AS BEGIN ... END
Administracin de Bases de Datos

Triggers DDL
Los triggers se disparn en respuesta a los eventos DDL que ocurren en el servidor, tales como crear, modificar o eliminar un objeto. El objetivo principal de los triggers DDL es proporcionar un medio adicional de seguridad as como auditar comandos DDL emitido contra la base de datos.

Administracin de Bases de Datos

Estrategias de seguridad
Uso de vistas y funciones Dar permisos a vistas y funciones en lugar de las propias tablas Ocultan la complejidad de la BD Permiten gestionar el acceso a nivel de columna
Uso de procedimientos almacenados Impiden operaciones incorrectas asegurando las reglas de negocio Los usuarios no necesitan tener permiso para acceder a las tablas, solo permiso de ejecucin de los procedimientos

Permiten establecer el nivel de seguridad ms fino (contexto) Administracin de Bases de Datos

Encriptacin de datos

para qu? Evitar acceso a datos sensibles Evitar robo de copias de seguridad con datos sensibles
qu tcnicas? Encriptacin a nivel de columna Encriptacin transparente, afecta a toda la BD coste? Mayor sobrecarga y puede afectar al rendimiento Requiere una estrategia para la definicin y mantenimiento de claves, passwords y certificados Por ello no debe considerarse para todos los datos y conexiones

Administracin de Bases de Datos

Encriptacin de datos
Encriptacin a nivel de columna

Mediante certificados, keys o frases Requiere el uso de funciones especficas EncrypByCert() DecryptByCert() EncrypyAsymkey() DecryptByAsymKey() Encrypykey() DecryptBKey() EncrypyPassphrase() DecryptByPassphrase()

Administracin de Bases de Datos

Encriptacin de datos : ejemplo


USE AdventureWorks2008R2; --If there is no master key, create one now. IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101) CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Th15i$aS7riN&ofR@nD0m!T3%t' select top 5 * from Sales.CreditCard /* CreditCardID CardType CardNumber ExpMonth ExpYear ModifiedDate ------------ -------------- -------------- -------- ------- ----------1 SuperiorCard 33332664695310 11 2006 2007-08-30 2 Distinguish 55552127249722 8 2005 2008-01-06 3 ColonialVoice 77778344838353 7 2005 2008-02-15 4 ColonialVoice 77774915718248 7 2006 2007-06-21 5 Vista 11114404600042 4 2005 2007-03-05

Administracin de Bases de Datos

Inyeccin SQL
Sentencias o clusulas SQL inyectadas sobre un comando SQL existente Cadena inyectada se aade a la entrada de la aplicacin:

Text boxes Cadenas de consultas Cadenas HTML manipuladas

Por qu funciona la inyeccin SQL?


Mala validacin de aplicaciones Conexin realizada en el contexto de una cuenta con privilegios elevados

Administracin de Bases de Datos

Inyeccin SQL (Ejemplo)


CODIGO DE LA APLICACIN var shipcity; ShipCity = Request.form (Shipcity) var sql = SELECT * FROM OrdersTable WHERE ShipCity = + Shipcity + ;
USUARIO NORMAL Mete Valencia en el formulario La consulta enviada al gestor es: SELECT * FROM OrdersTable WHERE ShipCity = Valencia USUARIO MALICIOSO Mete la siguiente sentencia en el formulario: Valencia ; DROP TABLE OrdersTable - La consulta enviada al backend es: SELECT * FROM OrdersTable WHERE ShipCity =Valencia; DROP TABLE OrdersTable--

Administracin de Bases de Datos

Buenas prcticas: Mitigacin de la Inyeccin SQL


No fiarse de la entrada del usuario!

Asegurarse del formato de entrada, y rechazar todo lo que no cumpla el formato Empleo de expresiones regulares Usar consultas parametrizadas

No componer SQL por concatenacion!

Minimizar la informacin en los mensajes de error, no mostrar informacin interesante para el desarrollador Principio de Mnimo Privilegio

Administracin de Bases de Datos

Buenas prcticas: Autenticacin


Principio del mnimo privilegio Usar Autenticacin Windows
Si hay que emplear autenticacin SQL:

Polticas de contrasea en SQL server

Para el acceso desde aplicaciones, definir un rol de aplicacin


Administracin de Bases de Datos

S-ar putea să vă placă și