Imaginez le scénario suivant
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');
À un moment donné, un processus ETL est écrit qui effectue certaines activités dans la test
base de données.
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*/
L'etlUser ne devrait pas avoir d'autorisations sur la Customer
table (et certainement pas sur la SensitiveData
colonne) donc celles-ci sont explicitement refusées ci-dessus.
Le processus ETL tronque dbo.StagingTable
donc est donné ALTER
des autorisations de table à ce sujet.
Ceci est signalé lors d'un audit de sécurité. Dans quelle mesure ce scénario est-il dangereux?