stop a la fuga de información: la barrera indispensable de seguridad en sql server - solidq summit...

41
SOLIDQ SUMMIT MADRID 2017 #SQSummit17 Jose Antonio Pineda Montes Data Platform Arquitect [email protected]

Upload: solidq

Post on 22-Jan-2018

40 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017

#SQSummit17

Jose Antonio Pineda Montes

Data Platform Arquitect

[email protected]

Page 2: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017

Page 3: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017

Page 4: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017
Page 5: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Kerberos

NTLM (Windows NT Lan Manager)

Cuentas de Windows

Cuentas especificas de SQL Server

Autentificación

Buena Practica: Usar siempre Autentificación Windows a menos que la aplicación sea de terceros y te

obligue a utilizar una cuenta de seguridad de SQL.

Page 6: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena Practica: cambiar el nombre de la cuenta después de la

instalación SSMS>Object Explorer>Logins>Rename (right click) / T-SQL

Page 7: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Best Practice: Asegurar que password complejas son utilizadas para SA y otros SQL logins.

Intenta siempre utilizar las opciones ENFORCE EXPIRATION & MUST_CHANGE para SQL login

Page 8: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena práctica:

Usar cuentas especificas para cada servicio especifico de SQL

Component Windows Server 2008 Windows 7 and Windows Server 2008 R2 and higher

Recommended accounts

Database Engine NETWORK SERVICE Virtual Account * SQL_Engine

SQL Server Agent NETWORK SERVICE Virtual Account * SQL_Agent

SSAS NETWORK SERVICE Virtual Account * SQL_srvAS

SSIS NETWORK SERVICE Virtual Account * SQL_srvIS

SSRS NETWORK SERVICE Virtual Account * SQL_srvRS

SQL Server Distributed Replay Controller NETWORK SERVICE Virtual Account * SQL_DRContro

SQL Server Distributed Replay Client NETWORK SERVICE Virtual Account * SQL_DRReplay

FD Launcher (Full-text Search) LOCAL SERVICE Virtual Account

SQL Server Browser LOCAL SERVICE LOCAL SERVICE

SQL Server VSS Writer LOCAL SYSTEM LOCAL SYSTEM

Page 9: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena Practica:

Escoger cuidadosamente los miembros del role sysadmin

Page 10: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena práctica: Usar los roles de servidor y base de datos que vienen por defecto o crear roles

personalizados, y entonces aplicárselos a los logins de SQL.

Page 11: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena Practica: Deshabilitar la cuenta invitado de todas las bbdds de

usuario y sistemas ( menos en el msdb)

Page 12: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Buena Practica:

Cambiar el puerto por defecto siempre que sea posible

Page 13: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

https://support.microsoft.com/en-us/help/3135244/tls-1.2-support-for-microsoft-sql-server

Buena Practica:

Actualizar a TSL 1.2

Page 14: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017
Page 15: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila

Se previene a usuarios que

vean datos sin autorización

Configuración con lógica en

BBDD y esquemas

Administrado con SSMS

15 © 2016 SolidQ

Page 16: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila

RLS (Row Level Security) restringe qué usuario puede ver qué fila

16 © 2016 SolidQ

Page 17: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila

• Definida por Usuario

• Inline Table Valued Function

• Puede ser complicada conteniendo joins a otras tablas

Funcion de predicado

• Funcion vinculada a una tabla

• Dos tipos: de filtro o bloqueantes

Predicado de seguridad

• Colección de predicados de seguridad para administrar la seguridad sobre multiples tablas

Política de seguridad

17 © 2016 SolidQ

Page 18: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila

18

Uno

Administrador de la seguridad crea un filtro de predicado y una política de seguridad vinculada a

la tabla

Dos

Usuario de aplicación hace una select

Tres

La política de seguridad de forma transparente añade los filtros pertinentes

Database

CREATE FUNCTION dbo.fn_securitypredicate(@wing int)

RETURNS TABLE WITH SCHEMABINDING AS

return SELECT 1 as [fn_securitypredicate_result] FROM

StaffDuties d INNER JOIN Employees e

ON (d.EmpId = e.EmpId)

WHERE e.UserSID = SUSER_SID() AND @wing = d.Wing;

CREATE SECURITY POLICY dbo.SecPol

ADD FILTER PREDICATE dbo.fn_securitypredicate(Wing) ON

Patients

WITH (STATE = ON)

Filter

predicate:

INNER

JOIN…

Security

policy

Application Patients

SELECT * FROM Patients

SELECT * FROM Patients

SEMIJOIN APPLY dbo.fn_securitypredicate(patients.Wing);

SELECT Patients.* FROM Patients,

StaffDuties d INNER JOIN Employees e ON (d.EmpId =

e.EmpId)

WHERE e.UserSID = SUSER_SID() AND Patients.wing = d.Wing;

Nurse Policy manager

Page 19: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila con contexto de usuario

19

