http://bit.ly/SQSummit
Con el creciente despliegue de modelos tabulares y servicios de tiempo real conectados a ellos, nos surge siempre una misma pregunta: ¿Cómo controlo quien puede acceder a determinados datos en esos modelos y arquitecturas modernas? Abordaremos distintos escenarios de conexión de Power BI y modelos tabulares, su implementación, mantenimiento y buenas prácticas.
1. Asegura los datos de tu modeloa nivel de fila
Tama Francisquez
Victor García
2. Agenda
Seguridad a Nivel de Filas (RLS)
Necesidad
Escenarios para Seguridad RLS
Algunas Piezas de la Seguridad RLS
Identidad de Usuarios
Acceso al Dato PowerBI / Tabular
Métodos para RLS
Estático
Dinámico
Otras Implementaciones Dinámicas
SQL Backend*
5. ¿Cómo compartir reportes?
Compartir
Dashboard
Workspace
App de
Power BI
Publicar a
la web
Sharepoint
Online
Power BI
Embebido
AS Tabular
On-Prem
AS Tabular
Gateway
Gratis Si
Sin Necesidad de cuenta en
Power BI
Si Si
Niveles de Acceso Lectura
Lectura /
Escritura
Lectura Lectura Lectura Lectura
Lectura /
Procesado
Lectura
Puedes Compartir con otros Si Si Si Si No
Entornos de Desarrollo /
Producción
Si Si Si
Compartir Multiples Items Si Si
Extras
Web
Developer
Seguridad a Nivel de Filas Si Si Si Si Si Si Si
6. Seguridad a Nivel de Filas
Capacidad para controlar finamente el acceso a cada fila en
contextos con multiples usuarios.
9. Identidad de Usuarios – On-prem
Necesidad de elegir una arquitectura de identidades:
Identidades Administradas
Identidades Federadas
Seguridad Basada en Dominio Activo
Roles
10. Identidad de Usuarios – Cloud
Seguridad Basada en Dominio Activo de Azure (AAD)
Necesidad de elegir una arquitectura de identidades:
Identidades Administradas
Identidades Federadas
Puedes replicar tu AAD con un directorio on-prem
23. Bonus Track: RLS en SQL Backend
CREATE SECURITY POLICY mySecurityPolicy
ADD FILTER PREDICATE dbo.fn_securitypredicate(wing, startTime, endTime)
ON dbo.patients
Predicate function
User-defined inline table-valued function (iTVF) implementing security logic
Can be arbitrarily complicated, containing joins with other tables
Security predicate
Binds a predicate function to a particular table, applying it for all queries
Two types: filter predicates and blocking predicates (coming soon)
Security policy
Collection of security predicates for managing security across multiple tables
24. Three
Security Policy transparently rewrites query to apply filter predicate
Bonus Track: RLS en SQL BackendTwo
App user (e.g., nurse) selects from Patients table
Database Policy Manager
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
Nurse
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;
One
25. Bonus Track: RLS en SQL Backend
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)
Fine-grained access control over
rows in a table based on one or
more pre-defined filtering
criteria, such as user’s role or
clearance level in organization
Concepts:
Predicate function
Security policy
26. Recursos y Referencias
Whitepaper de Seguridad en PowerBI
https://docs.microsoft.com/en-us/power-bi/service-admin-power-bi-security
On-Prem Data Gateway
https://docs.microsoft.com/en-us/power-bi/service-gateway-onprem
Whitepaper de Seguridad en Modelos Tabulares
https://docs.microsoft.com/en-us/sql/analysis-services/tabular-models/object-level-security
27. Resumen
Seguridad a Nivel de Filas (RLS)
Necesidad
Escenarios para Seguridad RLS
Algunas Piezas de la Seguridad RLS
Identidad de Usuarios
Acceso al Dato PowerBI / Tabular
Métodos para RLS
Estático
Dinámico
Otras Implementaciones Dinámicas
SQL Backend*