Seguridad y Auditoría en Bases de Datos
Clasificado en Informática
Escrito el en español con un tamaño de 13,62 KB
Seguridad
Consiste en asegurar que los recursos e información del sistema sean utilizados de la manera en que se decidió y que el acceso a la información allí contenida, así como su modificación, solo sea realizada por personas con autorización. Abarca hardware, software, personas y datos.
Mantener la seguridad de una base de datos:
- Escaneo de vulnerabilidades: escanear problemas de seguridad, escaneo continuo de cada base de datos de la empresa.
- Monitoreo y Auditoría: crear el comportamiento normal de la base de datos, escanear comportamientos sospechosos, histórico de cambios de privilegios, reportes del monitoreo.
Pilares básicos de la seguridad:
- Confidencialidad: no revelar datos a usuarios no autorizados. Incluye la privacidad (protección de datos personales).
- Disponibilidad: la información siempre debe estar accesible cuando se requiera.
- Integridad: asegurar que los datos no han sido falseados.
Subsistema de seguridad en un SMBD:
Se encargan de garantizar la seguridad de partes de la base de datos contra el acceso no autorizado. Para hacer esto, el SMBD debe:
- Identificar y autorizar a los usuarios.
- Usar técnicas de cifrado.
- Tener diferentes tipos de cuentas.
- Manejo de la tabla de usuarios con contraseña y control de las operaciones realizadas por cada usuario.
Tipos de usuarios:
- Usuario con derecho a crear, borrar y modificar objetos y conceder privilegios a otros usuarios sobre los objetos que ha creado.
- Usuarios con derecho a consultar, actualizar y sin derecho a crear o borrar objetos.
- Administrador: usuario encargado de la seguridad. Posee una cuenta privilegiada con capacidades únicas.
Medidas de seguridad:
- Físicas: controlar el acceso físico al equipo, uso de tarjetas de acceso, etc.
- Personal: acceso solo del personal autorizado. Evitar sobornos.
- SO: seguridad a nivel de Sistema Operativo.
- SGBD: perfiles de usuario, restricciones de uso de vistas, etc.
Requisitos esenciales para la seguridad de una base de datos:
- Debe ser protegida contra fuego, robo, otra forma de destrucción.
- Los datos deben ser reconstruibles.
- Los datos deben ser sometidos a procesos de auditoría.
- El sistema debe diseñarse a prueba de intrusos.
- No pasar por alto los controles.
- Hacer que sea difícil eludir los controles.
- Supervisar las acciones de los usuarios.
Acciones de un Administrador:
- Creación de cuentas.
- Concesión de privilegios.
- Revocación de privilegios.
- Asignar niveles de seguridad.
Violaciones de seguridad:
- Lectura no autorizada de los datos.
- Modificación no autorizada de los datos.
- Destrucción no autorizada de los datos.
Administración de usuarios:
- Inicio de Sesión (IS): un IS es una entidad de seguridad. Necesita iniciar sesión para poder conectarse a SQL Server. Pueden recibir permisos, su ámbito es todo el motor de una base de datos y no se le puede conceder o denegar permisos dentro de una base de datos a un IS.
- Usuario de base de datos (UBD): un UBD es una entidad de seguridad. Su ámbito es la base de datos. Puede utilizar el mismo nombre que el IS pero no es necesario. Los permisos dentro de la base de datos son concedidos o denegados al UBD.
Mecanismos de Seguridad:
- Control Discrecional.
- Control Obligatorio.
- Control basado en Roles.
Control de Acceso Discrecional:
Se usa para otorgar y revocar privilegios a los usuarios a nivel de archivos, registros o campos, ya sea para consulta o modificación. Para esto se utilizan las sentencias GRANT y REVOKE. Para otorgar o revocar permisos a un usuario, este debe tener el privilegio ADMIN OPTION. Para un objeto, se debe ser el propietario y dejar la cláusula WITH GRANT OPTION.
- Ventajas: alto grado de flexibilidad, perfecto para una gran variedad de aplicaciones.
- Desventajas: vulnerabilidad a ataques maliciosos como Troyanos, ya que no imponen control sobre cómo se propaga y usa la información una vez accedida por los usuarios.
Control Obligatorio:
Impone seguridad de varios niveles tanto para los usuarios como para los datos. Este modelo de niveles se conoce como Bell-LaPadula. Los niveles son: Top Secret (TS), Secret (S), Confidential (C) y No Clasificado (U).
- Ventajas: aseguran un alto grado de protección.
- Desventajas: son demasiado rígidas ya que requieren una clasificación específica.
Reglas de Control Obligatorio:
- Propiedad de seguridad simple: a un sujeto S no se le permite la lectura de un objeto O a menos que la clase(S) >= clase(O).
- Propiedad estrella: a un sujeto S no se le permite escribir sobre un objeto O a menos que la clase(S) <= clase(O).
Control de acceso basado en Roles:
Los usuarios y los permisos están basados en roles. Un usuario solo puede acceder a un objeto si ambos son del mismo rol. Se pueden crear los roles usando CREATE ROLE y DESTROY ROLE. Se pueden usar los comandos GRANT y REVOKE para asignar los roles.
GRANT:
Se usa para conceder permisos. GRANT <permiso> ON <objeto> TO <usuario>.
Permisos que se pueden conceder:
- SELECT
- INSERT
- UPDATE
- DELETE
- EXECUTE
- REFERENCES
- CONTROL
- ALTER
- VIEW DEFINITION
Control de flujo:
Regula la distribución de información entre objetos. Un flujo entre el objeto X y el objeto Y sucede cuando un programa lee valores de X y escribe valores en Y. Ayuda a controlar que un usuario no pueda colocar en Y algo que no pudo obtener directamente de X.
Tipos de control de flujo:
- Explícitos: ocurren en consecuencia de instrucciones de asignación.
- Implícitos: ocurren por instrucciones condicionales.
Canales ocultos:
Permite que la información pase desde un nivel de clasificación más alto hacia uno más bajo por un medio el cual no es el normal. Existen los canales ocultos de temporización (la información se transmite tras una temporización de eventos o procesos) y los de almacenamiento (la información se transmite accediendo a información del sistema o al propio usuario, pero de otro modo).
Estándar de cifrado de datos (DES):
Es un sistema desarrollado por el gobierno de USA. Proporciona cifrado de extremo a extremo en el canal. Pasos a seguir para Cifrar / Descifrar:
- Cada usuario genera dos claves, una para cifrar y otra para descifrar.
- Coloca una de las claves como pública y la otra como privada.
- Si un A desea enviarle un mensaje privado a B, A cifra su mensaje con la clave pública de B.
- Cuando B reciba el mensaje, lo descifrará con su clave privada.
Firmas digitales:
Es un mecanismo para identificar que un cuerpo de texto pertenece a un individuo en específico. Estas firmas deben ser diferentes en cada uno y dependerán del mensaje, debe poseer un número secreto perteneciente al propietario.
Trigger DDL:
Auditar y regular acciones en una base de datos. Ejemplo:
CREATE TRIGGER TRIGGER1
ON DATABASE FOR DROP_PROCEDURE, DROP_TABLE, ALTER_TABLE
AS
BEGIN
RAISERROR ('¡No está permitido borrar o modificar tablas!', 16, 1)
ROLLBACK TRANSACTION
END
Encriptación de datos:
Evita acceso a datos que no se quieran ser leídos, robo o copia de información. Se puede usar la técnica de encriptación a nivel de columna o encriptación transparente (toda la base de datos). Puede traer como consecuencias la sobrecarga y mal rendimiento de la base de datos.
Auditoría
Es un procedimiento que siguen las empresas con el objetivo de asegurarse que cumplen con ciertas normas internas y externas en diversas áreas de su trabajo. Se basa en la recopilación de información de los procesos del área a auditar en el tiempo correspondiente.
Auditor:
Es aquel que revisa la información recopilada y solicita información detallada para el análisis (pudiendo requerir respaldos físicos).
Tipos de auditorías:
- Externa: llevada a cabo por un organismo fuera de la organización, con el objetivo de comprobar el cumplimiento de las leyes, por ejemplo.
- Interna: llevada a cabo por la misma empresa sobre una de sus áreas.
Auditoría de una base de datos:
Es el proceso de recoger, agrupar y evaluar evidencias para recoger cierta información:
- Integridad de los datos.
- Fines de la organización llevados a cabo eficazmente.
- Uso eficiente de los recursos.
- Cumplimiento de las leyes.
Además de esto, la Auditoría de Bases de Datos busca determinar:
- Quien accede a los datos.
- Cuando se accede a los datos.
- Desde qué dispositivo se accede.
- Desde dónde.
- Qué tipo de solicitud y sentencia T-SQL.
- Fallos de seguridad.
Objetivos:
- Disminuir los riesgos provocados por el mal uso de los datos.
- Satisfacer los requerimientos del auditor.
- Evitar acciones criminales.
- Evitar multas por incumplimiento de la ley.
Metodologías:
- Tradicional: el auditor revisa el entorno con un checklist. Se apuntan las respuestas con SI, NO, NO APLICA. Se anotan observaciones necesarias.
- Evaluación de Riesgos: Risk Oriented Approach (ROA).
Pasos para realizar el método ROA:
- Fijar objetivos de control: determinar qué se pretende controlar en la base de datos a fin de disminuir los riesgos.
- Establecer técnicas de control: especificar las acciones a tomar sobre cada objeto de control. Las técnicas usadas son PREVENTIVAS, DETECCIÓN, CORRECTIVAS.
- Aplicar pruebas de cumplimiento: verifica los controles existentes. Si hay inconsistencia en los controles se procede a realizar pruebas sustantivas.
- Aplicar pruebas sustantivas: verifica las eficiencias, si la información ha sido alterada, revisa los documentos de entrada y transacciones ejecutadas.
Inyección SQL:
Es un ataque en el cual se inserta un código malicioso en las cadenas que se envían a SQL Server para su análisis y ejecución. Es importante revisar todos los procedimientos que contengan instrucciones SQL en búsqueda de código malicioso ya que SQL Server ejecutará una instrucción si está bien en sintaxis.
Cómo funciona SQL Injection:
Consiste en finalizar prematuramente una cadena para anexar un nuevo comando.
- Insertar código directamente en variables especificadas por el usuario, el cual se concatena con comandos SQL y se ejecutan.
- Inyectar código dañino en cadenas que van dirigidas a una tabla o metadatos. Cuando estas cadenas son usadas para un comando SQL, se ejecuta el código dañino.
Ejemplo:
SELECT * FROM OrdersTable WHERE ShipCity: 'Redmond'; drop table OrdersTable --
Cómo prevenir SQL Injection:
- Validar datos especificados por los usuarios.
- Usar parámetros SQL con seguridad de tipos.
- Filtrar la entrada.
- Clausulas LIKE.
Plan de ejecución de SQL Server
- Table Scan: operación que lee toda la tabla. Se hace cuando la tabla es Heap, es decir, NO posee índice clustered.
- Clustered Index Scan: igual que Table Scan, pero sobre tablas que posean índice clustered.
- Clustered Index Seek: significa que se está usando bien el índice clustered de la tabla.
- Index Seek: igual que el anterior pero NO usa índices clustered.
- Index Scan: se leen los índices completos de una tabla. Es más corto que un Table Scan. Es común con los Join, Group By y Order By.
- Bookmark Lookup: operación que hace un salto de la página de índice a la página de datos para recuperar los datos. Esto se hace cuando NO hay índices clustered. A partir de SQL Server 2005, los índices podían tener una copia del contenido para mostrar los datos (no servía para realizar búsqueda o filtrar datos). Usarlos bien puede reducir el costo de consulta, pero tiene un aspecto negativo y es que los índices se hacen más grandes y ocupan más espacio, haciendo que se puedan guardar menos de estos.
- Stream Aggregate: operación ejecutada cuando se llaman a funciones de agregación como COUNT, MIN, MAX, SUM. Requiere que la información esté ordenada por las columnas.
- Hash Match Aggregate: operación ejecutada cuando se llaman a funciones de agregación como COUNT, MIN, AVG. Arma una tabla de Hash. Se usa cuando hay gran cantidad de registros.
- Sort: ordena campos que no están indexados.