Imagine el siguiente escenario
CREATE DATABASE test
GO
USE test;
CREATE TABLE dbo.Customer
(
CustomerId INT,
Email VARCHAR(100),
SensitiveData VARCHAR(20)
);
INSERT INTO dbo.Customer
VALUES (1,'abc@foo.com','12346789');
En algún momento se escribe un proceso ETL que realiza algunas actividades en la testbase de datos.
CREATE USER etlUser WITHOUT LOGIN; /*For demo purposes*/
CREATE TABLE dbo.StagingTable
(
StagingTableId INT,
SomeData VARCHAR(100),
)
GRANT UPDATE,INSERT,DELETE,SELECT,ALTER ON dbo.StagingTable TO etlUser;
DENY SELECT ON dbo.Customer TO etlUser;
DENY SELECT ON dbo.Customer (SensitiveData) TO etlUser; /*For good measure*/
El etlUser no debe tener permisos para la Customertabla (y ciertamente no para la SensitiveDatacolumna), por lo que estos se niegan explícitamente anteriormente.
El proceso ETL se trunca, dbo.StagingTablepor lo que se le otorgan ALTERpermisos de tabla.
Esto se marca durante una auditoría de seguridad. ¿Qué tan peligroso es este escenario?