Este documento presenta una charla sobre Row Level Security (RLS) en SQL Server 2016. Se explica brevemente qué es RLS, cómo funciona permitiendo filtrar datos a nivel de registro, sus ventajas como simplificar el mantenimiento de la aplicación, y cómo implementarlo de forma nativa en SQL Server 2016 a través de la creación de una función, política de seguridad y campo de identificación.
Presentación inteligencia artificial en la actualidad
SQL Server 2016 - Row Level Security
1. SQL Server 2016: Row Level Security
21 de Octubre 2015 (12 pm GMT -5)
Carlos Ulate
Resumen:
En esta charla daremos un pequeño vistazo a los que es
Row Level Security, sus ventajas y como implementarlo
de forma nativa en SQL Server 2016.
Está por comenzar:
Moderador: Carlos Ulate
Próximos Eventos
PASS Summit 2015
27-30 de Octubre
No hay evento
MVP Global Summit
2-5 de Noviembre
No hay evento
2. Manténgase conectado a nosotros!
Visítenos en http://globalspanish.sqlpass.org
/SpanishPASSVC
lnkd.in/dtYBzev
/user/SpanishPASSVC
/SpanishPASSVC
4. 4
Oportunidades de Voluntariado
PASS no pudiera existir sin personas apasionadas y
dedicadas de todas partes del mundo que dan de su
tiempo como voluntarios.
Se un voluntario ahora!!
Para identificar oportunidades locales visita
volunteer.sqlpass.org
Recuerda actualizar tu perfil en las secciones de
“MyVolunteering” y MyPASS para mas detalles.
6. SQL Server 2016: Row Level Security
21 de Octubre de 2015
Carlos Ulate
Database Administrator, Informatech CR
Coordinador Spanish Virtual Chapter
MCTS
Moderador: Carlos Ulate
7. Agenda
• Que es Row Level Security?
• Como funciona Row Level Security.
• Ventajas de Row Level Security.
• Row Level Security nativo en SQL Server 2016.
• Implementacion de Row Level Security.
7
8. Que es Row Level Security?
• Es una la nueva funcionalidad de SQL Server 2016 que nos permite tener un control de
acceso de datos a nivel de registros.
• Una manera de poder entender que es Row Level Security (RLS) es verlo como una condición
¨Where¨ implícita en la consulta, el cual solo me permite consultar los datos que cumplan
dicha condición.
• En versiones anteriores se implementaba RLS utilizando vistas y procedimientos
almacenados donde se agregaba un filtro a la clausula where a una columna que seria
utilizada como identificador de seguridad.
• Esta presente en Azure SQL Database (V12) y ahora para el SQL Server 2016 se agrega dicha
funcionalidad.
8
9. Como funciona RLS
• Crea un filtro en la tabla que se defina sin necesidad de crear una vista, en su lugar se utiliza
un Inline Table Valued Function.
• SQL Server realiza implícitamente un INNER JOIN entre la función que se creo y la tabla que
se esta consultando.
• La que se encarga de juntar la tabla consultada junto a su correspondiente función es una
política de seguridad en la cual agrega un predicado a la tabla en cuestión.
• Todo esto nos permite poder regresar al usuario que realizo la consulta los datos a los que el
tiene acceso.
9
11. Ventajas de Row Level Security
• Reduce la complejidad en código por medio de la centralización de la lógica de acceso por
medio de una política de acceso, evitando con esto tener que utilizar vistas en todas las
tablas que se quiera implementar.
• Simplifica el mantenimiento de la aplicación permitiendo que se realicen las consultas
directamente a las tablas.
• Los cambios para la aplicación y el para el usuario son completamente transparentes.
• Me permite un fácil manejo de los usuarios que pueden tener acceso a que data, de una
manera transparente para la apliación.
11
12. RLS nativo en SQL Server 2016
• Como ya se mencionó antes el RLS esta presente en Azure SQL Database desde la V12 y
hasta en esta nueva versión de SQL Server es que se agrego tan solicitada funcionalidad, lo
cual nos permite manejar on premise el acceso a nivel de registros y de esta manera dejar
toda la seguridad en la capa de datos, lo cual me brinda mas seguridad contra posibles
ataques.
12
13. Implementación de RLS
• Para la implementación de RLS es necesario crear lo siguiente:
• Crear un nuevo esquema diferente al esquema donde se encuentran los datos.
• La tabla debe contar con un campo de tipo sysname donde se almacenara nuestro RLS ID.
• Crear una función que se encarga de manejar a que tiene acceso cada usuario.
• Crear una política de seguridad basado en la función que creamos para manejar el acceso a
registros.
13