SQL Server 2008 Seguridad. Marta Zorrilla



Documentos relacionados
Seguridad en SQL Server 2005

Microsoft SQL Server Usuarios, Roles, Encriptación y Back Up de la base de datos.

SEGURIDAD SQL SERVER

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.

Seguridad de la Información Permisos. Sistemas de Bases de Datos II - ITS EMT - CETP

CONTROL DE ACCESO. curso 2008

Select table data Insert table data Update table data Delete table data Create table

8 SQL SERVER 2008 RA-MA

Sistemas de Datos Curso: Ernesto Chinkes. Sistemas de Datos. Niveles de Control de acceso. Criptografía. Aspectos legales y éticos.

Consultas con combinaciones

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

AUDITORÍA DE BASE DE DATOS MICROSOFT SQL SERVER 2014 WALTER JAVIER NAPÁN TARMEÑO

CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS;

Base de datos relacional

CURSO DE SQL SERVER 2005

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos

ADMINISTRACIÓN DE BASE DE DATOS

Bases de Datos 2. Teórico

T12 Vistas y tablas temporales

SISTEMAS IDEALES SISTIDE, S.A. SISTEMA GESTION DE USUARIOS

MANUAL BÁSICO DE ORACLE

Microsoft SQL Server 2005

Bases de Datos. Marta Elena Zorrilla Pantaleón Rafael Duque Medina DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN

ADMINSTRANDO SEGURIDAD EN SQL SERVER 2005

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

Seguridad en SQL Server

Guía rápida del usuario. Disco duro virtual.

UNIDAD DIDACTICA 3 USUARIOS Y GRUPOS EN REDES WINDOWS 2003 SERVER I

Instalación 07/07/2010. Sesión sobre SQL Server. Gestión de Datos

POLÍTICAS DE SEGURIDAD PARA EL DESARROLLO DE SISTEMAS DE CAPUFE

Manual de Usuario Servidor Cloud

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

Bases de datos relacionales y el modelo entidad-relación

Manual de Usuario: Servidor Cloud y Servidor Cloud Gestionado

Oracle 12c DISEÑO Y PROGRAMACIÓN

MySQL 5 (versiones 5.1 a 5.6) Guía de referencia del desarrollador

CLAVE DE UNIDAD DE APRENDIZAJE DURACIÓN (HORAS) NOMBRE DE LA PRÁCTICA. Tópicos de arquitectura de computadoras. Comandos SQL 2

Creación y administración de grupos de dominio

6 El catálogo del sistema

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

CREACION DE USUARIOS EN MY SQL

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

ÍNDICE. Introducción... Capítulo 1. Novedades, mejoras y requisitos para la instalación... 1

Vistas en postgresql

Tenemos que instalar los programas de los usuarios también (los anteriormente mencionados) y los siguientes que vamos a nombrar.

UNIDAD DIDACTICA 16 USUARIOS SAMBA EN UN CONTROLADOR DE DOMINIO LINUX SERVER

SQL (Structured Query Language)

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

ÍNDICE. Capítulo 1. Conceptos de base de datos de SQL Azure... 1

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Bases de Datos Relacionales

Formas de llevar a cabo un backup de una base de datos MySQL

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Manual del usuario del Módulo de Administración de Privilegios del Sistema Ingresador (MAPSI)

Guía Taller I Conexión con la Base de Datos Introducción a PostgreSQL

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Oracle Básico PL/SQL

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

MANUAL DE USUARIO SIIDJ MÓDULO DE SEGURIDAD CAPÍTULO II ADMINISTRADOR DE SEGURIDAD DEL CLIENTE ÍNDICE

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Autenticación Centralizada

Curso Online de Microsoft

CLAVE DE UNIDAD DE APRENDIZAJE DURACIÓN (HORAS) NOMBRE DE LA PRÁCTICA. Comandos SQL 2

1. DML. Las subconsultas

UNIVERSIDAD DEL AZUAY

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

Q-expeditive Publicación vía Internet

