Vous êtes sur la page 1sur 20

ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

SESIÓN 14-1: SEGURIDAD Y AUDITORIA DE BASE DE DATOS

En la presente sesión trabajaremos la implementación de comandos en SQL: Implementación


de base de datos en el entorno SQL Server, gestión de seguridad y auditoria de base de datos.

I. AUDITORÍA DE UNA BASE DE DATOS EN SQL SERVER

Técnicas de auditoría de bases de datos SQL Server:


La auditoría de bases de datos SQL Server no es usada solamente para cumplir con
requerimientos de conformidad. Se ha vuelto necesaria para el análisis de acciones de
bases de datos, soluciones de problemas y la investigación de actividades sospechosas y
maliciosas. La auditoría también puede ayudar a evitar acciones inapropiadas de parte
de los usuarios – como si tuviera un sistema CCTV en sus bases de datos.

Hay muchas técnicas de auditoría de SQL Server:


• Auditoría manual – puede ser creada para cumplir con sus requerimientos específicos,
pero consume tiempo y es proclive a errores.
• Utilizar SQL Server Extended Events – fácil de configurar, un amplio rango de
acciones pueden ser auditadas, pero no ofrece información acerca de qué se
eliminó/insertó ni tampoco valores antiguos y nuevos para actualizaciones; una
auditoría detallada puede causar problemas de desempeño.
• Usar desencadenadores de SQL Server – fácil de configurar, pero puede causar
problemas de desempeño en bases de datos de altas transacciones.
• Leer los registros de transacciones – no hay captura de datos adicional, ya que SQL
Server ya sigue estos cambios. Más espacio de almacenamiento es necesario, algunas
de las acciones (como EXECUTEs) no son auditadas.
• Usar SQL Server Profiler y traces de SQL Server – flexible y complejo. Es difícil leer
y filtrar los registros.

Cuál es el correcto para usted depende de su ambiente, lo que necesita auditar, dónde
quiere almacenar las acciones capturadas y la forma que quiere que tengan los reportes.

MSc. Ing. Wilfredo M. Trejo F. 1


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Auditoría manual
Las bases de datos SQL Server pueden ser auditadas usando procedimientos
almacenados especialmente desarrollados y funciones para rastrear cambios en los datos
y los objetos. Provee una solución flexible que requiere una gran cantidad de código y
desarrollo, lo cual incrementa el costo y el tiempo de implementación.

Usar SQL Server Extended Events


SQL Server Audit es una característica de SQL Server, introducida primero en la versión
2008 que usa SQL Server Extended Events para auditar acciones de SQL Server. Permite
auditar diferentes acciones, proveyendo mucha granularidad en el proceso de
configuración y cubriendo un amplio rango de la actividad de SQL Server.
Para crear un nuevo objeto de SQL Server Audit:
1. En SQL Server Management Studio, expanda Security y haga clic derecho en Audits
2. Seleccione New Audit.

3. Especifique un nombre para la auditoría, establezca si desea almacenar los datos de


auditoría en un registro de eventos de la aplicación, un registro de eventos de
seguridad o un archivo, y una localización para el archivo de auditoría.

MSc. Ing. Wilfredo M. Trejo F. 2


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

4. Haga clic en OK y su auditoría aparecerá en el nodo Audits en el Object Explorer de


SQL Server Management Studio.
5. Por defecto, está deshabilitada y por tanto mostrada con una flecha roja. Para
habilitarla, haga clic derecho y selecciones Enable Audit.

MSc. Ing. Wilfredo M. Trejo F. 3


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

6. Elija si necesita Server Audit Specification o Database Audit Specification,


dependiendo si usted quiere auditar la actividad al nivel de una instancia SQL Server
o una base de datos
7. Para crear una Database Audit Specification, expanda el nodo de la base de datos que
desea auditar, vaya a Security, haga clic derecho en Database Audit Specifications y
seleccione New Database Audit.

MSc. Ing. Wilfredo M. Trejo F. 4


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

8. En el diálogo Create Database Audit Specification, especifique un nombre de


especificación, asocie la especificación con el objeto de auditoría creado en el paso
#1, especifique la actividad que será auditada en Audit Action Type. Para la auditoría
de bases de datos, especifique una base de datos, objeto, o esquema como Object
Class, el nombre del objeto auditado, y el login auditado.

MSc. Ing. Wilfredo M. Trejo F. 5


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Usted puede ver todas las acciones que pueden ser auditadas usando SQL Server
Auditing en la lista desplegable para Audit Action Type

