SQL Server迭代表并清理敏感数据

时间:2017-03-30 19:03:02

标签: sql-server data-scrubbing

我有一个表,其中包含需要擦除的表和字段的名称。

Sample Table

我需要遍历此表并清除每个表中的字段名称。我还想了解有关擦洗算法的任何建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

您好,您应该更新您的请求以说明数据混淆。

但除此之外,你可以做到这一点。 首先在这个数据库中创建一个函数(不要改变这个部分加载它):

CREATE FUNCTION Character_Mask
(
    @OrigVal varchar(max),
    @InPlain int,
    @MaskChar char(1)
)
RETURNS varchar(max)
WITH ENCRYPTION
AS
BEGIN
    DECLARE @PlainVal varchar(max);
    DECLARE @MaskVal varchar(max);
    DECLARE @MaskLen int;

    SET @PlainVal = RIGHT(@OrigVal,@InPlain);
    SET @MaskLen = (DATALENGTH(@OrigVal) - @InPlain);
    SET @MaskVal = REPLICATE(@MaskChar, @MaskLen);
    Return @MaskVal + @PlainVal; 
END
GO

GRANT EXECUTE ON dbo.Character_Mask
    TO Sensitive_high, Sensitive_medium, Sensitive_low;
GO

在数据库中拥有它之后,您可以开始在视图中使用它:

CREATE VIEW dbo.MyObbedData
AS
SELECT
    dbo.Character_Scramble(c.FirstName) AS Ob_First_Name,
    dbo.Character_Scramble(c.LastName) AS Ob_LastName,
    dbo.Character_Scramble(c.Email) AS Ob_Email,
    dbo.Character_Scramble(u.UserName) AS Ob_UserName
FROM
    dbo.Customer c
    INNER JOIN dbo.User u
        ON c.UserID = u.UserID
GO

GRANT SELECT ON dbo.MyObbedData
    TO Sensitive_high, Sensitive_medium;
GO

Character_Mask代码是从这里获取的,它可以做更多的堆积,如果你想阅读它,这里是LINK

CAZ