Documente Academic
Documente Profesional
Documente Cultură
Ficha 1966112
Instructor:
Aprendiz:
Hoy en día existe la necesidad imperante de que la información contenida en su base de datos se
mantenga segura, cumpliendo requisitos tales como la integridad y confidencialidad.
Por lo que se hace necesario implementar mecanismos de seguridad que restrinjan el acceso a la
información de personas no autorizadas. El presente trabajo describe los elementos que permiten
garantizar la seguridad de los datos en el SMBD SQL Server 2012, como es el uso del protocolo SSL,
la creación de roles, vistas y asignación de niveles de privilegios.
Puede ser configurado para utilizar varias instancias en el mismo servidor físico, la primera
instalación lleva generalmente el nombre del servidor, y las siguientes - nombres específicos (con
un guion invertido entre el nombre del servidor y el nombre de la instalación).
VERSIONES
El código fuente original de SQL Server que fue utilizado en las versiones previas a la versión 7.0
habría sido comprado de Sybase, pero fue actualizado en las versiones 7.0 y 2000, y reescrito en la
versión 2005. Generalmente, cada 2-3 años, una nueva versión es lanzada y, entre estos
lanzamientos, se proponen service packes con mejoras y correcciones de bugs, y hotfixes por
problemas urgentes en el sistema de seguridad o bugs críticos.
CARÁCTERÍSTICAS
Soporte de transacciones.
Soporta procedimientos almacenados.
Incluye también un entorno gráfico de administración, que permite el uso
de comandos DDL y DML gráficamente.
Permite trabajar en modo cliente-servidor, donde la información y datos se alojan en
el servidor y los terminales o clientes de la red sólo acceden a la información.
Además permite administrar información de otros servidores de datos.
Ejecuta aplicaciones no criticas
Integrar datos y habilitar BI Basic.
Desarrolla aplicaciones innovadoras.
Lenguaje de manipulación
SQL
Transacciones Distribuidas
Soporte OLAP
Data WareHousing
Data Mining
Soporte OLTP Básico.
Seguridad
Cifrado Transparente de Datos.
Características Detalles
Alta Disponibilidad y Recuperación Ante
AlwaysOn
Desastres
Cifrado de Datos Transparente, Administración Extensible de Claves, SQL Server Audit, Roles de
Seguridad Avanzada Servidor Definidos por el Usuario, Esquema Predeterminado para Grupos, Autenticación de
Base de Datos Independiente
Data Warehouse Índice de Almacén de Columnas, Captura de Datos Modificados, Particionamiento de Tablas,
Integration Services
Compresión Avanzada Compresión de Almacenamiento y de Copia de Seguridad
Distributed Replay, Punto de Control, Asistente para la Optimización de Base de datos,
Facilidad de Uso
Recopilación de Datos de Rendimiento, Administración Basada en Directivas
No relacional Compatibilidad con datos espaciales, FileTable
Business Intelligence Avanzada Analysis Services, Reporting Services, Minería de Datos, Modelo Semántico
Administración de Datos Maestros Master Data Services
Calidad de Datos Data Quality Services
Procesamiento de Eventos Complejos StreamInsight
La seguridad de los datos implica protegerlos de acciones indebidas que pongan en peligro su
definición, existencia, consistencia e integridad independientemente de la persona que los accede.
La seguridad de una base de datos se refiere a la protección de la informacion contra el acceso por
parte de las personas no autorizadas y la indebida destrucción o alteración. Es un componente
fundamental de la estrategia global en materia de seguridad informática, y es muy importante
como para quedarse con las configuraciones por defecto.
El analista de sistemas que se hace responsable de la seguridad debe estar familiarizado con todas
las particularidades del sistema, porque este puede ser atacado con fines ilícitos desde muchos
ángulos.
Para mantener la seguridad en una base de datos, deben cumplirse requisitos tales como:
Confidencialidad:
Autorización en sistemas de bases de datos.
Identificación y autenticación.
Código y contraseña.
Identificación por Hardware.
Características bioantropometricas.
Conocimiento, aptitudes y hábitos del usuario.
Informacion predefinida (aficiones, cultura, etc.).
Integridad:
Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones
hechas en las base de datos no provoquen la perdida de la consistencia de los datos.
En el modelo entidad – relación existen dos restricciones:
- Declaración de claves (Reglas de la Entidad)
- Forma de la relación (Regla de Integridad Referencial)
Disponibilidad:
Disponibilidad se define como la continua operatividad de los sistemas de computadoras.
Todos los componentes del sistema deben proveer de sus servicios continuamente. Aquí
se incluyen los servidores de aplicaciones y de bases de datos, Dispositivos de
almacenamiento y las redes punto a punto.
Características de seguridad
Protección de datos:
Criptografía integrada.
Cifrado transparente.
Clave extensible.
Firma de módulos de códigos.
Certificados a partir de bytes.
Claves de seguridad usando AES256.
Soporte para hashes SHA512 y SHA2 (256 y 512 bits).
Control de acceso:
Garantía de Cumplimiento:
Funciones de Seguridad
Inicios de sesión (Login): Un login es la habilidad de utilizar una instancia del Servidor SQL, está
asociado con usuario de Windows o con un usuario de SQL. Son autenticados contra SQL Server
por lo tanto son los accesos al servidor, pero esto no quiere decir que puedan acceder a las bases
de datos o a otros objetos. Para poder acceder a cada una de las bases de datos se necesita de un
usuario (user).
Usuario de la base de datos (User): El usuario de la base de datos es la identidad del inicio de
sesión cuando está conectado a una base de datos.
El usuario de la base de datos puede utilizar el mismo nombre que el inicio de sesión, pero no es
necesario.
USE master
GO
SELECT *FROM sys.database_Principals
Da acceso a la base de datos, pero esto tampoco quiere decir que pueda hacer cualquier
operación sobre la base de datos, en principio no puede hacer casi nada, salvo que se le vaya
asignando roles y otros privilegios para hacerle permisos de acceso a los objetos de esa base de
datos.
Roles
A nivel de Instancia:
Tiene un password
No contiene usuarios
Jerarquía de permisos:
El Motor de base de datos administra un conjunto jerárquico de entidades que se pueden proteger
mediante permisos. Estas entidades se conocen como elementos protegibles. Los protegibles más
prominentes son los servidores y las bases de datos, pero los permisos discretos se pueden
establecer en un nivel mucho más específico.
Autenticación
- Windows authentication.
Usuarios o grupos de Windows
Contraseña y políticas de contraseña controladas por Windows/Active
Directory.
- SQL Server authentication.
Usuarios controlados por SQL Server.
Contraseña y políticas de contraseña controladas SQL Server.
¿Cómo cambiar contraseñas?
De cualquier login si tiene el privilegio CHANGE ANY LOGIN
De su propio usuario especificando su antigua contraseña
ALTER LOGIN LoginName WITH
PASSWORD=N’MyNewPassword’
. OLD_PASSWORD=N’MyOldPassword’
En SQL Server nos encontramos con tres niveles o capas en los cuales podemos gestionar la
seguridad. El primero de ellos se encuentra a nivel de servidor, en él podemos gestionar quién
tiene acceso al servidor y quién no, y además gestionamos que roles va a desempeñar. Para que
alguien pueda acceder al servidor debe tener un inicio de sesión (login) asignado, y a éste se
asigna los roles o funciones que puede realizar sobre el servidor.
El que alguien tenga acceso al servidor no quiere decir que pueda acceder a las bases de datos que
se encuentran en él. Para ello hay que tener acceso a la siguiente barrera de seguridad, que es a
nivel de base de datos. Para que un login tenga acceso a una base de datos, tenemos que crear en
ella un usuario (user). Se debe crear un usuario en cada una de las bases de datos a las que
queramos que acceda un login.
Análogamente, el que un usuario tenga acceso a una base de datos no quiere decir que tenga
acceso a todo su contenido, ni a cada uno de los objetos que la componen. Para que esto ocurra
tendremos que irle concediendo o denegando permisos sobre cada uno de los objetos que la
componen.
- Logins: usados para conectar a instancias de SQL Server y determinar permisos a nivel
de servidor.
- User: usados para determinar los permisos en una determinada base de datos
Principals
Las principals son entidades que pueden acceder a recursos de SQL Server.
ROLES
Hay una serie de roles predefinidos a nivel del servidor y de base de datos.
- Deberían ser suficientes en la mayoría de escenarios
- Piénsalo bien antes de complicar tu seguridad.
Impersonación
Podemos hacer que nuestras sentencias SQL se ejecuten como otro usuario u otro login.
- EXECUTE AS LOGIN= ‘loginName’;
- EXECUTE AS USER= ‘userName’;
Por defecto solo pueden hacer:
- SYSADMIN para todas las bases de datos.
- Miembro de db_owner en la base de datos que poseen.
Típico uso:
- CREATE USER proxyUser WITHOUT LOGIN
- CREATE PROCEDURE [procName] WITH EXECUTE AS’proxyUser’ AS…
Owners
Todo objeto de SQL Server tiene un owner.
Por defecto es el owner del esquema en que se crea.
Si un usuario posee un objeto y borramos el usuario, debemos transferir la propiedad del
objeto.
Si el propietario de un objeto es un usuario ese objeto tendrá acceso al resto de
elementos de ese usuario.
- Chained Ownership.
Si un usuario tiene permisos sobre un objeto y este objeto referencia otros con el mismo
owner, solo se comprueban los permisos sobre el primer objeto.
Si el usuario es pertenece al rol SYSADMIN su schemas por defecto es siempre dbo.
Schemas
Todos los objetos pertenecen a un schema.
El schema por defecto es dbo.
Los schemas como cualquier securable tiene un owner (usuario, rol de base de datos o rol
de aplicación).
Podemos asignar un esquema por defecto a usuarios.
Podemos crear nuestros propios esquemas.
- El owner por defecto será quien cree el esquema.
- Podemos asignar como owner de un esquema a un role o un usuario.
Los esquemas se pueden usar únicamente como unidades lógicas.
Podemos dar permisos sobre esquemas, una forma efectiva de dar permisos sobre todos
los objetos del esquema.
Cuando creamos un objeto dentro de un esquema, el propietario será por defecto, el
propietario del esquema.
Always encrypted
Previene la revelación de datos sensibles.
Encriptación de lado cliente mediante claves no reveladas al lado servidor.
Soporta consultas sobre datos encriptados: comparación, joins, group by…
Casi transparente a nivel de aplicación.
Permite almacenar datos sensibles fuera de nuestros límites de confianza (por ejemplo en
SQL Azure).
Los datos están a salvo de usuarios con altos privilegios.
Row-Level Security:
Conceptos
Función predicado:
- Función Tabla-valor definida por el usuario que implementa la lógica de seguridad
- Puede ser compleja, e incluso incluir joins con otras tablas.
Predicado de seguridad
- Aplica un predicado función automáticamente a una Tabla
- Dos tipos:
Predicado de filtro
Predicados de bloqueo
Política de seguridad:
- Colección de predicados para gestionar la seguridad RLS.
Recomendaciones:
- Crear un esquema separado para RLS.
- Evitar conversiones de tipos en funciones de predicado.
- Evita recursividad en funciones de predicado.
- Evite la lógica del predicado que dependa de opciones SET específicas de la sesión.
- Evitar elementos no deterministas de predicado.
Tipos de predicados
Predicados de filtro
- Filtran en modo silencioso las filas disponibles para operaciones SELECT, UPDATE y
DELETE.
- Si algo no cumple el predicado no aparece en la SELECT y no se puede modificar con
UPDATE o DELETE
- Nada te impide actualizar un registro de tal manera que deje de ser accesible para ti.
Predicados de bloqueo:
- Los predicados AFTER INSERT y AFTER UPDATE pueden impedir que los usuarios
actualicen las filas con valores que infrinjan el predicado.
- Los predicados BEFORE UPDATE pueden impedir que los usuarios actualicen las filas
que actualmente infrinjan el predicado.
- Los predicados BEFORE DELETE pueden bloquear las operaciones de eliminación.
ALL o ALL PRIVILEGES
Otorga todos los privilegios adecuados, excepto CONTROL, en la tabla base, vista o apodo llamado
en la cláusula ON.
Si no se especifica ALL, debe especificarse una o varias palabras clave en la lista de privilegios.
ALTER
CONTROL
Otorga:
ALTER, CONTROL, DELETE, INSERT, INDEX, REFERENCES, SELECT y UPDATE para tablas base
CONTROL, DELETE, INSERT, SELECT y UPDATE para vistas
ALTER, CONTROL, INDEX y REFERENCES para apodos
DELETE
INDEX
Otorga el privilegio para crear un índice en una tabla o una especificación de índice en un apodo.
Este privilegio no se puede otorgar en una vista. El creador de un índice o de una especificación de
índice tiene automáticamente el privilegio CONTROL en el índice o en la especificación de índice
(que autoriza al creador a descartar el índice o la especificación de índice). Asimismo, el creador
mantiene el privilegio CONTROL incluso si se revoca el privilegio INDEX.
INSERT
Otorga el privilegio para insertar filas en la tabla o vista actualizable y para ejecutar el programa de
utilidad IMPORT.
REFERENCES
Otorga el privilegio para crear y descartar una clave foránea que haga referencia a la tabla como la
tabla padre.
Si el ID de autorización de la sentencia tiene uno de los siguientes:
Autorización ACCESSCTRL o SECADM
Privilegio CONTROL sobre la tabla
REFERENCES WITH GRANT OPTION para la tabla
Entonces los usuarios autorizados pueden crear restricciones de referencia utilizando como clave
padre todas las columnas de la tabla, incluso las que se han añadido después mediante la
sentencia ALTER TABLE. De lo contrario, los privilegios otorgados son todos los privilegios
REFERENCES de columna otorgables que el ID de autorización de la sentencia tiene en la tabla
identificada.
El privilegio puede otorgarse para un apodo, aunque no pueden definirse claves foráneas para
apodos de referencia.
SELECT
Otorga el privilegio para:
Recupera filas de la tabla o vista.
Crea vistas en la tabla.
Ejecuta el programa de utilidad EXPORT en la tabla o vista.
UPDATE
Otorga el privilegio para utilizar la sentencia UPDATE sobre la tabla o vista actualizable
identificada en la cláusula ON.
Si el ID de autorización de la sentencia tiene uno de los siguientes:
Entonces la persona o personas a las que se otorga pueden actualizar todas las columnas
actualizables de la tabla o vista en las que la persona que otorga tiene el privilegio así como
aquellas columnas que se han añadido después utilizando la sentencia ALTER TABLE. De lo
contrario, los privilegios otorgados son los privilegios UPDATE de columna otorgables que el ID de
autorización de la sentencia tiene en la tabla o vista identificada.
TO
Específica a quién se otorgan los privilegios
USER
Especifica que el nombre-autorización identifica a un usuario
GROUP
Especifica que el nombre-autorización identifica un nombre de grupo.
ROLE
Especifica que el nombre-autorización identifica un nombre de rol. El nombre de rol debe existir en
el servidor actual (SQLSTATE 42704).
PUBLIC
Otorga los privilegios a un conjunto de usuarios (ID de autorización). Para obtener más
información, consulte el apartado "Autorizaciones, privilegios y propiedad de objetos". (Se han
eliminado las restricciones anteriores que se aplicaban a la utilización de los privilegios que se
otorgan a PUBLIC para las sentencias de SQL estático y la sentencia CREATE VIEW.)
WITH GRANT OPTION
Permite que los nombres-autorización especificados otorguen (GRANT) los privilegios a otros.
Si los privilegios especificados incluyen CONTROL, WITH GRANT OPTION se aplica a todos los
privilegios aplicables excepto CONTROL (SQLSTATE 01516).
CONCLUSION