Sunteți pe pagina 1din 34

Actividad AA11-1: Conceptualizar sobre las características y funciones de seguridad del

SGBD.

Ángel Bello Pérez

Anderson Miguel Maza Castro

Octubre 2019

Sena

Sena Virtual

Gestión y Seguridad de Bases de Datos (1881765)


INTRODUCCIÓN

En esta actividad se realizará una investigación con el tema de seguridad en los SGBD que

nos permitirá el apoderamiento de la temática como es los procedimiento o programas y

lenguajes que permiten a los distintos usuarios realizar sus tareas habituales con los datos,

garantizando además una estructura óptima para la seguridad de los mismos, muy necesaria para

la administración de una base de datos y así logra una competencia integral para afrontar

situaciones en este medio con temas de seguridad


OBJETIVOS

Generales

Conocer las características de un sistema manejador de bases de datos SGBD que nos

permitirán procesar, describir, administrar, recuperar los datos y mantener la seguridad e

integridad la base de datos.

También se abordará conceptos de lo que es un Hacker ético y afectación de los temas de

seguridad y vulnerabilidad informática.

Específicos

 Características de un sistema manejador de base de datos.

 Herramientas de sistema manejador de base de datos para la seguridad.

 Creación de roles para la seguridad.

 Manejo de integridad.

 Conceptos de hacker ético e impacto de la seguridad y vulnerabilidad de los sistemas

informáticos
Contenido
Introducción ............................................................................................................................... 2

Objetivos .................................................................................................................................... 3

MICROSOFT SQL SERVER .................................................................................................... 2

Cuentas de Usuario y privilegios sobre los objetos del Sistema. ............................................... 9

Como se maneja la Integridad .................................................................................................. 19

¿Qué es ser un hacker ético? .................................................................................................... 24

En Colombia, en los últimos años se han presentado situaciones muy renombradas

relacionadas con el Hacking. ¿Qué opina al respecto? ................................................................. 24

¿Qué es SQL-Injection? ........................................................................................................... 25

¿Qué mecanismos pueden establecerse para prevenir la inyección de SQL? .......................... 26

Conclusiones ............................................................................................................................ 29
1

Actividad AA11-1: Conceptualizar sobre las características y funciones de seguridad del

SGBD.

Para esta actividad se debe realizar una investigación sobre las opciones y herramientas

suministradas por un sistema manejador de base de datos (SMBD) relacionadas con la seguridad

de la información. Dentro de la investigación debe tener presente los siguientes aspectos:

 Características de seguridad configurables.

 Cuentas de Usuario y privilegios sobre los objetos del Sistema.

 Como se maneja la Integridad

 Además, responder estas preguntas

 ¿Qué es ser un hacker ético?

 En Colombia, en los últimos años se han presentado situaciones muy renombradas

relacionadas con el Hacking. ¿Qué opina al respecto?

 ¿Qué es SQL-Injection?

 ¿Qué mecanismos pueden establecerse para prevenir la inyección de SQL?


2

MICROSOFT SQL SERVER

Es un sistema de administración de bases de datos relacionales (RDBMS) que contiene pocos

componentes y subcomponentes. Cada componente en SQL Server tiene su propio mecanismo

de seguridad que está casi separado el uno del otro. La seguridad de Database Engine incluye la

cuenta de servicio, la instancia y la seguridad de las bases de datos.

La mayoría de los desarrolladores y profesionales de TI solo piensan en el cifrado como único

mecanismo para proteger sus datos o aplicaciones. La seguridad en el entorno de SQL Server no

está limitada a la encriptación: SQL Server debe tener seguridad física para proteger todo el rack

del servidor contra cualquier problema vulnerable y también la seguridad raíz de la instancia

de SQL Server. La seguridad en SQL Server puede ser Autenticación y Autorización de usuarios

contra datos e instancia de SQL Server. Recuerde siempre crear un entorno seguro para su SQL

Server, debe tener seguridad en las fases de Diseño, Desarrollo e Implementación de su software

y bases de datos. La mayoría de los problemas de seguridad surgen de la fase de Diseño y

Desarrollo.

Cuenta de servicio de Microsoft SQL Server

Microsoft SQL Server es una aplicación de modo de usuario, aunque se ejecuta en el servicio

de Windows. La cuenta de servicio es completamente una cuenta de usuario de Windows y

proporciona privilegios de seguridad para que el servicio SQL Server acceda a los recursos de la
3

plataforma Windows, como el sistema de archivos, la red y el registro. El punto más importante

es que SQL Server Service Account no se debe compartir con otras instancias de SQL Server y

se prefiere estar en un controlador de dominio (DC).

Capas de seguridad de SQL Server

Microsoft SQL Server tiene varias capas de seguridad, la primera capa es la seguridad del

canal de comunicación que es aplicada por TSL o protocolo SSL. La segunda capa está en el

nivel de instancia que está protegido por la API de

protección de datos de Windows (DPAPI), DPAPI es en la función de cifrado en la

plataforma de Windows para cifrar y descifrar datos y el algoritmo es diferente en cada máquina.

Los inicios de sesión, los roles de servidor y las credenciales son objetos de seguridad de nivel de

instancia en SQL Server y el usuario, el certificado, las funciones, los esquemas y las claves de

cifrado son objetos de seguridad de nivel de base de datos. La figura siguiente muestra las capas

de seguridad de SQL Server.

SQL Server Service Key es la clave de cifrado básica en la plataforma SQL Server y está

protegida por DPAPI, la clave de servicio siempre se crea mediante el proceso de SQL Server

durante el primer inicio y el usuario no puede crearla, el usuario tiene la capacidad de hacer una

copia de seguridad y restaurarla en la misma instancia u otras instancias. La clave maestra es una

clave opcional en cada base de datos y puede protegerse mediante la clave de servicio o una

contraseña segura proporcionada por el usuario. El usuario puede hacer una copia de seguridad

de la clave maestra y restaurarla en la misma base de datos u otra base de datos. Regenerar la
4

clave del servicio regenerará todas las claves secundarias, como las claves maestra y de

encriptación (simétrica o asimétrica).

Algoritmos y mecanismo de cifrado de SQL Server

El algoritmo de cifrado varía en SQL Server y depende de la clave de cifrado, no todas las

claves de cifrado admiten todos los algoritmos en SQL Server. SQL Server puede admitir

algoritmos de cifrado como AES, AES_128, AES_192, AES_256, DES, Triple_DES,

RSA_2048, MD5, SHA1, SHA2_512 (Introducido en SQL Server 2012) y RC4.

SQL Server proporciona una función para encriptar la base de datos para evitar que se lea la

base de datos robada. El cifrado de la base de datos es una opción opcional en cada base de

datos. SQL Server no cifra la base de datos completa al mismo tiempo cuando la característica

está habilitada en una base de datos, SQL Server encriptará cada página cuando el proceso

“Lazywriter” necesita escribir la página en el disco y descifrarla cuando lee la página del disco.

La función de cifrado de la base de datos se denomina “Cifrado transparente de la base de datos”

y solo está disponible en las ediciones “Enterprise” y se presentó en SQL Server 2005.

La seguridad de SQL Server no está completa en la instancia, debe haber un entorno de red

seguro para reducir o evitar ataques al servidor. Para garantizar la seguridad del SQL Server,
5

existen algunos factores, como la cuenta de servicio, el protocolo de comunicación y la

configuración del firewall.

SQL Server es un proceso de servicio de Windows y la plataforma de Windows lo ejecuta

como un proceso de modo de usuario, luego necesita una cuenta de Windows para iniciarlo y

proporciona privilegios de seguridad. La cuenta de servicio puede ser una cuenta de usuario o

una cuenta de sistema, la plataforma Windows Server 2008 R2 y, más adelante, la “Cuenta de

servicio virtual” que comienza con “NT Service \”. Tenga en cuenta que SQL Server no necesita

privilegios de seguridad del administrador, solo necesita tener privilegios para enumerar

directorios y acceder a los archivos de registro de errores, archivos de datos y archivos de

registro. Hay tres cuentas integradas de Windows tales como “Sistema local”, “Servicio de red”

y “Servicio local”, que ninguno de ellos necesita contraseña.

Usando la cuenta de servicio virtual

La cuenta de servicio virtual se introduce en Windows Server 2008 R2 y no requiere

administración de contraseñas. Se crea una vez que el servicio SQL Server se instala

correctamente y el administrador no tiene derecho a eliminar o agregar ninguna cuenta de

servicio virtual. El nombre de la cuenta del servicio virtual se inicia con “NT Service \”.

Encriptando la sesión con SSL

SQL Server transfiere datos a través de la red con el protocolo Tabular Data Stream (TDS),

que es el formato estándar para que SQL Server se comunique con la aplicación cliente. Los

piratas informáticos pueden detectar la red mediante la aplicación “WireShark” y explorar los
6

datos transferidos a través de la red. Para proteger los datos en la red, SQL Server puede

encriptar el protocolo TDS con protocolo SSL. Para habilitar el protocolo SSL, SQL Server

necesita un certificado auto firmado o un certificado autorizado de los proveedores de

certificados. Los administradores pueden habilitar el protocolo SSL en SQL Server habilitando la

opción “Forzar cifrado” o mediante la opción “Encriptar” en la cadena de conexión de la

aplicación.

Configurar un servidor de seguridad para acceso a SQL Server

Para proteger el entorno SQL Server, los administradores usan Firewall para controlar la

conexión entrante y saliente, en el entorno SQL Server algunos números de puerto deben

configurarse correctamente para las conexiones entrantes y salientes; de lo contrario, SQL Server

no podrá acceder a las aplicaciones cliente. Debajo de los puertos de SQL Server no se deben

bloquear en la configuración del Firewall.

 Puerto TCP 1433 (motor de base de datos).

 Puerto UDP 1434 (navegador).

 Puerto TCP 2383 (Analysis Services)

 Puerto TCP 4022 (Service Broker)

El siguiente código devuelve todos los puertos que SQL Server usa actualmente en su

entorno.

SELECT * FROM Sys.Endpoints WHERE Type = 4;


7

El explorador de SQL Server es un proceso de servicio de Windows para proporcionar el

número de puerto de la instancia con nombre de SQL Server y administrar los números de puerto

dinámico. Deshabilitar el Navegador del Servidor SQL puede causar una falla en la conexión del

usuario.

Cifrado de base de datos transparente

La característica Transparent Database Encryption (TDE) se presenta en SQL Server 2008, la

característica TDE encripta toda la base de datos con la clave proporcionada y puede encriptar

los datos y el archivo de registro al mismo tiempo. TDE es totalmente transparente desde la

perspectiva del usuario y la aplicación. TDE puede admitir claves de cifrado como

“Tripple_DES”, “AES_128”, “AES_192” y “AES_256”. Solo las ediciones “Enterprise”,

“Developer” y “Data Center” de SQL Server tienen esta característica única.

La detención de servicios no utilizados puede mejorar el rendimiento general de SQL Server y

reducir el riesgo de seguridad, y los administradores pueden detener servicios no utilizados de

SQL Server como “Integration Services”, “Analysis Services” o “Reporting Services”. Y los

administradores pueden desactivar de forma segura los servicios a continuación, especialmente

cuando hay un servidor dedicado para el entorno de SQL Server.


8

 Cliente DHCP

 Cliente DNS

 Conciencia de ubicación de red

 Cola de impresión

 Servicio de informe de errores de Windows

 Firewall de Windows (si hay un firewall de red)

 Detección de hardware de Shell

Asegurar el sector vinculado

Linked-Server es otra característica de SQL Server que puede conectar la instancia de SQL

Server a otra instancia de SQL Server u Oracle Database para transferir datos. Linked-Server

tiene algunas opciones de seguridad como la siguiente tabla.

Opción Descripción

El acceso está limitado a inicios de sesión


No se ha hecho
definidos explícitamente en la lista de mapeo

El servidor vinculado aplicará el permiso de


Estar hecho sin usar un contexto de seguridad
usuario invitado en la base de datos

Aplica la suplantación para todos los inicios de


Conéctese utilizando el contexto de seguridad
sesión no mapeados, igual que la casilla de
actual de inicio de sesión
verificación de suplantación

Permite que todos los inicios de sesión no

Hacerse usando este contexto de seguridad mapeados se conecten usando el inicio de sesión de

SQL Server distante


9

Las primeras medidas que suelen tomar los administradores es desactivar las características

“XP_CMDShell”, “Procedimiento de automatización OLE”, “OpenRowSet” y

“OpenDataSource” en SQL Server para reducir el riesgo de seguridad de los ataques de SQL

Server. Endpoint es una especie de puerta para que SQL Server se comunique con usuarios y

aplicaciones. Endpoint puede ser creado y utilizado por el usuario o el sistema. El protocolo del

punto final puede ser HTTP o TCP en SQL Server 2005 y SQL Server 2008 – R2 y solo TCP en

SQL Server 2012. El extremo definido por el usuario puede ser para TSQL, Service Broker o

Database Mirroring.

CUENTAS DE USUARIO Y PRIVILEGIOS SOBRE LOS OBJETOS DEL SISTEMA.

Las cuentas de inicio usadas para iniciar y ejecutar SQL Server pueden ser cuentas de usuario

de dominio, cuentas de usuario local, cuentas de servicio administradas, cuentas

virtualeso cuentas del sistema integradas. Para poder iniciarse y ejecutarse, cada servicio de SQL

Server debe tener una cuenta de inicio que se configura durante la instalación.

Ahora se describen las cuentas que se pueden configurar para iniciar los servicios de SQL

Server, los valores predeterminados que usa el programa de instalación de SQL Server, el

concepto de SID por servicio, las opciones de inicio y la configuración del firewall.

 Cuentas de servicio predeterminadas

 Inicio automático

 Configurar el tipo de inicio del servicio

 Puerto de firewall
10

Cuentas de servicio predeterminadas

En la tabla siguiente se enumeran las cuentas de servicio predeterminadas que utiliza el

programa de instalación para instalar todos los componentes. Las cuentas predeterminadas

enumeradas son las recomendadas, si no se especifica lo contrario.

Servidor independiente o controlador de dominio

Windows 7 y Windows Server

Componente Windows Server 2008 2008 R2 y posterior

Motor de base de SERVICIO DE RED Cuenta virtual*

datos

eSQL Server SERVICIO DE RED Cuenta virtual*

SSAS SERVICIO DE RED Cuenta virtual* **

SSIS SERVICIO DE RED Cuenta virtual*

SSRS SERVICIO DE RED Cuenta virtual*

SQL SERVICIO DE RED Cuenta virtual*

Server Distributed

Replay Controller
11

Windows 7 y Windows Server

Componente Windows Server 2008 2008 R2 y posterior

SQL SERVICIO DE RED Cuenta virtual*

Server Distributed

Replay Client

Selector de FD SERVICIO LOCAL Cuenta virtual

(búsqueda de texto

completo)

SQL SERVICIO LOCAL SERVICIO LOCAL

Server Browser

SQL Server VSS SISTEMA LOCAL SISTEMA LOCAL

Writer

Extensiones de NTSERVICE\MSSQLLaunchpad NTSERVICE\MSSQLLaunchpad

análisis avanzado

Motor de SERVICIO DE RED SERVICIO DE RED

PolyBase
12

Windows 7 y Windows Server

Componente Windows Server 2008 2008 R2 y posterior

Servicio de SERVICIO DE RED SERVICIO DE RED

movimiento de

datos de PolyBase

*Cuando se necesitan recursos externos al equipo de SQL Server, Microsoft recomienda el

uso de una cuenta de servicio administrada (MSA), configurada con los privilegios mínimos

necesarios.

** Cuando se instala en un controlador de dominio, no se admiten las cuentas virtuales como

cuentas de servicio.

Instancia de clústeres de conmutación por error de SQL Server

Windows Server

Componente Windows Server 2008 2008 R2

Motor de base de datos Ninguno. Proporcione una cuenta Proporcione una cuenta

de usuario de dominio . de usuario de dominio .

eSQL Server Ninguno. Proporcione una cuenta Proporcione una cuenta

de usuario de dominio . de usuario de dominio .

SSAS Ninguno. Proporcione una cuenta Proporcione una cuenta

de usuario de dominio . de usuario de dominio .


13

Windows Server

Componente Windows Server 2008 2008 R2

SSIS SERVICIO DE RED Cuenta virtual

SSRS SERVICIO DE RED Cuenta virtual

Selector de FD SERVICIO LOCAL Cuenta virtual

(búsqueda de texto

completo)

SQL Server Browser SERVICIO LOCAL SERVICIO LOCAL

SQL Server VSS Writer SISTEMA LOCAL SISTEMA LOCAL

Cambiar las propiedades de las cuentas

Importante

Utilice siempre herramientas de SQL Server como el Administrador de configuración de SQL

Server para cambiar la cuenta utilizada por Motor de base de datos de SQL Server o los servicios

del Agente SQL Server , o para cambiar la contraseña de la cuenta. Además de cambiar el

nombre de cuenta, el Administrador de configuración de SQL Server realiza una configuración

adicional como actualizar la seguridad local de Windows almacenada que protege la clave

maestra de servicio para el Motor de base de datos. Otras herramientas, como el Administrador

de control de servicios de Windows, pueden cambiar el nombre de la cuenta, pero no toda la

configuración requerida.
14

Para las instancias de Analysis Services que se implementen en una granja de SharePoint,

utilice siempre Administración central de SharePoint para cambiar las cuentas de servidor para

las aplicaciones de Servicio de Power Pivot y de Servicio Analysis Services. Se actualizan la

configuración y los permisos asociados para usar la nueva información de cuenta cuando utilice

Administración central.

Para cambiar las opciones de Reporting Services , utilice la herramienta configuración de

Reporting Services.

Cuentas de servicio administradas, cuentas de servicio administradas de grupo y cuentas

virtuales

Las cuentas de servicio administradas, las cuentas de servicio administradas de grupo y las

cuentas virtuales están diseñadas para proporcionar a aplicaciones vitales como SQL Server el

aislamiento de sus propias cuentas, mientras se elimina la necesidad de que un administrador

administre manualmente el nombre de la entidad de seguridad del servicio (SPN) y las

credenciales de estas cuentas. Estas cuentas facilitan en gran medida la administración a largo

plazo de los usuarios de cuentas de servicio, las contraseñas y los SPN.

Managed Service Accounts

Una cuenta de servicio administrada (MSA) es un tipo de cuenta de dominio creada y

administrada por el controlador de dominio. Se asigna a un solo equipo de miembro para usarla

al ejecutar un servicio. El controlador de dominio administra la contraseña automáticamente. No

puede utilizar MSA para iniciar sesión en un equipo, pero un equipo puede utilizar MSA para

iniciar un servicio de Windows. Una MSA tiene la posibilidad de registrar un nombre de entidad
15

de seguridad de servicio (SPN) en Active Directory cuando se proporcionan permisos

servicePrincipalName de lectura y escritura. Una MSA se denomina con un sufijo $ , por

ejemplo, DOMINIO\NOMBREDECUENTA$ . Al especificar MSA, deje en blanco la

contraseña. Debido a que una MSA se asigna a un único equipo, no se puede utilizar en nodos

diferentes de un clúster de Windows.

Nota

El administrador de dominio debe crear la MSA en Active Directory para que la instalación

de SQL Server pueda usarla para los servicios de SQL Server .

Cuentas de servicio administradas de grupo

Una cuenta de servicio administrada de grupo es una MSA para varios servidores. Windows

administra una cuenta de servicio para los servicios que se ejecutan en un grupo de

servidores. Active Directory actualiza automáticamente la contraseña de la cuenta de servicio

administrada de grupo sin necesidad de reiniciar los servicios. Puede configurar servicios de

SQL Server para usar una entidad de seguridad de cuenta de servicio administrada de grupo. A

partir de SQL Server 2014, SQL Server admite cuentas de servicio administradas de grupo para

instancias independientes, y SQL Server 2016 y versiones posteriores para instancias de clúster

de conmutación por error y grupos de disponibilidad.

Para usar una cuenta de servicio administrada de grupo para SQL Server 2014 o posterior, el

sistema operativo debe ser Windows Server 2012 R2 o posterior. Los servidores con Windows

Server 2012 R2 necesitan que KB 2998082 esté aplicado para que los servicios puedan iniciar

sesión sin interrumpirse inmediatamente después de un cambio de contraseña.

Para más información, vea Cuentas de servicio administradas de grupo.

Nota
16

El administrador de dominio debe crear la cuenta de servicio administrada de grupo en Active

Directory para que la instalación de SQL Server pueda usarla para los servicios de SQL Server .

Virtual Accounts

Las cuentas virtuales (a partir de Windows Server 2008 R2 y Windows 7) son cuentas locales

administradas que proporcionan las siguientes características para simplificar la administración

del servicio. La cuenta virtual se administra automáticamente y la cuenta virtual puede tener

acceso a la red en un entorno de dominio. Si se usa el valor predeterminado de las cuentas de

servicio durante la instalación de SQL Server, se usará una cuenta virtual con el nombre de

instancia como nombre del servicio, con el formato NT SERVICE\ <NOMBRE DEL

SERVICIO> . Los servicios que se ejecutan como cuentas virtuales acceden a los recursos de red

mediante las credenciales de la cuenta del equipo con el

formato <nombre_dominio> \ <nombre_equipo> $ . Al especificar una cuenta virtual para

iniciar SQL Server, deje en blanco la contraseña. Si la cuenta virtual no puede registrar el

nombre principal de servicio (SPN), registre el SPN manualmente. Para más información sobre

cómo registrar un SPN manualmente, consulte Registro manual de SPN.

Nota

No se pueden usar cuentas virtuales para la instancia de clúster de conmutación por error

de SQL Server , ya que la cuenta virtual no tendría el mismo SID en cada nodo del clúster.

En la tabla siguiente se muestran ejemplos de nombres de cuenta virtuales.


17

ssNoVersion Nombre de cuenta virtual

Instancia predeterminada del servicio del Motor NT SERVICE\MSSQLSERVER

de base de datos .

Instancia con nombre de un servicio de Motor de NT SERVICE\MSSQL$PAYROLL

base de datos denominado PAYROLL

SQL Server en la instancia predeterminada NT

de SQL Server SERVICE\SQLSERVERAGENT

SQL Server en una instancia de SQL NT

Server denominada PAYROLL SERVICE\SQLAGENT$PAYROLL

Para obtener más información sobre las cuentas de servicio administradas y las cuentas

virtuales, vea la sección Managed service account and virtual account concepts (Conceptos

de cuentas de servicio administradas y cuentas virtuales) de Service Accounts Step-by-Step

Guide (Guía paso a paso de cuentas de servicio) y Managed Service Accounts Frequently Asked

Questions (FAQ) (P+F sobre cuentas de servicio administradas).

Nota de seguridad: Ejecute siempre los servicios SQL Server con los derechos de usuario

mínimos posibles. Use una MSA o una cuenta virtual siempre que sea posible. Cuando no se

puedan usar MSA ni cuentas virtuales, emplee una cuenta de usuario específica con privilegios

bajos o la cuenta de dominio en lugar de una cuenta compartida para los servicios de SQL

Server . Utilice cuentas independientes para los diferentes servicios de SQL Server . No otorgue

permisos adicionales a la cuenta de servicio ni a los grupos de servicios de SQL Server . Los
18

permisos se concederán a través de la pertenencia a un grupo o se concederán directamente a un

SID por servicio, siempre que se admita su uso.

Inicio automático

Además de las cuentas de usuario, cada servicio tiene tres posibles estados de inicio que los

usuarios pueden controlar:

Deshabilitado El servicio se ha instalado, pero no se ejecuta actualmente.

Manual : el servicio se ha instalado, pero solo se iniciará cuando otro servicio o aplicación

necesite su funcionalidad.

Automático : el sistema operativo inicia automáticamente el servicio.

El estado de inicio se selecciona durante la instalación. Al instalar una instancia con nombre,

el servicio SQL Server Browser debe establecerse para iniciarse automáticamente.

Puerto de firewall

En la mayoría de los casos, cuando se instala inicialmente, el Motor de base de datos puede

conectarse con herramientas como SQL Server Management Studio instaladas en el mismo

equipo que SQL Server. El programa de instalación deSQL Server no abre los puertos en el

firewall de Windows. Las conexiones desde otros equipos pueden no ser posibles hasta que el

Motor de base de datos se configura para escuchar en un puerto TCP y el puerto adecuado se

abre para las conexiones en el firewall de Windows.


19

COMO SE MANEJA LA INTEGRIDAD

Niveles de la integridad de datos

La integridad de datos se define en los siguientes niveles:

Integridad de dominio: Se conoce como el dominio de un atributo al conjunto de valores

aceptables para dicho atributo. La integridad de dominio establece qué condiciones deben

cumplir los valores a insertar en una columna. La integridad de dominio se define mediante

reglas de validación, valores predeterminados, conjunto de valores permitidos en la columna

(llave foránea), tipo y formato de los datos.

Integridad de entidad: Una tabla almacena los datos de cada una de las ocurrencias de una

entidad. La entidad (o tabla) requiere que todas sus filas sean únicas. Esto se garantiza

definiendo para cada fila de la entidad un identificador único (llave primaria).

Integridad referencial: La integridad referencial garantiza que la relación entre la llave

primaria (en la tabla referenciada) y la llave foránea (en la tabla de referencia) siempre se

mantiene. Una fila en una tabla referenciada no puede anularse, ni cambiar su valor de la llave

primaria, si una llave foránea se refiere a la fila.

Los modos de integridad

La integridad de datos se puede definir como parte de la declaración de una tabla, ó también

mediante programación.
20

Integridad declarativa: La integridad declarativa se establece cuando definimos la integridad

de datos como parte de la definición de la tabla. Consiste en la creación de restricciones

(constraints), y se define mediante las instrucciones CREATE TABLE y ALTER TABLE.

Integridad procedural: La integridad procedural se establece cuando definimos la integridad

de datos a través de la programación. Consiste en la creación de desencadenantes (triggers),

procedimientos almacenados (stored procedures), y funciones (user defined functions).

Las restricciones (constraints)

Las restricciones son un método declarativo de definición de la integridad de datos ya que

ellas se definen al momento de crear la tabla (con la sentencia CREATE TABLE), o al momento

de modificar la definición de la tabla (con la sentencia ALTER TABLE). En otras palabras, una

restricción forma parte de la definición de la tabla. Las restricciones son el método preferido para

dar fuerza a la integridad de los datos.

Tipos de restricciones

Las restricciones son un método estándar ANSI para forzar la integridad de los datos.

Garantizan que los datos ingresados en las columnas sean valores válidos y que se mantengan las

relaciones entre las tablas.


21

Las restricciones se definen al momento de definir la tabla con las sentencias CREATE

TABLE o ALTER TABLE.

CREATE TABLE nombre_tabla(

columna1 tipo_dato propiedades

CONSTRAINT nombre_restricción ... ,

columna2 tipo_dato propiedades

CONSTRAINT nombre_restricción ... , ... )

ALTER TABLE nombre_tabla

ADD CONSTRAINT nombre_restricción ...


22

La restricción DEFAULT (valor predeterminado)

Define cuál es el valor por defecto de una columna cuando al ejecutar INSERT no se

especifica el valor de dicha columna.

Ejemplo

USE biblioteca

ALTER TABLE prestamo

ADD CONSTRAINT df_fecha_sal

DEFAULT getdate( ) FOR pre_fec_sal

Establece que el valor predeterminado de la columna pre_fec_sal de la tabla prestamo es la

fecha del sistema.

La restricción CHECK (regla de validación)

Define la regla que debe cumplir el valor a ingresar a una columna. Se verifica

