标签: data-masking

清理敏感数据

我正在寻找一种自动化解决方案来将敏感数据从我的 prod 环境清理到我的 DEV 和 DEVINT 环境,这样我就不必编写大量代码来完成这项工作。有谁知道数据质量服务和 SSIS 中的数据清理步骤是否可以为我解决问题?或者,是否有其他人有任何建议可以在无需编写 TSQL 的情况下清理我的数据?

sql-server ssis-2012 data-masking

4
推荐指数
1
解决办法
1万
查看次数

创建 SQL 随机出生日期

有没有人有任何 SQL 代码来自动生成随机出生日期,其中出生日期小于今天?请添加出生日期范围参数,例如:从 18 岁到 70 岁。

是否有任何内联 SQL 或函数来执行此操作?

我们正试图混淆我们的专栏[Date of Birth]

谢谢,

sql-server data-masking

4
推荐指数
2
解决办法
4692
查看次数

我的系统如何理解数据是否被屏蔽?

我试图理解之间的区别encryptionmasking

下面的声明说real data replaced and gone

屏蔽通过将数据转换为任何窃取数据的人都无用的可读格式来保护您的数据。实际数据被虚构信息取代。没有加密解决方案可以将数据恢复到其原始状态。真实数据被替换并且永远消失了。

这是什么意思?如果真实数据消失了,那么我如何在我的系统中使用它?

例如:

我可能被屏蔽了EMAILID,我的系统想要根据电子邮件 ID 做一些逻辑,那么我如何在代码中比较电子邮件 ID?

基本上,如果我不使用敏感数据,为什么我首先将它存储在我的数据库中?

sql-server data-masking

3
推荐指数
2
解决办法
620
查看次数

无法针对具有屏蔽列的表创建索引视图

我正在尝试在引用带有屏蔽列的表(SQL Server 2016)的视图上创建索引。屏蔽列不是该表中唯一的列,并且未在视图中使用。

create unique clustered index [IX_Name]
on dbo.vw_ViewName(SomeUniqueId)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

无法创建视图“dbo.vw_ViewName”上的索引,因为该视图正在引用带有屏蔽列的表“dbo.TableName”。

在另一个未启用屏蔽的环境中,索引创建成功。

我浏览了大约四页的 Google 结果,但没有找到任何合理的错误描述。我很感激任何关于错误的知识转移以及为什么不可能创建这样的索引。

这是一些重现问题的 SQL:

drop view if exists dbo.vw_Aggregate
drop table if exists dbo.MainTable, dbo.SecondaryTable
go

create table dbo.MainTable
(
    MainTableId uniqueidentifier primary key,
    SomeExternalId uniqueidentifier,
    SecondaryTableId uniqueidentifier
)
go

create table dbo.SecondaryTable
(
    SecondaryTableId uniqueidentifier primary key,
    CreatedOn datetime,
    Amount decimal(19, 8),
    -- the below column produces error,
    -- if commented out - there is no error
    [Description] nvarchar(max) masked with (function = 'default()'),
    Dummy …
Run Code Online (Sandbox Code Playgroud)

sql-server materialized-view sql-server-2016 data-masking dynamic-data-masking

2
推荐指数
1
解决办法
1555
查看次数

创建随机词来混淆 SQL 列

有没有人有任何SQL代码来自动生成单词(全字母,没有数字)。

是否有任何内联 SQL 可以在列上执行此操作?

我们试图混淆表中的名字/姓氏和其他单词列。

此答案目前不适用于列,因为它在列内生成相同的结果。

select top (@stringlength) char(abs(checksum(newid())) % 26 + ascii('A'))
from sys.all_objects
for xml path('')
Run Code Online (Sandbox Code Playgroud)

我试过了,但功能很慢,内联查询可以更快,请随时改进或重写下面

CREATE VIEW [dbo].[RandomValueVw]
AS
SELECT RAND() as random_value


CREATE function dbo.RandomWordGenerate(@length int)
returns varchar(50)
as begin

    DECLARE 
        @text nvarchar(255),
        @i int

    SET @i = 0
    SET @text = ''

    WHILE (@i < @length)
    BEGIN
        SET @text = @text + CHAR((select * from [dbo].[RandomValueVw]) * 26 + 65)
        SET @i = @i + 1
    END

    return @text

end
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 data-masking

2
推荐指数
1
解决办法
2311
查看次数

T-SQL中的动态长度混淆方法

我想从 SQL Server 数据库中混淆(打乱)敏感数据,但方式将提供:

  • 不可逆性(明文无法从混淆数据中导出),
  • 混淆后的数据长度需要与混淆前的数据长度相同。
  • 对于相同输入值的重复混淆,混淆值不需要是唯一的。老实说,我更喜欢为可以使用的相同输入获得相同的值(例如,不同表中的一些匹配数据,可能在测试用例中有用)。

例子:

Abc -> zyx (lenght: 3)
StackOverflow -> a65vr4doqjd (lenght: 11)
Run Code Online (Sandbox Code Playgroud)

通常我会避免“自制”算法,所以你知道一些可以提供这种混淆的 MS 内置解决方案吗?

我希望我清楚地表达了我的问题,否则让我知道,我会尝试根据需要添加尽可能多的信息。

security sql-server t-sql data-masking

1
推荐指数
1
解决办法
1038
查看次数