Seguridad de nivel de fila
Publicado por Roxane (1 intervención) el 27/01/2019 03:50:36
Quiero utilizar la seguridad de nivel de fila en SQL, donde el usuario "Fulanito" contenido en una columna "TurnadoA" solo tenga acceso a las filas donde este su nombre. El código se ejecuta correctamente, sin embargo bloquea mi tabla y no puedo ingresar más datos al volverse solo lectura, ya revise sus propiedad de readonly que estuvieran en false. Alguna recomendación :(
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE USER Dirección WITHOUT LOGIN;
CREATE USER Vinculación WITHOUT LOGIN;
CREATE USER Programación WITHOUT LOGIN;
CREATE USER Trámites WITHOUT LOGIN;
CREATE USER Transparencia WITHOUT LOGIN;
SELECT * FROM Registro;
GRANT SELECT ON Registro TO Dirección;
GRANT SELECT ON Registro TO Vinculación;
GRANT SELECT ON Registro TO Programación;
GRANT SELECT ON Registro TO Trámites;
GRANT SELECT ON Registro TO Transparencia;
go
CREATE SCHEMA Security;
GO
CREATE FUNCTION Security.fn_securitypredicate(@turnadoa AS Varchar(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS fn_securitypredicate_result
WHERE @turnadoa = USER_NAME() OR USER_NAME() = 'Dirección';
go
CREATE SECURITY POLICY UserFiltro
ADD FILTER PREDICATE Security.fn_securitypredicate(TurnadoA)
ON dbo.Registro
WITH (STATE = ON);
EXECUTE AS USER = 'Dirección';
SELECT * FROM Registro;
REVERT;
Valora esta pregunta
0