durante la ejecución de INSERT y UPDATE.

Ejemplo

ALTER TABLE ejemplar

ADD CONSTRAINT chk_disponibilidad

CHECK ( eje_dis LIKE'[ SN]' )

El contenido de la columna eje_dis de la tabla ejemplar debe ser 'S' o 'N'.

La restricción PRIMARY KEY (llave primaria)

Define cuál es la llave primaria de una tabla. La columna o combinación de columnas no debe

tener valores duplicados ni nulos.


23

Ejemplo

ALTER TABLE publicacion

ADD CONSTRAINT pk_publicacion

PRIMARY KEY CLUSTERED( pub_cod )

Establece que la columna pub_cod de la tabla publicacion es la llave primaria de la tabla.

Crea un índice clustered único de nombre pk_publicación para la columna pub_cod.

La restricción UNIQUE (valores únicos)

Define que mas de una fila no pueden tener el mismo valor en una columna. Permite nulo.

Ejemplo:

ALTER TABLE tema

ADD CONSTRAINT u_descripcion

UNIQUE NONCLUSTERED( tem_des )

Establece que la columna tem_des de la tabla tema no puede tener descripciones iguales.

Crea un índice único de nombre u_descripcion.

La restricción FOREIGN KEY (llave foránea)

Define la integridad referencial. La restricción FOREIGN KEY se define sobre la columna

llave foránea de la tabla secundaria. La tabla primaria debe tener definida su restricción

PRIMARY KEY o UNIQUE.

Ejemplo

ALTER TABLE ejemplar

ADD CONSTRAINT fk_ejemplar_publicacion


24

FOREIGN KEY( pub_cod )

REFERENCES publicacion( pub_cod )

Establece la relación entre las tablas publicación y ejemplar.

¿QUÉ ES SER UN HACKER ÉTICO?

Es utilizar los conocimientos de informática y seguridad para encontrar vulnerabilidades o

fallas de seguridad en el sistema, con el objetivo de reportarlas en la organización para que se

tomen todas las medidas necesarias que posibilite prevenir una catástrofe cibernética, como el

robo de información.

EN COLOMBIA, EN LOS ÚLTIMOS AÑOS SE HAN PRESENTADO SITUACIONES

MUY RENOMBRADAS RELACIONADAS CON EL HACKING. ¿QUÉ OPINA AL

RESPECTO?

Los Hacking son realizadas por personas con conocimientos avanzados sobre las debilidades

de las computadoras, de las redes informáticas y de seguridad que utilizan todo ese conocimiento

para beneficio propio afectando otras personas, estos delitos son hechos en gran porcentaje en la

falta de conocimiento de los temas de seguridad (en cuanto a claves de tarjetas débito, crédito,

instalación de software poco confiables, etc ), en Colombia El 5 de enero de 2009, el Congreso

de la República de Colombia promulgó la Ley 1273 “Por medio del cual se modifica el Código

Penal, se crea un nuevo bien jurídico tutelado – denominado “De la Protección de la información

y de los datos”- y se preservan integralmente los sistemas que utilicen las tecnologías de la
25

información y las comunicaciones, entre otras disposiciones”, pero para mi concepto esto no

debe ser todo, hay que brindar pedagogías sobre el tema, en las mismas entidades, colegios,

universidades, por los medios de tv, radio, aún más intensos de lo que se viene haciendo, porque

la idea no es castigar por algo que ocurrió, sino, evitar que el hecho ocurra y esto se hace en gran

parte educando a la gente en el tema.

¿QUÉ ES SQL-INJECTION?

Sql Injection ó Inyección SQL es una vulnerabilidad que permite al atacante enviar o

“inyectar” instrucciones SQL de forma maliciosa y malintencionada dentro del código SQL

programado para la manipulación de bases de datos, de esta forma todos los datos almacenados

estarían en peligro. La finalidad de este ataque es poder modificar del comportamiento de

nuestras consultas a través de parámetros no deseados, pudiendo así falsificar identidades,

obtener y divulgar información de la base de datos (contraseñas, correos, información relevante,

entre otros), borrar la base de datos, cambiar el nombre a las tablas, anular transacciones, el

atacante puede convertirse en administrador de la misma.

Esto ocurre normalmente a la mala filtración de las variables en un programa que tiene o crea

SQL, generalmente cuando solicitas a un usuario entradas de cualquier tipo y no se encuentran

validadas, como por ejemplo su nombre y contraseña, pero a cambio de esta información el

atacante envía una sentencia SQL invasora que se ejecutará en la base de datos.
26

¿QUÉ MECANISMOS PUEDEN ESTABLECERSE PARA PREVENIR LA INYECCIÓN

DE SQL?

Medidas a tomar para protegerse de las inyecciones SQL