Restricciones (constraints) FOREIGN KEY

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Seguridad y Auditoría de Bases de Datos Oracle

Manual de Administración de Correo Electrónico

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.

Ejercicios: Administración de Bases de Datos en ORACLE

Kiara Celeste Contreras Feliz. Matricula: Sistema Operativo III. 5- Creación de usuarios y grupos

HOWTO: Configurar SQL Server Express, para que permita conexiones remotas por tcp con autenticación de servidor

Google Groups. Administración de Grupos de Google Apps

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

Administración Local Soluciones

1

Técnicas de Programación

11. Seguridad en sistemas de bases de datos

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Eurowin 8.0 SQL. Manual de la FIRMA DIGITALIZADA

A.1. Definiciones de datos en SQL

Microsoft Dynamics. Instalación de Management Reporter for Microsoft Dynamics ERP

MEJORAR EL RENDIMIENTO DEL EXPLORADOR DE INTERNET

5 Objetos de base de datos

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA NACIONAL EXTENSIÓN BARQUISIMETO BARQUISIMETO ESTADO. LARA

GUIA DE SQL DDL (DATA DEFINITION LANGUAGE) DML (DATA MANIPULATION LANGUAGE) Agosto de 2008 AUTORES:

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios

Manual de rol gestor de GAV para moodle 2.5

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

UNIDAD DIDACTICA 3 USUARIOS Y GRUPOS EN REDES WINDOWS 2003 SERVER II

Administración de portales Joomla (II)

sql*plus es un programa de linea de comandos de oracle que puede ejecutar comandos sql y pl/sql de forma interactiva o mediante un script.

Novedades en Q-flow 3.02

Transcripción:

SQL Server 2008 Seguridad Marta Zorrilla

Tabla de contenidos Modelo de Seguridad en SQL Server Inicios de Sesión y Roles de servidor Seguridad de bases de datos Usuarios Roles de base de datos Roles definidos por el usuario Esquemas de Base de Datos Permisos Contexto de Ejecución Encriptación de datos Auditoría Inyección SQL Buenas prácticas 2 Marta Zorrilla -UC

Modelo de Seguridad en SQL Server Solicitud de conexión de Red Conexión n con el Servidor de SQL Server Solicitud de Inicio de Sesión en SQL Server Establecer Credenciales de Inicio de Sesión Cambio a una BBDD y autorización de acceso Establecer un Contexto de Base de Datos Intento de realizar alguna acción Verificar Permisos para las acciones 3 Marta Zorrilla -UC

Jerarquía de Seguridad Principals: entidades de seguridad: Usuarios windows, usuarios sql server, Usuarios de BD Asegurables: recursos que pueden ser protegidos 4 Marta Zorrilla -UC

Inicios de sesión - Usuarios Modo de autentificación (acceso al servidor) (Inicio de sesión: Login) Windows (S.O.) Servidor SQL Server Acceso y gestión de una BD (autorización: User) Permisos a objetos de BD ejecución de sentencias Permisos a través de roles: del servidor o de BD definidos por el usuario 5 Marta Zorrilla -UC

Inicios de sesión preestablecidos Al instalarse SQL Server se crean 2 inicios de sesión: la cuenta de servicio que se utiliza para iniciar el servicio SQL Server. Puede cambiarse sus privilegios. el usuario sa. Este no puede eliminarse ni modificarse. No estará disponible si solo está configurada la autentificación de Windows. Pueden realizar cualquier tarea en SQL Server (pertenecen al rol de servidor sysadmin) 6 Marta Zorrilla -UC

Tipos de Inicios de sesión Windows Usuario Grupo de usuarios SQL Server Certificado Clave Asimétrica Asociados a Credenciales Para acceso a recursos externos 7 Marta Zorrilla -UC

Tipos de Inicios de sesión (y 2) Opciones de Administración Podemos forzar el cambio de contraseña en el primer inicio de sesión: MUST_CHANGE Exigir directivas de contraseña Desbloquear Cuentas: UNLOCK Deshabilitar un inicio de sesión: DISABLE Establecer una BD de conexión predeterminada 8 Marta Zorrilla -UC

