動態資料掩碼

2021-09-29 10:33:44 字數 2965 閱讀 7395

動態資料掩碼(dynamic data masking,簡稱為ddm)能夠防止把敏感資料暴露給未經授權的使用者。ddm作用於資料表的字段上,在查詢結果中隱藏敏感資料。啟用ddm不會修改表中的資料,只是把查詢結果對未經授權的使用者遮蔽,使未授權使用者看到的查詢結果是被掩碼的,例如,第二列是號碼列,前7個數字被掩碼,只暴露後三位數字:

動態資料遮蔽在 sql server 2016 (13.x) 和 azure sql database中開始提供,使用 transact-sql 命令進行配置。

對於資料表的列定義遮蔽規則,有4種掩碼函式:

遮蔽函式的語法規則:

masked with (function='

default()')

masked

with (function='

email()')

masked

with (function='

random(start, end)')

masked

with (function='

partial(prefix,[padding],suffix)

')

啟用ddm,有兩種方式:

方式1:在建立表時定義遮蔽規則

email varchar(100) masked with (function='

email()

') null

方式2:向現有表新增遮蔽規則,通過alter table命令修改列的定義:

alter

column email add masked with (function='

email()

') null

乙個使用者只有被授予在該列上的unmask 許可權,才可以檢視該列的原始資料,否則,返回的是掩碼之後的資料。

1,建立和修改mask的許可權

在使用動態資料遮蔽來建立表時,不需任何特殊許可權,只需要具有create table 許可權以及對架構的 alter 許可權。

當需要新增、替換或刪除對列的遮蔽時,需要 alter any mask 許可權以及對錶的 alter 許可權,可以將 alter any mask 許可權授予安全負責人。

具有表的 select 許可權的使用者可以檢視表資料,列在被定義為「已遮蔽」後,將顯示遮蔽後的資料。對於需要從定義了遮蔽的列中檢索資料的使用者,可授予其 unmask 許可權,使其可以看到原始資料。

針對 資料庫的 control 許可權包括 alter any mask 和 unmask 許可權。

2,更新mask列的許可權

在一列上建立mask不會阻止該列上的資料更新,如果使用者有write許可權,那麼該使用者即使沒有該列上的unmask的許可權,也可以修改該列的資料。為了避免該情況的發生,應該通過其他許可權來控制使用者對遮蔽列的修改。

3,遮蔽複製

使用select intoinsert into ,把資料從乙個遮蔽列複製到另乙個表中,這會使得遮蔽資料複製到新錶中。

在執行sql server import 和 export時,也會把遮蔽複製到新的表中。

4,授權檢視遮蔽資料

把unmask  的許可權授權給使用者,那麼該使用者就可以檢視遮蔽列的原始值:

grant unmask to

testuser;

execute

asuser='

testuser

';

select

*from

membership;

revert;

--removing the unmask permission

revoke unmask to testuser;

使用者可以對遮蔽列進行查詢、增加、修改和刪除操作。

1,查詢遮蔽列

檢視資料庫中已經建立的遮蔽列:

select tbl.name as

table_name

,c.name

ascolumn_name

,c.is_masked

,c.masking_function

from sys.masked_columns as

c inner join sys.tables as

tbl

on c.[

object_id

]= tbl.[

object_id

]where is_masked =

1

2,增加遮蔽列

對現有表增加遮蔽列

alter

table

membership

alter

column lastname add masked with (function='

partial(2,"***",0)

') null;

3,修改遮蔽列

對現有的遮蔽列進行修改

alter

table

membership

alter

column lastname varchar(100) masked with (function='

default()

');

4,刪除遮蔽列

把列上的遮蔽刪除,刪除掩碼規則,不會刪除該列的值:

alter

table

membership

alter

column lastname drop masked;

dynamic data masking

oracle格式掩碼

to char 是把日期或數字轉換為字串 to date 是把字串轉換為資料庫中得日期型別 轉換函式 to char 使用to char函式處理數字 to char number,格式 to char salary,99,999.99 使用to char函式處理日期 to char date,格式 ...

使用者掩碼umask

在linux中,每個使用者都有乙個使用者掩碼umask,每個使用者建立的檔案的預設許可權就於這個umask有關。如果乙個使用者的umask是0022 root使用者的預設umask值 那麼這個使用者建立的目錄的預設許可權為 0777減去0022後的結果,即0755 第乙個0表示強制位和冒險位 如果建...

linux訊號掩碼

1.linux內部用乙個128個位元組 多個unsigned long 的結構 sigset t 表示訊號的掩碼,在i386平台上就是128 4 32個long,每位對應乙個訊號的掩碼,最大支援128 8 1024 個訊號。現在只有64個訊號,所以只要考慮最前面的兩個long就可以了。sigset ...