MSc. Ing. Wilfredo M. Trejo F. 6


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Los Principales que usted debe seleccionar en este diálogo son realmente cuentas de
usuario que serán monitoreadas.
Al igual que las auditorías, las especificaciones de auditoría de bases de datos están
deshabilitadas por defecto. Para habilitarlas, seleccione esta opción en su menú
contextual.

Ahora, todas las sentencias DELETE ejecutadas contra Person.BusinessEntityAddress


serán auditadas e insertadas en archivos con nombres que empiezan con Audit-, como
Audit-AW2012Test_9D93CA4A-8B90-40B8-8B0B-
CBDA77B431D_0_130161593310500000.sqlaudit, y almacenadas en D:\
Dado que puede haber muchas acciones capturadas en una base de datos activa, es
recomendado grabar la información de auditoría en un archivo. El archivo sqlaudit no
puede ser abierto en un editor de texto o hex. Use Reporting Services o la función T-
SQL fn_get_audit_file para analizar los datos.
Por ejemplo:

MSc. Ing. Wilfredo M. Trejo F. 7


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

SELECT event_time,action_id,statement,database_name,server_principal_n
ame FROM fn_get_audit_file( 'E:\Test\Audit-*.sqlaudit' , DEFAULT , DEF
AULT);

lo anterior muestra los siguientes resultados:

Incluso cuando usted selecciona todas las columnas, usted no verá qué fue eliminado
realmente, sólo cuándo y quién realizó la eliminación, lo cual es una de las desventajas
de este método.
Otros inconvenientes son:
• Como SQL Server Audit usa recursos de SQL Server para una auditoría detallada,
esto puede afectar el rendimiento general de SQL Server
• Administrar SQL Server Audit en instancias SQL Server múltiples no puede ser
centralizado por defecto
• Analizar y archivar los datos de auditoría (en un archivo, o en registros) involucra
importación, reportes y archivado manuales
• Está disponible sólo en versiones de SQL Server 2008 y posteriores
• La auditoría a nivel de base de datos está disponible sólo en las ediciones Enterprise,
Developer y Evaluation

Usar desencadenadores de SQL Server


Los desencadenadores de SQL Server son automáticamente activados cuando un cierto
evento sucede. Los desencadenadores son realmente procedimientos almacenados
ejecutados automáticamente cuando una condición se cumple. Los desencadenadores de
Data Manipulation Language (DML) por tanto pueden ser usados para rastrear las
sentencias INSERT, UPDATE y DELETE. Usted puede crear estos desencadenadores
uno por uno para cada tabla y cada sentencia que desea auditar. Usted también necesita
crear un espacio de almacenamiento para la información auditada – por ejemplo, una
tabla SQL donde serán insertados el tiempo de la transacción, el nombre de usuario, el
tipo de transacción, etc. Para rastrear UPDATEs, es muy útil almacenar los valores
antiguos y nuevos.

MSc. Ing. Wilfredo M. Trejo F. 8


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Por ejemplo, un desencadenador que es activado después de que un registro fuera


insertado en la tabla Person.Person inserta un nombre de tabla, un tiempo y fecha cuando
el registro fue insertado y el nombre de usuario usado para insertar el registro a la tabla
dbo.Repository. Debería verse así:
CREATE TRIGGER PersonPerson_I
ON Person.Person
AFTER INSERT
AS
INSERT INTO dbo.repository (
TABLE_NAME,
TABLE_SCHEMA,
AUDIT_ACTION_ID,
MODIFIED_BY,
MODIFIED_DATE,
[DATABASE]
)
values(
'Person',
'Person',
'Insert',
SUSER_SNAME(),
GETDATE(),
'AdventureWorks2012'
) GO

Antes de que tales desencadenadores sean creados, usted debería diseñar y crear la(s)
tabla(s) donde el DML será almacenado.
Este método es proclive a errores, ya que hay mucho trabajo manual involucrado.
ApexSQL Trigger es una herramienta de auditoría de bases de dato que captura
cambios en los datos que han ocurrido en una base de datos, incluyendo la información
acerca de quién hizo el cambio, qué objetos fueron afectado por él, cuándo fue hecho así

MSc. Ing. Wilfredo M. Trejo F. 9


ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

como la información del login de SQL, la aplicación y el anfitrión usados para hacer el
cambio. Almacena toda la información capturada en el repositorio central y la exporta
en formatos amigables para imprimir. Para crear desencadenadores, simplemente
seleccione las tablas y los tipos de operación que desea auditar.
1. Inicie ApexSQL Trigger
2. Conéctese a la base de datos que desea auditar

