ลองนึกภาพสถานการณ์ต่อไปนี้
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');
ณ จุดหนึ่งกระบวนการ ETL จะถูกเขียนที่ดำเนินการบางกิจกรรมในtest
ฐานข้อมูล
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 ไม่ควรมีสิทธิ์ในCustomer
ตาราง (และแน่นอนว่าไม่ใช่SensitiveData
คอลัมน์) ดังนั้นสิ่งเหล่านี้จึงถูกปฏิเสธอย่างชัดเจนด้านบน
กระบวนการ ETL จะตัดทอนdbo.StagingTable
ดังนั้นจะได้รับALTER
สิทธิ์ในตารางนั้น
สิ่งนี้ถูกตั้งค่าสถานะระหว่างการตรวจสอบความปลอดภัย สถานการณ์นี้อันตรายแค่ไหน?