Imagine o seguinte cenário
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');
Em algum momento, é gravado um processo ETL que executa algumas atividades no test
banco de dados.
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*/
O etlUser não deve ter permissões para a Customer
tabela (e certamente não para a SensitiveData
coluna), portanto, essas são explicitamente negadas acima.
O processo ETL trunca, dbo.StagingTable
portanto, são concedidas ALTER
permissões de tabela.
Isso é sinalizado durante uma auditoria de segurança. Quão perigoso é esse cenário?