Wyobraź sobie następujący scenariusz
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');
W pewnym momencie zapisywany jest proces ETL, który wykonuje pewne działania w testbazie danych.
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 nie powinien mieć uprawnień do Customertabeli (a już na pewno nie do SensitiveDatakolumny), więc wyraźnie odmawia się ich powyżej.
Proces ETL jest obcinany, dbo.StagingTablewięc ma ALTERna to uprawnienia do tabeli.
Jest to oznaczane podczas audytu bezpieczeństwa. Jak niebezpieczny jest ten scenariusz?