SQL - Seguridad de nivel de fila

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 29 puestos en SQL (en relación al último mes)
Gráfica de SQL

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder