想象以下情况
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
为此授予了表权限。
这是在安全审核期间标记的。这种情况有多危险?