Hãy tưởng tượng kịch bản sau đây
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');
Tại một số điểm, một quy trình ETL được viết để thực hiện một số hoạt động trong test
cơ sở dữ liệu.
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*/
Các etlUser không nên có quyền đối với Customer
bảng (và chắc chắn không cho SensitiveData
cột) vì vậy những điều này bị từ chối rõ ràng ở trên.
Quá trình ETL cắt ngắn dbo.StagingTable
để được cấp ALTER
quyền bảng trên đó.
Điều này được gắn cờ trong một cuộc kiểm toán bảo mật. Kịch bản này nguy hiểm như thế nào?