Crear Inicios de sesión (y 3) Gráficamente SSMS CREATE LOGIN CREATE LOGIN Pepe WITH PASSWORD = Passwd' MUST_CHANGE CREATE LOGIN [UNICAN\pepe] FROM WINDOWS DROP LOGIN / ALTER LOGIN La información se almacena en sys.server_principals: Contiene una fila por cada entidad de seguridad del servidor. sys.sql_logins: Devuelve una fila por cada inicio de sesión de SQL. 9 Marta Zorrilla -UC

Roles fijos de Servidor Cada rol agrupa un conjunto de permisos Facilitan la admón. de seguridad Se definen a nivel de servidor. Independiente, por tanto, de las bases de datos Un inicio de sesión puede pertenecer a cero o más roles de servidor Un inicio de sesión que pertenezca a un rol de servidor adquiere los permisos de ese rol Son fijos: No se pueden modificar sus permisos No pueden eliminarse No pueden añadirse nuevos roles de servidor 10 Marta Zorrilla -UC

Roles fijos de Servidor ( y 2) sp_addsrvrolemember /sp_dropsrvrolemember sys.server_role_members sp_srvrolepermission sys.server_permissions 11 Marta Zorrilla -UC

Seguridad de base de datos Los siguientes inicios de sesión pueden conectarse a una BD: sysadmin Propietario de la BD Usuarios de la BD Cualquier inicio de sesión si existe el usuario guest y tiene permiso Usuario de BD Definido a nivel de BD Corresponde con un inicio de sesión 12 Marta Zorrilla -UC

Conceder acceso a una BD Pueden conceder permisos: sysadmin Propietario de la BD Usuario con rol db_owner Usuario con rol db_accessadmin Al conceder acceso a un inicio de sesión a una base de datos: Se crea el usuario correspondiente en esa BD Pertenece al rol public Para conceder permisos sp_grantdbaccess y sp_adduser Para quitar el acceso sp_revokedbaccess Para reasignar inicios de sesión con usuarios sp_change_users_login Ver info de usuarios sp_helpuser 13 Marta Zorrilla -UC

Usuarios por defecto en una BD dbo: Propietario. No puede ser borrado de la BD Guest: Permite a usuarios que no tienen cuenta en la BD, que accedan a ella, pero hay que darle permiso explícitamente Information_schema sys Permite ver los metadatos de SQL Server Permite consultar las tablas y vistas del sistema, procedimientos extendidos y otros objetos del catálogo del sistema Mostrar usuarios de una base de datos Select * from sys.database_principals 14 Marta Zorrilla -UC

Roles fijos de base de datos 15 Marta Zorrilla -UC

Roles definidos por el usuario Agrupan un conjunto de permisos No tienen permisos predefinidos Los permisos se establecen por: Pertenencia a otros roles Permisos de sentencias Permisos específicos de objetos Pueden ser: Rol estándar Rol de aplicación: establecer permisos a una aplicación sobre la BD Los pueden gestionar: sysadmin, propietario de BD, db_owner, db_securityadmin 16 Marta Zorrilla -UC

Creación de un inicio de sesión

Asignación de un rol de servidor

Asignación de usuarios

Elementos que pueden proteger

Estado del inicio de sesión

Usuarios de Base de Datos Crear un Usuario CREATE USER <usuario> FOR LOGIN <login> WITH DEFAULT_SCHEMA = <schema> Podemos crear un usuario sin asociar: WITHOUT LOGIN Modificar ALTER USER Eliminar DROP USER No si es propietario de objetos Invitado GRANT CONNECT TO GUEST Información sobre usuarios en: sys.database_principals 22 Marta Zorrilla -UC

Roles o funciones de Base de Datos CREATE ROLE <nombre> Asignar a un usuario sp_addrolemember <role>,<usuario> Ver información en: sys.database_role_members Rol Public 23 Marta Zorrilla -UC