----Se crea una función predicado que utliza la variable CONTEXT_INFO de la

aplcición para filtrar que registros puede ver.

CREATE FUNCTION rls.fn_securitypredicate (@AppUserId int)

RETURNS TABLE

WITH SCHEMABINDING

AS

RETURN (

SELECT 1 AS fn_securitypredicate_result

WHERE DATABASE_PRINCIPAL_ID() = DATABASE_PRINCIPAL_ID('dbo')-- application context

AND CONTEXT_INFO() = CONVERT(VARBINARY(128), @AppUserId);

GO

-- Con el siguiente código creamos la politica de seguridad con filtro de

predicado para la table customers, y lo dejamos deshabilitado

CREATE SECURITY POLICY [FederatedSecurityPolicy]

ADD FILTER PREDICATE [rls].[fn_securitypredicate]([CustomerId])

ON [dbo].[Customer];

Page 20: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Seguridad a nivel de fila: casos de uso

Aplicaciones tradicionales

Finanzas, Seguros, sanidad, gobiernos

BBDD multitenant

Cada inquilino solo accede a sus datos

Reporting, analytics,

DW

Diferentes usuarios ven datos según su nivel de acceso (PowerBI ya da soporte nativo)

20

Page 21: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017 21

Page 22: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Funcionalidad de RLS

• Centralizo la seguridad en la BBDD, solo tengo que tocar en un sitio.

• Puedo bloquear o filtrar las operaciones de modificación de datos.

• Si creo el predicado con la opción schemabinding, evito que alguien pueda modificar el esquema de las tablas con las que trabaja el predicado y se comprueban los permisos sobre esas tablas para que funcione.

• Puedo generar un role tipo “Gestor de Politicas” con los permisos necesarios para generar predicados de seguridad ALTER ANY SECURITY POLICY y un esquema especifico para generar estas, de tal manera que separo funcionalidades. Pudiendo auditar los cambios que se realicen.

Page 23: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Mejores Practicas con RSL

• Rendimiento dependerá de la complejidad de los joins en el predicado.

• Es recomendable que las columnas que utiliza el predicado para filtrar tengan un índice.

• Crear un esquema diferente para centralizar en él, todas las políticas de seguridad.

• Utilizar CONTEXT_INFO para aplicaciones de capa intermedia y cuando trabajemos en SQL AZURE siempre inicializar esta variable después de conectarnos porque por defecto la inicializa.

Page 24: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017
Page 25: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Always Encrypted

Prevención de revelación de datos

• Encriptación a nivel cliente de datos sensibles

• No se puede descrifrar desde servidor

Consultas sobre datos cifrados

• Soporte para operadores “=“, “join”, “Group by” y “distinct”

Transparente para aplicaciones

• Cambios mínimos a nivel de aplicación

• Usar la libreria correcta

25

Permite a las aplicaciones almacenar de forma segura datos, incluso lejos del alcance de DBA sysadmin

Page 26: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Always Encrypted

26

Page 27: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017
Page 28: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Always Encrypted

28

Page 29: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Always Encrypted: Limitaciones No soportado con estos tipos

de datos

•Xml

•Rowversion

• Image/Text/ntext

•Sql_variant

•Hiearchyid

•Geography/geometry

•Alias

•UDT´s

Claúsulas que no funcionan

•FOR XML

•FOR JSON PATH

Características incompatibles

•Transactional replication

•Merge replication

•Linked server y consultas distribuidas

29 © 2016 SolidQ

Cuidado con la corrupción de datos

• Usando ALLOW_ENCRYPTED_VALUE_MODIFICATIONS puedes corromper tus propios datos

Herramientas soportadas parcialmente (por ahora)

• SSDT (por ahora)

• Solo se permite crear DACPAC desde SSMS

Page 30: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017 30

Page 31: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Comparativa entre AE y TDE

Always Encrypted TDE

Nivel de columna Nivel de BBDD

Encriptación en cliente Encriptación en servidor

El servidor no conoce en ningún momento las claves para encriptar

El servidor conoce las claves para encriptar

EL dato viaje por la red encriptado EL dato tal cual viaja por la red.

Tempdb hereda la encriptación- incluso después de deshabilitar TDE

EL dato puede ser protegido de administradores de sistema y bbdd

El dato es accesible para administradores de sistema y bbdd

Page 32: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Comportamiento consultas con Always Encripted

Características de la

consulta

Always Encrypted esta

habilitado y la

aplicación puede

acceder a las claves y

al metadata de las

claves.

Always Encrypted esta

habilitado y la

aplicación no puede

accede a las claves o a

los metadatos de las

claves

Always Encrypted esta

deshabilitado

Consultas con parametros que hacen referencia a columnas encriptadas.

Los valores de los parametros se encriptan transparentemente.

Error Error

Consultas que recuperan datos de columnas encriptadas, sin parametros que referencien columnas encriptadas.

EL resultado de las columnas encriptadas se desencripta transparentamente. La aplicacion recive los valores en texto plano de los tipos de datos .NET correspondientes a los tipos de SQL configurados para las columnas encriptadas.

Error EL resultado de las columnas encriptadas no se desencripta. La aplicación recive los valores encriptados como arrays de byte (byte[]).

Page 33: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Controlando el impacto de AE en el rendimiento • Debido a que Always Encrypted es una tecnología de cifrado en el

cliente, la mayoría de los overheads de rendimiento se observan en el lado del cliente, no en la base de datos. Aparte del costo de las operaciones de cifrado y descifrado, hay otros factores que afectan:

Viajes de ida y vuelta adicionales a la base de datos para recuperar

metadatos para los parámetros de la consulta.

Llamadas al almacén de claves maestras de columna para acceder a una clave maestra de columna.

Page 34: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Optimizaciones en .NET Framework Provider para SQL Server para AE • Query metadata caching

Puedes configurar Always Encrypted a nivel de consulta y de no de toda la sesión(esto ya no tiene sentido con .Net 4.6.2 debido al cache de parametros).

• Column encryption key caching En .NET Framework 4.6 y 4.6.1, las entradas de clave de cifrado de columna en el

caché nunca se desalojan. Esto significa que para una clave cifrada de cifrado de columna dada, el controlador contacta con el almacén de claves sólo una vez durante el tiempo de vida de la aplicación.

En .NET Framework 4.6.2 y posteriores, las entradas de la memoria caché son desalojadas después de un intervalo configurable de tiempo de vida por razones de seguridad. El valor por defecto del tiempo de vida es de 2 horas.

Page 35: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017
Page 36: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Dynamic Data Masking

Enmascaramiento

• Datos sensibles enmascarados a nivel Usuario

Basado en políticas

• A nivel de tabla o columna para grupos de usuarios

Tiempo real

• Se aplica sobre las filas a devolver

36

Page 37: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Dynamic data masking

37 © 2016 SolidQ

3 ) DDM ofusca los datos sensibles durante la devolución de datos 2 ) El Usuario lanza una select 1 ) El administrador de seguridad define la mascara en T-SQL sobre datos sensibles

