Row Level Security

Anuncio
SQL Server 2016: Row Level Security
Carlos Ulate Hernandez
[email protected]
@sql506
cr.linkedin.com/in/carlosulate
www.sql506.com
MCTS SQL Server
Coordinador Spanish Virtual Chapter
Organiza
http://tinyurl.com/ComunidadWindows
Patrocinadores del SQL Saturday
Platinum Sponsor
Diamond Sponsor
Bronze Sponsor
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.
• Mejores prácticas.
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.
• Mejores prácticas.
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.
Que es Row Level Security?
• 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.
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.
• Mejores prácticas.
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.
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.
• Mejores prácticas.
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.
Ventajas de Row Level Security
• 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 aplicación.
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.
• Mejores prácticas.
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.
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.
• Mejores prácticas.
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.
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.
• Mejores prácticas.
Mejores Prácticas
• Se recomienda utilizar un esquema separado para los objetos del
RLS
• Las modificaciones a cualquier política de seguridad deben ser
realizadas por un usuario con permisos de alto nivel, como un
security policy manager, este usuario no requiere tener permisos
para hacer SELECT a las tablas que el esta aplicando la política.
Mejores Prácticas
• Evitar las conversiones de tipo en la función del predicado
para evitar potenciales runtime errors.
• Evitar la repetición de funciones de predicado siempre que
sea posible para evitar la degradación del rendimiento.
• Evitar el uso excesivo de joins entre tablas dentro de la
función del predicado para maximizar el rendimiento.
Preguntas y Respuestas
[email protected]
http://www.sql506.com/
Carlos A. Ulate
Hernández
@sql506
Descargar