Crear un rol de BD

Establecer protección a asegurables

Usuarios de BD y esquemas Separación de principales y esquemas Principal: Entidad contra la que se securiza un objeto Esquema: Contenedor de objetos: ANSI SQL-92: Colección de objetos de la BBDD cuyo propietario es un único principal y forma un único espacio de nombres ( conjunto de objetos que no pueden tener nombres duplicados) servidor.basededatos.esquema.objeto 26 Marta Zorrilla -UC

Esquemas (y 2) Los objetos ahora pertenecen al esquema de forma independiente al usuario Beneficios El borrado de un usuario no requiere que tengamos que renombrar los objetos Resolución de nombres uniforme Gestión de permisos a nivel de esquema Nuevas sentencias DDL: CREATE/ALTER/DROP para USER, ROLE y SCHEMA 27 Marta Zorrilla -UC

Esquemas (y 3) Una BBDD puede contener múltiples esquemas Cada esquema tiene un propietario (principal): usuario o rol Cada usuario tiene un default schema para resolución de nombres La mayoría de los objetos de la BBDD residen en esquemas Creación de objetos dentro de un esquema requiere permisos CREATE y ALTER o CONTROL sobre el esquema 28 Marta Zorrilla -UC

Conceder permisos Concede permisos en un asegurable a una entidad de seguridad. GRANT { ALL [ PRIVILEGES ] } permission [ ( column [,...n ] ) ] [,...n ] [ ON [ class :: ] securable ] TO principal [,...n ] [ WITH GRANT OPTION ] [ AS principal ] ALL : Esta opción no concede todos los permisos posibles. -Si el asegurable es una base de datos, "ALL" significa BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE y CREATE VIEW. - Si es una función escalar, "ALL" significa EXECUTE y REFERENCES. - Si es una función con valores de tabla, "ALL" se refiere a DELETE, INSERT, REFERENCES, SELECT y UPDATE. - Si es un proc. almacenado, "ALL" significa DELETE, EXECUTE, INSERT, SELECT y UPDATE. - Si es una tabla o vista, "ALL" significa DELETE, INSERT, REFERENCES, SELECT y UPDATE. WITH 29 GRANT OPTION: el usuario al que Marta se Zorrilla le otorga -UCpermiso, puede a su vez, otorgárselo a otro. 29 Marta Zorrilla -UC

Establecer permisos: ejemplos Permitir a los usuarios Maria, Juan y Marta crear bases de datos y tablas GRANT CREATE DATABASE, CREATE TABLE TO Maria, Juan, [Servidor\Marta] Permitir a María y a Juan, insertar, modificar y borrar en la tabla autores. GRANT INSERT, UPDATE, DELETE ON autores TO Maria, Juan Permitir a María actualizar el importe del préstamo. GRANT UPDATE( importe ) ON prestamo TO Maria 30 Marta Zorrilla -UC

Revocar permisos Quita un permiso concedido o denegado previamente. Su sintaxis es: REVOKE [ GRANT OPTION FOR ] { [ ALL [ PRIVILEGES ] ] permission [ ( column [,...n ] ) ] [,...n ] } [ ON [ class :: ] securable ] [TO FROM } principal [,...n ] [ CASCADE] [ AS principal ] GRANT OPTION FOR : se quita al usuario la capacidad de dar o quitar permisos que le fueron concedidos por la cláusula WITH GRANT OPTION permiso: SELECT, INSERT, DELETE, UPDATE, REFERENCES, EXECUTE, CREATE, etc. CASCADE : se quita el permiso al usuario/role y a los usuarios/roles a los que dio permiso, si se le concedió GRANT OPTION. AS : usuario o role que quita el permiso 31 Marta Zorrilla -UC

