【问题标题】:SQL Server Iterating through a table and scrubbing sensitive dataSQL Server 遍历表并清理敏感数据
【发布时间】:2017-03-30 19:03:01
【问题描述】:

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

我需要遍历这个表并清理每个表中的字段名称。我还想要关于清理算法的任何建议。

谢谢!

【问题讨论】:

  • “清理字段名”是什么意思?
  • 那么问题出在哪里?
  • 在此数据上创建一个视图并删除您不想显示的列...或者如果 sql server 2016 使用动态数据屏蔽。
  • 更具体地说明你所说的“擦洗”是什么意思,举个例子
  • 如果 Customer.LastName 是“Johnson”,我希望将其删除为“J@4krn”或无法识别的内容。同样,如果 User.UserId 是“SML23”,我希望它显示“S4&99”。谢谢。

标签: sql-server data-scrubbing


【解决方案1】:

你好,你真的应该更新你的请求,说数据混淆。

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

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

卡兹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多