A la hora de desarrollar una aplicación, es muy complicado crear una herramienta totalmente

segura a las primeras de cambio. La falta de tiempo y la intervención de varios programadores

para su desarrollo, son factores que juegan en contra de la seguridad. A pesar de estos

inconvenientes, siempre se pueden tomar medidas de seguridad que nos ayuden a desarrollar

aplicaciones más robustas, ajenas a este tipo de problemas.

Algunos consejos para evitar sufrir el ataque por inyección de código SQL en nuestros

desarrollos:

a) Escapar los caracteres especiales utilizados en las consultas SQL

Al hablar de “escapar caracteres” estamos haciendo referencia a añadir la barra invertida “\”

delante de las cadenas utilizadas en las consultas SQL para evitar que estas corrompan la

consulta. Algunos de estos caracteres especiales que es aconsejable escapar son las comillas

dobles (“), las comillas simples (‘) o los caracteres \x00 o \x1a ya que son considerados como

peligrosos pues pueden ser utilizados durante los ataques.

Los distintos lenguajes de programación ofrecen mecanismos para lograr escapar estos

caracteres. En el caso de PHP podemos optar por la función mysql_real_scape_string(), que toma

como parámetro una cadena y la modifica evitando todos los caracteres especiales,

devolviéndola totalmente segura para ser ejecutada dentro de la instrucción SQL.


27

b) Delimitar los valores de las consultas

Aunque el valor de la consulta sea un entero, es aconsejable delimitarlo siempre entre

comillas simples. Una instrucción SQL del tipo:

SELECT nombre FROM usuarios WHERE id_user = $id

Será mucho más fácilmente inyectable que:

SELECT nombre FROM usuarios WHERE id_user = ‘$id’

Donde $id es un número entero.

c) Verificar siempre los datos que introduce el usuario

Si en una consulta estamos a la espera de recibir un entero, no confiemos en que sea así, sino

que es aconsejable tomar medidas de seguridad y realizar la comprobación de que realmente se

trata del tipo de dato que estamos esperando. Para realizar esto, los lenguajes de programación

ofrecen funciones que realizan esta acción, como pueden ser ctype_digit() para saber si es un

número o ctype_alpha () para saber si se trata de una cadena de texto en el caso del lenguaje

PHP.

También es aconsejable comprobar la longitud de los datos para descartar posibles técnicas de

inyección SQL, ya que si por ejemplo estamos esperando un nombre, una cadena

extremadamente larga puede suponer que estén intentando atacarnos por este método. En el caso

de PHP, podemos utilizar la función strlen() para ver el tamaño de la cadena.

d) Asignar mínimos privilegios al usuario que conectará con la base de datos

El usuario que utilicemos para conectarnos a la base de datos desde nuestro código debe tener

los privilegios justos para realizar las acciones que necesitemos. No utilizar nunca un usuario

root con acceso a todas las bases de datos ya que de esta forma estaremos dando facilidades a los

hackers para que puedan acceder a toda la información.


28

e) Programar bien

Aunque pueda parecer una tontería, no hay mejor medida para evitar este tipo de ataques que

realizar una buena programación, poniendo en práctica las necesidades básicas y el interés para

desarrollar una aplicación totalmente segura.

Además de las medidas que podemos tomar a la hora de implementar el código, siempre

podemos acudir a auditorías de código para asegurarnos de que no hemos dejado ningún tipo de

puertas abiertas, aunque suelen ser procesos caros realizados por terceras empresas.
29

CONCLUSIONES

En el desarrollo de la actividad se logró el apoderamiento de la temática de las características

que deben tener los SMBD y conocer para mantener la integridad, seguridad con las

herramientas, programas o módulos que se integran en ellos permitiendo crear estructuras de

robustas u optimas para la base de datos.

Se logra entrar en contexto con la seguridad informática cuando se abordan aspectos

relacionados con la vulnerabilidad, hackeo e impacto de estos en un sistema manejador de base

de datos o el sistema informático en general.


30

Bibliografía

Drsoftworld. (s.f.). La integridad de datos - SQL SERVER. Obtenido de

http://drsoftworld.blogspot.com/2018/04/la-integridad-de-datos-sql-server.html

Micrososft. (s.f.). Configurar los permisos y las cuentas de servicio de Windows. Obtenido de

https://docs.microsoft.com/es-es/sql/database-engine/configure-windows/configure-windows-

service-accounts-and-permissions?view=sql-server-ver15

OpenWebinars. (s.f.). Definición de SQL Injection. Obtenido de

https://openwebinars.net/blog/que-es-sql-injection/

Sothis. (s.f.). Seguridad en Microsoft SQL Server. Obtenido de

https://www.sothis.tech/seguridad-en-microsoft-sql-server/

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