Revocar permisos: ejemplos Impedir a los usuarios Maria y Marta crear vistas en la BD activa. REVOKE CREATE VIEW TO Maria, [Servidor\Marta] Impedir que María ejecute la función dameprecio. REVOKE SELECT ON dbo.dameprecio TO Maria 32 Marta Zorrilla -UC

Denegar permisos Deniega un permiso a una entidad de seguridad. Evita que la entidad de seguridad herede permisos por su pertenencia a grupos o funciones. Su sintaxis es: DENY { [ ALL [ PRIVILEGES ] ] permission [ ( column [,...n ] ) ] [,...n ] } [ ON [ class :: ] securable ] TO principal [,...n ] [ CASCADE] [ AS principal ] permiso: SELECT, INSERT, DELETE, UPDATE, REFERENCES, EXECUTE, CREATE, etc. CASCADE : Indica que el permiso se deniega para la entidad de seguridad especificada y para el resto de entidades de seguridad a las que ésta concedió el permiso. Es obligatorio cuando la entidad de seguridad tiene el permiso con GRANT OPTION. AS : usuario o role que quita el permiso 33 Marta Zorrilla -UC

Permisos efectivos 34 Marta Zorrilla -UC

A tener en cuenta SQL Server establece el rol PUBLIC a todos los usuarios de la BD. Para aquellos usuarios que no tienen cuenta en la BD, pero sí acceso al gestor, pueden conectarse a la BD como GUEST, si este usuario está habilitado en ella (GRANT CONNECT TO GUEST). Se ha de tener cuidado respecto a la manera en que se establecen las autorizaciones, si se quiere garantizar que luego se puedan quitar. U1 U5 Admon U2 U4 U3 35 Marta Zorrilla -UC

Limitaciones de seguridad No se puede establecer privilegios a nivel de fila (p. ej. cada alumno sólo vea sus notas) Hay extensiones para proporcionar control de acceso en el nivel de las filas y para trabajar con gran número de usuarios pero aún no están normalizadas. Utilizar vistas para restringir la información. Establecer la seguridad en aplicaciones de BD: - Usuarios Usuarios de domino / de gestor con sus privilegios Usuarios de dominio / de gestor con rol de aplicación Usuario único con privilegios - Crear BD de seguridad donde se establece con detalle las acciones que cada usuario de aplicación puede hacer Código de aplicación se entremezcla con el de autorización Más difícil de garantizar la existencia de agujeros de seguridad 36 Marta Zorrilla -UC

Estrategias de seguridad Uso de vistas y funciones Dar permisos a vistas y funciones en lugar de a 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 ejecución de los procedimientos Permiten establecer el nivel de seguridad más fino (contexto) 37 Marta Zorrilla -UC

Encriptación de datos para qué? Evitar acceso a datos sensibles Evitar robo de copias de seguridad con datos sensibles qué técnicas? Encriptación a nivel de columna Encriptación transparente (TDE), afecta a toda la BD coste? Mayor sobrecarga y puede afectar al rendimiento Requiere una estrategia para la definición y mantenimiento de claves, passwords y certificados Por ello no debe considerarse para todos los datos y conexiones 40 Marta Zorrilla -UC

Encriptación de datos (y 2) Encriptación a nivel de columna Mediante certificados, keys o frases Requiere el uso de funciones específicas EncrypByCert() DecryptByCert() EncrypyAsymkey() DecryptByAsymKey() Encrypykey() DecryptBKey() EncrypyPassphrase() DecryptByPassphrase() Encriptación transparente (TDE), afecta a toda la BD No protege las comunicaciones entre aplicación cliente y servidor No encripta FILESCREAM No impide al DBA ver los datos Puede caer el rendimiento si conviven BD TDE y sin encriptar 41 Marta Zorrilla -UC

Encriptación 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 */ 42 Marta Zorrilla -UC

