Immagina il seguente scenario
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');
Ad un certo punto viene scritto un processo ETL che esegue alcune attività nel testdatabase.
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*/
EtlUser non dovrebbe avere le autorizzazioni per la Customertabella (e certamente non per la SensitiveDatacolonna), quindi questi sono esplicitamente negati sopra.
Il processo ETL viene troncato, dbo.StagingTablepertanto vengono concesse le ALTERautorizzazioni per la tabella.
Questo è segnalato durante un controllo di sicurezza. Quanto è pericoloso questo scenario?