다음 시나리오를 상상해보십시오
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');
어떤 시점에서 test
데이터베이스 에서 일부 활동을 수행하는 ETL 프로세스가 작성 됩니다.
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
테이블 권한 이 부여 됩니다.
보안 감사 중에 플래그가 지정됩니다. 이 시나리오는 얼마나 위험합니까?