動態資料掩碼(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命令修改列的定義:
altercolumn 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 into
或insert into ,把資料從乙個遮蔽列複製到另乙個表中,這會使得遮蔽資料複製到新錶中。
在執行sql server import 和 export時,也會把遮蔽複製到新的表中。
4,授權檢視遮蔽資料
把unmask 的許可權授權給使用者,那麼該使用者就可以檢視遮蔽列的原始值:
grant unmask totestuser;
execute
asuser='
testuser
';
select
*from
membership;
revert;
--removing the unmask permission
revoke unmask to testuser;
使用者可以對遮蔽列進行查詢、增加、修改和刪除操作。
1,查詢遮蔽列
檢視資料庫中已經建立的遮蔽列:
select tbl.name astable_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,增加遮蔽列
對現有表增加遮蔽列
altertable
membership
alter
column lastname add masked with (function='
partial(2,"***",0)
') null;
3,修改遮蔽列
對現有的遮蔽列進行修改
altertable
membership
alter
column lastname varchar(100) masked with (function='
default()
');
4,刪除遮蔽列
把列上的遮蔽刪除,刪除掩碼規則,不會刪除該列的值:
altertable
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 ...