Stellen Sie sich das folgende Szenario vor
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');
Irgendwann wird ein ETL-Prozess geschrieben, der einige Aktivitäten in der test
Datenbank ausführt .
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*/
Der etlUser sollte keine Berechtigungen für die Customer
Tabelle (und schon gar nicht für die SensitiveData
Spalte) haben, daher werden diese oben ausdrücklich verweigert.
Der ETL-Prozess wird abgeschnitten, dbo.StagingTable
sodass ALTER
Tabellenberechtigungen dafür erteilt werden.
Dies wird während einer Sicherheitsüberprüfung markiert. Wie gefährlich ist dieses Szenario?