Encriptación de datos : ejemplo /*create creditcard_encrypt table changing CardNumber by CardNumber_encrypt*/ select CreditCardID, CardType, CardNumber_encrypt = CONVERT(varbinary(256), CardNumber), ExpMonth, ExpYear, ModifiedDate into Sales.CreditCard_encrypt from Sales.CreditCard where 1=2 declare @passphrase varchar(128) set @passphrase = 'unencrypted credit card numbers are bad, um-kay' insert Sales.CreditCard_encrypt ( CardType, CardNumber_encrypt, ExpMonth, ExpYear, ModifiedDate ) select top 5 CardType, CardNumber_encrypt = EncryptByPassPhrase(@passphrase, CardNumber), ExpMonth, ExpYear, ModifiedDate from Sales.CreditCard select * from Sales.CreditCard_encrypt /* CreditCardID CardType CardNumber_encrypt ExpMonth ExpYear ModifiedDate ------------ ------------- --------------------- -------- ------- ----------- 1 SuperiorCard 0x010000007C65089E... 11 2006 2007-08-30 2 Distinguish 0x010000000C624987... 8 2005 2008-01-06 3 ColonialVoice 0x01000000AA8761A0... 7 2005 2008-02-15 4 ColonialVoice 0x010000002C2857CC... 7 2006 2007-06-21

Encriptación de datos : ejemplo declare @passphrase varchar(128) set @passphrase = 'unencrypted credit card numbers are bad, um-kay' select CreditCardID, CardType, CardNumber = convert(nvarchar(25), DecryptByPassPhrase(@passphrase, CardNumber_encrypt)), ExpMonth, ExpYear, ModifiedDate from Sales.CreditCard_encrypt /* 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 */ 44 Marta Zorrilla -UC

SQL Server Auditing Característica incorporada en versión 2008 Permite auditar los accesos y acciones sobre una base de datos u objetos que contenga Útil para cumplir con la ley de protección de datos No actúa igual que la traza, esta supone menos coste de rendimiento. 45 Marta Zorrilla -UC

SQL Server Auditing: ejemplo /* Create the SQL Server Audit object, and send the results to the Windows Application event log. */ USE master; CREATE SERVER AUDIT NEW_SQL_Server_Audit TO APPLICATION_LOG WITH ( QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE); /* Create the Database Audit Specification object using an Audit event */ USE AdventureWorks; CREATE DATABASE AUDIT SPECIFICATION NEW_Database_Audit_Specification FOR SERVER AUDIT NEW_SQL_Server_Audit ADD (SELECT ON HumanResources.Employee BY dbo) WITH (STATE = ON); /* Enable the audit. */ USE master; ALTER SERVER AUDIT NEW_SQL_Server_Audit WITH (STATE = ON); /* Test the audit is working */ SELECT * from HumanResources.Employee; /* Disable the audit. */ ALTER SERVER AUDIT NEW_SQL_Server_Audit WITH (STATE = OFF); 46 Marta Zorrilla -UC

Inyección SQL Sentencias o cláusulas SQL inyectadas sobre un comando SQL existente Cadena inyectada se añade a la entrada de la aplicación: Text boxes Cadenas de consultas Cadenas HTML manipuladas Por qué funciona la inyección SQL? Mala validación de aplicaciones Conexión realizada en el contexto de una cuenta con privilegios elevados 47 Marta Zorrilla -UC

Inyección SQL (Ejemplo) CODIGO DE LA APLICACIÓN 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--

Buenas prácticas: Mitigación de la Inyección 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 No componer SQL por concatenacion! Usar consultas parametrizadas Minimizar la información en los mensajes de error, no mostrar información interesante para el desarrollador Principio de Mínimo Privilegio 49 Marta Zorrilla -UC

Buenas prácticas: Autenticación Principio del mínimo privilegio Usar Autenticación Windows Si hay que emplear autenticación SQL: Políticas de contraseña en SQL server Para el acceso desde aplicaciones, definir un rol de aplicación 50 Marta Zorrilla -UC

Otras Buenas Prácticas: encriptado Sopesar el uso de cifrado de datos Aceso a través de procedimientos almacenados Cifrado e Indexado No cifrar columnas con índices si es posible 51 Marta Zorrilla -UC