SELECT [Name],

[SocialSecurityNumber],

[Email],

[Salary]

FROM [Employee]

admin1 login other login

BUSINESS APP

BUSINESS APP

ALTER TABLE [Employee] ALTER COLUMN [SocialSecurityNumber] ADD MASKED WITH (FUNCTION = ‘SSN()’) ALTER TABLE [Employee] ALTER COLUMN [Email] ADD MASKED WITH (FUNCTION = ‘EMAIL()’) ALTER TABLE [Employee] ALTER COLUMN [Salary] ADD MASKED WITH (FUNCTION = ‘RANDOM(1,20000)’) GRANT UNMASK to admin1

Security

Officer

Page 38: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

Dynamic data masking

• No puede usarse sobre los siguientes tipos de datos • Always Encrypted columns

• FILESTREAM

• COLUMN_SET

• Text y ntext si soportados • Pero no funcionarán READTEXT, UPDATETEXT ni WRITETEXT

38

Page 39: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017 39

Page 40: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017

• +500h de trabajo

• Clases 100% ONLINE en directo

• Proyecto fin de máster real para tu empresa

• Tutorías bajo demanda

• Laboratorios virtuales guiados paso a paso

• Invitación 1 día al SolidQ Summit Madrid

• Te ayudamos en tus proyectos de BI & Analytics

CONTENIDOS

• BI & Analytics Overview

• Data Warehousing y Modelo Dimensional

• Obtención de datos. ETL e Integración

• Soluciones Analíticas

• Análisis y Visualización de la información

• Proyecto Fin de Máster

“Con la evolución de los tiempos, es imprescindible estudiar todo lo que tiene que ver con real-time, analytics y el mundo de los datos. Por lo que, consideré que tener formación en BI me podría ser muy útil y me venía muy bien personalmente, porque nuestro sistema trata con muchísimas transacciones y muchísima carga y ‘el relacional’ ya se nos estaba quedando pequeño. El máster nos dio una visión bastante general de cómo implementar un proyecto y gestionarlo tú mismo y cómo ver las soluciones de distintas maneras. Aunque tenía mis dudas de hacer una formación online, la valoración es bastante positiva, las clases son muy interactivas y al final salió todo muy bien.”

Adolfo Gabriel VP Software

Development, Payvision Máster en BI & Analytics

Alumni

¡Plazas Limitadas! Más información:

http://www.solidq.com/es/masterbi

CONTENIDOS

• BI & Analytics Overview

• Data Warehousing y Modelo Dimensional

• Obtención de datos. ETL e Integración

• Soluciones Analíticas

• Análisis y Visualización de la información

• Proyecto Fin de Máster

Page 41: STOP a la fuga de información: la barrera indispensable de seguridad en SQL Server - SolidQ Summit 2017

SOLIDQ SUMMIT MADRID 2017