3. En la cuadrícula principal, seleccione la tabla que desea auditar

4. En el panel Fields, seleccione las columnas a auditar

5. Seleccione las transacciones a auditar – INSERT, DELETE, UPDATE


MSc. Ing. Wilfredo M. Trejo F.
10
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

6. Repita los pasos del 3 al 5 para todas las tablas que desea auditar
7. En el menú, haga clic en Create triggers
8. El script que genera los desencadenadores especificados es mostrado en el diálogo
Script. Verifíquelo y presione F5 para ejecutarlo

Una vez que los desencadenadores son creados, serán ejecutados por cada INSERT,
DELETE y UPDATE ejecutados contra la tabla y los detalles de la operación son
almacenados en las tablas AUDIT_LOG_DATA y AUDIT_LOG_TRANSACTIONS.
Usted puede verlos fácilmente usando los reportes incorporados de ApexSQL Trigger,
o creando consultas SQL propias.

MSc. Ing. Wilfredo M. Trejo F.


11
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Mientras que los desencadenadores proporcionan una auditoría granular y un


almacenamiento fácil de acceder, su principal desventaja es que los que son activados
en una base de datos atareada pueden causar gastos extras.

Leer los registros de transacciones


Como cada cambio de esquema y datos en una base de datos SQL Server es añadido a
un registro de transacciones en línea como una entrada de registro, leer estas entradas
puede ser usado como una técnica de auditoría. Abrir un archivo de registro de
transacciones en línea de bases de datos, un registro de transacciones suelto o copias de
seguridad de registros de transacciones y leerlos no tan fácil. Una de las opciones es usar
funciones no documentadas como fn_dblog, fn_dump_dblog, y DBCC PAGE.
Aparte de la complejidad y los problemas con la reconstrucción de UPDATE/BLOB, su
mayor desventaja es que muestran valores hex que usted tiene que descifrar.

MSc. Ing. Wilfredo M. Trejo F.


12
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Para leer registros de transacciones, use un lector de registros de SQL


Server como ApexSQL Log. Esta herramienta audita, revierte o rehace cambios de
datos y objetos que han afectado una base de datos, incluyendo aquellos que han ocurrido
antes de la instalación de ApexSQL Log. También captura información acerca del
usuario, la aplicación y el anfitrión usados para hacer cada cambio.
1. Inicie ApexSQL Log
2. Conéctese a la base de datos que desea auditar

3. En el paso Select SQL logs to analyze, añada las copias de seguridad de registros de
transacciones y los registros de transacciones sueltos que quiere leer. Note que ellos
deben formar una cadena completa para proveer una auditoría exitosa

MSc. Ing. Wilfredo M. Trejo F.


13
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

4. Use las opciones de Filter setup para reducir el conjunto de resultados usando el
tiempo el tipo de operación, el nombre de la tabla, el usuario y otras opciones de
filtrado

MSc. Ing. Wilfredo M. Trejo F.


14
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

5. Haga clic en Open


6. Los resultados son mostrados en la cuadrícula principal y usted puede crear
fácilmente scripts para deshacer y rehacer, o exportarlos a archivos CSV, HTML,
XML o archivos SQL y grabarlos en el disco duro

Las ventajas de este método son que no hay desencadenadores y tampoco procesos
adicionales para capturar la información de auditoría que puede afectar el desempeño de
SQL Server. El historial de transacciones puede ser obtenido para el periodo antes de
que la herramienta fuera instalada, a diferencia de los desencadenadores y Extended
Events.
Las desventajas son:
• Más espacio es requerido para suficientes fuentes de datos, ya que una base de datos
tiene que estar en un modelo de recuperación completo, y una cadena completa de
registros de transacciones debe existir
• No todas las acciones que un usuario quiera auditar son almacenadas en un registro
de transacciones. Por ejemplo, las sentencias SELECT ejecutadas y las consultas no
son almacenadas ahí
Usar SQL Server Profiler y traces de SQL Server
Usar SQl Server Profiler y traces de SQl Server para auditar es una solución muy
compleja con mucho trabajo manual, y por lo tanto proclive a errores.
ApexSQL Audit es una herramienta de auditoría construida sobre traces de SQL Server,
lo que provee información de “quién vio qué”, una auditoría con tolerancia a fallos,
reporte centralizado, una GUI amigable para el usuario para configurar la auditoría en
más de 230 operaciones, y un repositorio centralizado para almacenar registros de
auditoría y configuraciones. La herramienta configura los traces de acuerdo a la
configuración que un usuario ha especificado, o usa su configuración por defecto que
cubre las solicitudes más comunes de auditoría.
1. Inicie ApexSQL Audit
2. Haga clic en el botón ‘Add server’ para seleccionar un servidor para la auditoría
MSc. Ing. Wilfredo M. Trejo F.
15
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

