Ahora Microsoft Azure SQL Data Warehouse admite Seguridad de nivel de fila

Publicado el 7 noviembre, 2018

Principal Program Manager, Azure SQL Data Warehouse

Hoy queremos anunciar la disponibilidad general de Seguridad de nivel de fila (RLS) para Microsoft Azure SQL Data Warehouse, una característica adicional para administrar la seguridad de los datos confidenciales. Azure SQL Data Warehouse es un almacén de datos en la nube rápido, flexible y seguro, que está optimizado para ejecutar consultas en petabytes de datos con rapidez.

A medida que mueve datos a la nube, es fundamental protegerlos para generar confianza entre sus clientes y asociados. Con la introducción de RLS, puede implementar directivas de seguridad para controlar el acceso a las tablas, por ejemplo para determinar quién puede acceder a qué filas. RLS hace posible este control pormenorizado del acceso sin necesidad de rediseñar el almacén de datos. Esto simplifica el modelo de seguridad global, porque la lógica de restricción del acceso se encuentra en el propio nivel de la base de datos y no en otra aplicación lejos de los datos. RLS elimina también la necesidad de incluir vistas para filtrar filas con el fin de administrar el control del acceso. Además, RLS admite tanto la autenticación de SQL como la autenticación con Azure Active Directory (AAD).

Estos son algunos escenarios actuales en los que se podría usar RLS:

  • Un proveedor de asistencia sanitaria implementa una directiva de seguridad que permite al personal de enfermería ver solo las filas de datos de sus pacientes.
  • Una empresa de servicios financieros restringe el acceso a las filas de datos financieros en función del departamento o del rol de cada empleado dentro de la compañía.
  • Una aplicación multiinquilino impone la separación lógica de las filas de datos de cada inquilino respecto a las de los demás inquilinos.

Diagrama de RLS

RLS es una forma de control de acceso basada en predicados que funciona aplicando automáticamente un predicado de seguridad a todas las consultas de una tabla. El predicado determina qué usuarios pueden acceder a qué filas. Por ejemplo, un predicado sencillo podría ser “WHERE SalesRep = SYSTEM_USER”, mientras que un predicado más complejo podría incluir instrucciones JOIN para buscar información en otras tablas.

Hay dos tipos de predicados de seguridad:

  • Predicados de filtro, que filtran automáticamente las operaciones SELECT, UPDATE y DELETE para excluir las filas que no cumplen el predicado.
  • Predicados de bloqueo, que bloquean explícitamente las operaciones INSERT, UPDATE y DELETE que no cumplen el predicado.

En esta versión, Azure SQL Data Warehouse solo admite predicados de filtro, pero pronto estarán disponibles también los predicados de bloqueo. Además, en esta versión, RLS no admite tablas externas creadas con PolyBase.

Para agregar un predicado de seguridad a una tabla, se necesita primero una función con valores de tabla insertada que defina los criterios de acceso. A continuación, debe crear una directiva de seguridad que agregue un predicado de filtro a las tablas que desee usando esta función. El siguiente es un ejemplo donde se impide que representantes de ventas accedan a filas de una tabla de clientes que no tienen asignados:

CREATE SCHEMA security;

CREATE FUNCTION security.customerPredicate(@SalesRepName AS sysname)
RETURNS TABLE
    WITH SCHEMABINDING
AS
    RETURN SELECT 1 AS accessResult
WHERE @SalesRepName = SYSTEM_USER OR SYSTEM_USER = 'Manager';
go

CREATE SECURITY POLICY security.customerAccessPolicy
ADD FILTER PREDICATE security.customerPredicate(SalesRepName) ON dbo.Customers
WITH (STATE = ON);
go

Esta funcionalidad ya está disponible en todas las regiones de Azure sin costo adicional. Se ha llevado a cabo el lanzamiento en algunas regiones, con el objetivo de finalizar la implementación a escala mundial en las próximas dos semanas. Azure SQL Data Warehouse continúa destacando en las áreas de seguridad, cumplimiento normativo, privacidad y auditoría.

Pasos siguientes