Clase Seguridad
Clase Seguridad
Clase Seguridad
Seguridad
+ - Seleccionar
un Modo de Autenticación
o Inicios de Sesión
- Usuarios
* Esquemas
de Base de Datos
1]
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Introducción
21
Base de Datos II SQL Server 2014 - Seguridad Clase 8
SQL Server 2005 soporta dos modos de autenticación, tal y como vimos en el
apartado de instalación: Autenticación Windows y Autenticación Mixta. Cuando
trabajamos en modo Autenticación Windows, que es el predeterminado y aconsejado,
solo los usuarios autorizados de sistema operativo podrán conectarse al servidor SQL
Server. En el modo de Autenticación Windows, podemos proporcionar acceso tanto a
usuarios, como a grupos de sistema operativo.
Para cambiar el Modo de Autenticación, una vez instalada la instancia de SQL Server
Express, lo más sencillo es utilizar la herramienta SQL Server Management Studio
Express. Para ello debes de seguir los siguientes pasos como muestra la figura:
* 1. Inicia SQL Server Management Studio Express desde el Menú Inicio.
* 2. Desde el Object Explorer, haz clic con el botón de la derecha en la instancia y
selecciona Propiedades.
* 3. Desde la pestaña de Security podrás modificar el Modo de Autenticacién
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Nota: Para que este cambio surta efecto deberás de reiniciar el servicio
de SQL Server.
Para decidir que Modo de Autenticación es el más conveniente, deberás de tener en cuenta:
SQL Server utiliza una autenticación en dos pasos: En primer lugar, la cadena de
conexión especifica una autenticación a nivel de Instancia de SQL Server Express.
Una vez se ha autenticado el inicio de sesión, se comprueba si ese inicio de sesión
tiene acceso a la base de datos a la que se pretende acceder. Para ello, SQL Server
mantiene una asociación entre Inicio de Sesión a nivel de Instancia y Usuario a nivel
de Base de Datos.
al
Base de Datos II SQL Server 2014 - Seguridad Clase 8
El primer paso, para proporcionar acceso a una Base de Datos es crear un inicio de
sesión para el usuario que necesita el acceso. Podemos crear dos tipos de inicio de
sesión: Inicio de Sesión Windows (usuarios o grupos) e Inicios de Sesión SQL Server
(que solo podrán crearse en Autenticación Mixta).
También podemos utilizar SQL Server Management Studio Express. En Object Explorer,
despliega la Instancia, despliega la carpeta de Security y haz clic en Logins. Si haces
clic con botón de la derecha, New Login... En la figura puedes ver el cuadro de diálogo.
si
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Una vez hemos creado el Inicio de Sesión para poder acceder a la instancia, debemos
de proporcionar acceso a ese Inicio de Sesión a la base de datos deseada. Para ello
deberemos de crear un usuario en la base de datos y asociarlo al inicio de sesión. El
siguiente cédigo es un ejemplo de este proceso, en el que estamos proporcionando
acceso al Inicio de Sesión [EXPRESS\Usuario] a la base de datos DemoMSDN:
USE DemoMSDN
GO
CREATE USER Usuario FOR LOGIN [EXPRESS\Usuario]
Desde SQL Management Studio podemos realizar esta operación de de formas. Desde
las Propiedades del Inicio de Sesión o en la base de datos, creando un usuario. LA
forma más sencilla es realizarlo desde las propiedades del Inicio de Sesión. Para ello
en las propiedades de un Inicio de Sesión vete a la opción de User Mapping y
selecciona las bases de datos a las que quieres proporcionar acceso. La siguiente
figura muestra dicha opción:
Base de Datos II SQL Server 2014 - Seguridad Clase 8
0]
SOOCOONO
SQL Server 2005 introduce el concepto ANSI de Esquema, a través del cual podemos
agrupar los objetos de base de datos, tablas, vistas, procedimientos almacenados,
etc., siguiendo el criterio que mejor se adecue a nuestras necesidades. El nombre de
esquema formará parte del nombre completo de los objetos que pertenecen a dicho
esquema. Por ejemplo, si creamos un Esquema denominado Ventas, y dentro de él
una tabla denominada Pedidos, deberemos de calificar la tabla utilizando el nombre
del esquema, al estilo [Link]. Otra de las grandes ventajas del uso de
Esquemas, es que podremos asignar permisos a este nivel, en lugar de tener que
asignar permisos a los diferentes objetos de forma individual. Las siguientes
sentencias ilustran este ejemplo
USE MASTER
GO
7]
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Go |
-- Nos conectamos a la Base de Datos
USE TestDB
GO
-- Creamos el Schema Ventas
CREATE SCHEMA Ventas
Go
--Creamos la Tabla Pedidos en el Esquema Ventas
CREATE TABLE [Link] (idPedido int primary key, FechaPedido
smalidatetime, ¡dCliente int, Estado tinyint)
GO
-- Creamos el usuario alumno enlazado con el Inicio de Sesién Alumno
CREATE USER Alumno FOR LOGIN Alumno
GO
-- Otorgamos el permiso de Select al usuario Alumno sobre el Esquema
Ventas.
GRANT SELECT ON SCHEMA: :Ventas TO Alumno
Mantener registros históricos de los cambios de datos a lo largo del tiempo puede ser
beneficioso para abordar los cambios accidentales en los datos. También puede ser
útil para la auditoría de cambios de aplicación y puede recuperar elementos de datos
cuando un actor malintencionado ha introducido cambios de datos que no estaban
autorizados.
+ Uselas tablas temporales para conservar las versiones de registros a lo largo del tiempo y
para ver los datos tal y como han pasado en el período de vida del registro para
proporcionar una vista histórica de los datos de la aplicación.
+ - Lastablas temporales se pueden usar para proporcionar una versión de la tabla actual en
cualquier momento dado.
Evaluación y herramientas de evaluación de seguridad
Ayuda a saber cuáles son algunas de las amenazas comunes que ponen en riesgo a
SQL Server:
+ — Inyección de código SQL: es un ataque en el que se inserta código malintencionado en
cadenas que posteriormente se pasan a una instancia de SQL Server para su ejecución.
< El proceso de inyección consiste en finalizar una cadena de texto y anexar un
nuevo comando. Como el comando insertado puede contener cadenas adicionales
que se hayan anexado al mismo antes de su ejecución, el atacante pone fin a la
cadena inyectada con una marca de comentario —-.
SQL Server ejecutará cualquier consulta válida sintácticamente que se reciba.
. u… en cuenta los ataques de canal lateral, el malware y otras amenazas.
Inyección de código SQL
Para minimizar el riesgo de una inyección SQL, tenga en cuenta los siguientes
elementos:
+ - Revise cualquier proceso SQL que construya instrucciones SQL para las vulnerabilidades de
inyección.
+ — Construya instrucciones SQL generadas dinámicamente de forma parametrizada.
* - Los desarrolladores y administradores de seguridad deben revisar todo el código que
llama a EXECUTE, EXEC O sp_executesql.
* No permitir los siguientes caracteres de entrada:
c — ::Delimitador de consultas
< — *: Delimitador de cadenas de datos de caracteres
Delimitador del comentario de una sola línea.
o /* ... */:Delimitadores de comentarios.
c - xp_:Procedimientos almacenados extendidos del catálogo, como xp_crdshe11.
* Noserecomienda usar xp_cndshel1 en ningún entorno de SQL Server.
Use SQLCLR en su lugar o busque otras alternativas debido a los riesgos
que xp_cndshe11 puede introducir.
Base de Datos II SQL Server 2014 - Seguridad Clase 8
* — Valide siempre las entradas del usuario y limpie las salidas de error de que se desbordan y
exponen al atacante.
Riesgos de canal lateral
Para minimizar el riesgo de un ataque de canal lateral, tenga en cuenta lo siguiente:
+ — Asegúrese de que se aplican las revisiones más recientes de la aplicación y del sistema
operativo.
» Enelcaso de las cargas de trabajo hibridas, asegúrese de que se aplican las revisiones de
firmware más recientes para cualquier hardware local.
+ - EnAzure, para cargas de trabajo y aplicaciones altamente confidenciales, puede agregar
protección adicional contra ataques de canal lateral con máquinas virtuales aisladas, hosts
dedicados o mediante el uso de máquinas virtuales de proceso confidencial, como las
series DC y máquinas virtuales que usan los procesadores EPYC AMD de 32 generación.
Amenazas de infraestructura
10|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
ni habilitar el inicio de sesión de SA. Si debe tener un inicio de sesión de SQL, use una de
las estrategias siguientes:
o Cree una cuenta de SQL con un nombre único que sea miembro de
sysadmin. Puede hacerlo desde el portal si habilita Autenticación de
SQL durante el aprovisionamiento.
- Sitiene que usar el inicio de sesión de SA, habilite el inicio de sesión
después del aprovisionamiento y asigne una nueva contraseña segura.
Riesgos de ransomware
Las entidades de seguridad son los individuos, grupos y procesos que tienen acceso a
SQL Server. Los "elementos protegibles" son el servidor, la base de datos y los
objetos incluidos en la base de datos. Cada uno de estos elementos dispone de un
conjunto de permisos que pueden configurarse para reducir el área expuesta de SQL
Server. En la tabla siguiente se incluye información sobre las entidades de seguridad
y los elementos protegibles.
Entidades de seguridad (motor de base de datos)
Las entidades de seguridad son entidades que pueden solicitar recursos de SQL
Server. Igual que otros componentes del modelo de autorización de SQL Server , las
entidades de seguridad se pueden organizar en jerarquías. El ámbito de influencia de
una entidad de seguridad depende del ámbito de su definición: Windows, servidor o
base de datos; y de si la entidad de seguridad es indivisible o es una colección. Un
Inicio de sesión de Windows es un ejemplo de entidad de seguridad indivisible y un
Grupo de Windows es un ejemplo de una del tipo colección. Toda entidad de
seguridad tiene un identificador de seguridad (SID). Este tema se aplica a todas las
versiones de SQL Server, pero hay algunas restricciones en las entidades de
seguridad a nivel de servidor de SQL Database o Azure Synapse Analytics.
11|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
+ -
Inicio de sesión para la autenticación de SQL Server
+ -
Inicio de sesión con autenticación de Windows para un usuario de Windows
+ -
Inicio de sesión con autenticación de Windows para un grupo de Windows
+ -
Inicio de sesion de autenticación de Microsoft Entra para un usuario de Microsoft
Entra
+ - Inicio de sesión de autenticación de Microsoft Entra para un grupo de Microsoft
Entra
* Rol de servidor
El usuario dbo es una entidad de seguridad de usuario especial que hay en cada base
de datos. Todos los administradores de SQL Server, los miembros del rol fijo de
servidor syeadmin, el inicio de sesión sa y los propietarios de la base de datos
especifican las bases de datos como el usuario 4bo. El usuario dbo tiene todos los
permisos en la base de datos y no se limitar ni quitar. dbo representa el propietario
de la base de datos, pero la cuenta de usuario dbo no es lo mismo que el rol fijo de
base de datos ab_owner, mientras que el rol fijo de base de datos ab_cuner no es lo
mismo que la cuenta de usuario que se registra como el propietario de la base de
datos.
El usuario abo tiene la propiedad del esquema dbo. El esquema dbc es el
predeterminado para todos los usuarios, salvo que se especifique otro. El esquema
dbo no puede quitarse.
Rol público de base de datos y de servidor
Cada inicio de sesión pertenece al rol fijo de servidor public y cada usuario de base
de datos pertenece al rol de base de datos public. Cuando a un usuario o inicio de
sesión no se le han concedido ni denegado permisos concretos para un elemento
12|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
protegible, hereda los permisos para ese elemento concedidos a public. El rol fijo de
servidor public y el de base de datos public no pueden quitarse. Sin embargo,
puede revocar los permisos de los roles pub1:c. Hay muchos de los permisos que se
asignan a los roles public de forma predeterminada. La mayoría de estos permisos
son necesarios para realizar operaciones rutinarias en la base de datos; el tipo de
tareas que todo el mundo debe poder hacer. Tenga cuidado al revocar permisos desde
el usuario o el inicio de sesión público, ya que afectará a todos los inicios de sesión y
usuarios. Normalmente, no debe denegar permisos a public, ya que la instrucción
deny invalida cualquier instrucción grant que podrían crear para los usuarios.
INFORMATION_SCHEMA, y usuarios y esquemas sys
Todas las bases de datos incluyen dos entidades que aparecen como usuarios en las
vistas de catálogo: INFORMATION SCHEMA y ays. Estas entidades son necesarias para
uso interno por parte del motor de base de datos. No se pueden modificar ni quitar.
Las entidades de seguridad de servidor con nombres incluidos entre signos de número
dobles (##) son exclusivamente para uso interno del sistema. Las siguientes entidades de
seguridad se crean a partir de certificados cuando se instala SQL Server, y no deben
eliminarse.
» ##MS_SQLResourceSigningCertificate##
» ##MS_SQLReplicationSigningCertificate##
##MS_SQLAuthenticatorCertificate##
#MS_AgentSigningCertificate#t#
#MS_PolicyEventProcessingLogin##
#MS_PolicySigningCertificate##
##MS_PolicyTsqlExecutionLogin##
Estas cuentas principales no tienen contraseñas que los administradores puedan cambiar, ya
que se basan en certificados emitidos a Microsoft.
Usuario guest
Cada base de datos incluye un usuario quest. Los permisos concedidos al usuario
guest se aplican a todos los usuarios que tienen acceso a la base de datos, pero no
disponen de una cuenta en la base de datos. No se puede quitar el usuario guest,
pero se puede deshabilitar si se revoca su permiso CONNECT. El permiso CONNECT se
puede revocar si se ejecuta REVOKE CONNECT FROM GUEST; en cualquier base de datos
que no sea master Ni tempdb.
13|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Elementos protegibles
Los elementos protegibles son los recursos cuyo acceso es regulado por el sistema de
autorización del motor de base de datos SQL Server. Por ejemplo, una tabla es un
elemento protegible. Algunos elementos protegibles pueden estar incluidos en otros,
con lo que se crean jerarquías anidadas denominadas "ámbitos" que a su vez se
pueden proteger. Los ámbitos protegibles son servidor, base de datosy esquema.
Ámbito protegible: servidor
El ámbito protegible servidor contiene los siguientes valores que puede proteger:
+ - grupo de disponibilidad
+ - Punto de conexión
+ - Iniciar sesión
* - Rol del servidor
* Base de datos
Ámbito protegible: base de datos
El ámbito protegible base de datos contiene los siguientes valores que puede
proteger:
+ Rol de aplicación
+ Ensamblado
+ - Clave asimétrica
+ Certificate
* Contrato
+ Catálogo de texto completo
+ _ Lista de palabras irrelevantes de texto completo
* Tipo de mensaje
+ - Enlace de servicio remoto
* (Base de datos) Rol
* Ruta
* Esquema
+ Lista de propiedades de búsqueda
* Service
+ - Clave simétrica
* - Usuario
Ámbito protegible: esquema
+ Tipo
+ - Colección de esquemas XML
+ - Objeto: la clase de objeto tiene los miembros siguientes:
o Agregada
o Función
z
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Procedimiento
Cola
0000
Synonym (Sinónimo)
Tabla
o Ver
o Tabla externa
15|
Base de Datos 11 SQL Server 2014 - Seguridad Clase 8
16|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
resultar inservible si está cifrada. La tabla siguiente contiene más información acerca
del cifrado en SQL Server.
Jerarquía de cifrado
SQL Server cifra los datos con una infraestructura de cifrado jerárquico y administración de
claves. Cada capa cifra la capa inferior utilizando una combinación de certificados, claves
asimétricas y claves simétricas. Las claves asimétricas y las claves simétricas pueden estar
almacenadas fuera de SQL Server en un módulo de Administración extensible de claves
(EKM).
La siguiente ilustración muestra que cada nivel de la jerarquía de cifrado cifra el nivel que
tiene por debajo y muestra las configuraciones de cifrado más comunes. El acceso al
principio de la jerarquía se suele proteger mediante una contraseña.
17|
Base de Datos 11 SQL Server 2014 - Seguridad Clase 8
Para obtener el máximo rendimiento, cifre los datos utilizando claves simétricas en
lugar de certificados o claves asimétricas.
Las claves maestras de base de datos se protegen mediante la clave maestra de
servicio. El programa de instalación de SQL Server crea la clave maestra de
servicio, que se cifra con la API de protección de datos de Windows (DPAPI).
Hay otras jerarquías de cifrado que apilan niveles adicionales.
El módulo de Administración extensible de claves (EKM) mantiene las claves
simétricas o asimétricas fuera de SQL Server.
El Cifrado de datos transparente (TDE) debe utilizar una clave simétrica
denominada clave de cifrado de base de datos que se protege bien mediante un
certificado protegido por la clave maestra de base de datos de la base de datos
maestra o bien mediante una clave asimétrica almacenada en una EKM.
La clave muestra de servicio y todas las claves maestras de base de datos son claves
simétricas.
18|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Mecanismos de cifrado
Certificados
19|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Cuando un host, por ejemplo, un servidor web seguro, designa a un emisor como
entidad emisora raíz de confianza, el host implicitamente confía en las directivas que
el emisor ha utilizado para establecer las obligaciones de los certificados que emite.
En efecto, el host confía en que el emisor ha comprobado la identidad del sujeto del
certificado. Un host designa a un emisor como entidad emisora raíz de confianza
presentando el certificado autofirmado del emisor, que contiene la clave pública de
éste, en el almacén de certificados de la entidad de certificación raíz de confianza del
equipo host. Las entidades de certificación intermedias o subordinadas solo son de
confianza si tienen una ruta válida de certificación procedente de una entidad de
certificación raíz.
El emisor puede revocar un certificado antes de que expire. La revocación cancela las
obligaciones que una clave pública tiene con una identidad que se exprese en el
certificado. Cada emisor mantiene una lista de revocación de certificados que los
programas pueden utilizar cuando estén comprobando la validez de un certificado
determinado.
Los certificados autofirmados que se crean con SQL Server cumplen el estándar X.509
y son compatibles con los campos de X.509 v1.
Claves asimétricas
Una clave simétrica es una clave que se utiliza para el cifrado y el descifrado. El
cifrado y el descifrado con una clave simétrica son más rápidos y adecuados para
usarlos de forma rutinaria con datos confidenciales de una base de datos.
El Cifrado de datos transparente (TDE) es un caso especial de cifrado que usa una
clave simétrica. TDE cifra una base de datos completa utilizando la clave simétrica
denominada clave de cifrado de base de datos. Otras claves o certificados que se
protegen bien mediante la clave maestra de base de datos o bien mediante una clave
asimétrica almacenadas en un módulo EKM protegen la clave de cifrado de base de
datos.
Configuración del Motor de base de datos de SQL Server para cifrar
conexiones
Puede cifrar todas las conexiones entrantes a SQL Server o habilitar el cifrado solo
para un conjunto específico de clientes. En cualquiera de estos escenarios, primero
20|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
debe configurar SQL Server para usar un certificado que cumpla los requisitosde
certificado para SQL Server, antes de realizar pasos adicionales en el equipo servidor
0 en los equipos cliente para cifrar los datos.
En este artículo se describe cómo configurar SQL Server para certificados (paso 1) y
cómo cambiar la configuración de cifrado de la instancia de SQL Server (paso 2).
Ambos pasos son necesarios para cifrar todas las conexiones entrantes a SQL Server
cuando se usa un certificado de una entidad comercial pública. Para otros escenarios,
consulte Casos especiales para cifrar conexiones a SQL Server.
Paso 1: Configuración de SQL Server para usar certificados
Si quiere configurar SQL Server para usar los certificados que se describen en
Requisitos de certificado para SQL Server, siga estos pasos:
21|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
Equipos con Administrador de configuración de SQL Server para SQL Server 2017 y
versiones anteriores
En la consola MMC, expanda Certificados (equipo local)>Personal, haga clic con el botón
derecho en Certificados, seleccione Todas las tareas y, luego, seleccione Importar.
Finalice el Asistente para importar certificados para agregar un certificado al equipo.
E
En la consola MMC, haga clic con el botón derecho en el certificado importado, seleccione
Todas las tareas y, luego, seleccione Administrar claves privadas. En el cuadro de diálogo
Seguridad, agregue el permiso de lectura para la cuenta de usuario que usa la cuenta de
servicio de SQL Server.
En Administrador de configuración de SQL Server, expanda Configuración de red de
SQL Server, haga clic con el botón derecho en Protocolos de <instancia de servidor> y
seleccione Propiedades.
10. En el cuadro de didlogo Protocolos de <nombre de instancia> Propiedades, en la pestaña
Certificado, seleccione el certificado que quiera en el menú desplegable del cuadro
Certificado y, después, haga clic en Aceptar.
1 Si necesita que todas las conexiones a SQL Server se cifren, consulte Paso 2: Configuración
H
de las opciones de cifrado en SQL Server. Si solo quiere habilitar el cifrado para clientes
específicos, reinicie el servicio SQL Server y consulte Casos especiales para cifrar
conexiones a SQL Server.
Paso 2: Configuración de las opciones de cifrado en SQL Server
Los pasos siguientes solo son necesarios si quiere forzar las comunicaciones cifradas para
todos los clientes:
En lineas generales, hay dos tipos de paquetes en el tráfico de red entre una
aplicación cliente de SQL Server y SQL Server: paquetes de credenciales (paquetes de
inicio de sesión) y paquetes de datos. Al configurar el cifrado (ya sea del lado servidor
0 del lado cliente), ambos tipos de paquetes siempre se cifran. Pero, incluso cuando
no se configura el cifrado, las credenciales (en el paquete de inicio de sesión) que se
transmiten cuando una aplicación cliente se conecta a SQL Server siempre se cifran.
SQL Server usa un certificado que cumple los requisitos de certificado de una entidad
de certificación de confianza si está disponible. Este certificado lo configura
manualmente el administrador del sistema mediante uno de los procedimientos ya
descritos en el artículo, o bien puede estar presente en el almacén de certificados del
equipo con SQL Server.
Certificados autofirmados generados por SQL Server
23|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
24|
Base de Datos II SQL Server 2014 - Seguridad Clase 8
25|