3. Haga clic en el botón ‘Add database’ para seleccionar una base de datos para la
auditoría, y seleccione el servidor o base de datos que desea auditar

Otra opción es usar el tipo de filtro Avanzado:

Ahora, cuando sea que cualquier operación que usted seleccionó es realizada en el SQL
Server auditado, un registro será guardado en la base de datos del repositorio central –
ApexSQLCrd.
Para ver los registros de auditoría, usted puede un reporte local integrado, o usar la
funcionalidad de reportes web.
MSc. Ing. Wilfredo M. Trejo F.
16
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Las ventajas de ApexSQL Audit son la fácil configuración de auditoría, un rango


amplio de tipos de operaciones auditadas, el repositorio central, los reportes web, de tal
modo que incluso usuarios remotos puedan acceder fácilmente a todos los registros de
auditoría, y la administración fácil y centralizada.
Más

Técnica Ventajas Desventajas adecuado


cuando

Una solución

Escritura de de auditoría

código específica se

Desarrollo necesita y
Auditoría manual Flexibilidad ninguna
Costo
Larga herramienta

implementación ya lista puede


usarse

Para las
Flexibilidad
No registros ediciones
Un gran número
Auditoría de SQL eliminados, Enterprise,
de tipos de
Server insertados o Developer o
acciones
actualizados Evaluation
auditadas
de SQL

MSc. Ing. Wilfredo M. Trejo F.


17
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Fácil de Puede afectar al Server,


configurar desempeño cuando una
No hay costo general auditoría
adicional No está detallada no
disponible en es necesaria,
todas las y cuando no
versiones y se necesita
ediciones de SQL información
Server acerca de los
registros
afectados

No todas las
Es proclive a tablas y
Fácil de errores cuando los operaciones
configurar desencadenadores DML
Puede rastrear y el repositorio necesitan ser
Usar una transacción son creados auditadas;
desencadenadores específica para manualmente los datos
de SQL Server sólo tablas Puede causar un auditados
específicas costo extra en una necesitan ser
Almacenamiento base de datos de de fáciles
flexible transacciones acceso y
altas consulta

Más espacio de Ambientes


No hay capturas almacenamiento de altas
Leer registros de
de datos necesitado transacciones
transacciones
adicional Difícil sin un con tiempos
lector de registros fuera de línea

MSc. Ing. Wilfredo M. Trejo F.


18
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

Los cabios DML No todas las cortos, donde


y DDL pueden acciones son los registros
ser auditados auditadas afectado
Puede mostrar (seguridad, deben ser
registros que consultas, vistos, y los
fueron afectados ejecuciones, cambios
No hay costo logins, etc.) retrotraídos
adicional

Un amplio
rango de
acciones de
bases de
datos SQL
Server debe
ser auditado.
Complejo y Se
Usar SQL Server Flexible
proclive a errores recomienda
Profiler y traces Ya disponible en
cuando se usa tener una
de SQL Server SQL Server
manualmente herramienta
diseñada
para leer
traces, filtrar
resultados y
generar
reportes

Como se presentó anteriormente, hay muchas técnicas de auditoría SQL Server que
utilizan diferentes características de SQL Server. Desde código manualmente escrito y
por tanto proclive a errores, hasta un GUI amigable para el usuario. Algunas de ellas
pueden causar un costo extra y problemas de Desempeño en SQL Server, mientras que
otras no tienen casi ningún efecto. Determine qué tipo de operaciones necesita auditar y
MSc. Ing. Wilfredo M. Trejo F.
19
ISI – ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2019-I

selecciones una herramienta de auditoría ApexSQL para configurar la auditoría y crear


reportes en sólo algunos clics del ratón.

Ejercicio:
1. Realizar la auditoria a una base de datos relacional implementada en SQL Server,
con cualquiera de las herramientas que SQL Server nos ofrece.
2. Documentar y presentar todo el proceso de auditoría desarrollado en el ejercicio 1.

MSc. Ing. Wilfredo M. Trejo F.


20

Vous aimerez peut-être aussi