當項目用戶具備查詢MaxCompute項目中的某些敏感數據的權限,但又不希望用戶能看到完整的敏感數據信息時,可以對查詢結果進行數據動態脫敏。本文為您介紹如何開啟MaxCompute的動態脫敏功能,并提供參考示例。
背景信息
MaxCompute本身不具備動態脫敏的能力,依賴DataWorks數據保護傘服務的數據脫敏功能。您需先開通DataWorks的數據保護傘服務,才可為目標MaxCompute項目開啟動態脫敏功能。
為MaxCompute項目開啟動態脫敏功能后,您可基于DataWorks的數據識別規則,配置項目的脫敏規則(對哪些敏感數據進行脫敏)。當您從除DataWorks入口外的MaxCompute cmd、log view查詢敏感數據時,在展示層按照配置的脫敏規則進行脫敏。該功能可以有效保護諸如手機號、身份證號、銀行卡號、車牌號、IP地址等敏感信息。動態脫敏功能僅會對查詢結果進行脫敏,不會影響底層存儲的數據。
推薦您使用DataWorks預設的數據識別規則,如果需要自定義數據識別規則,請參見配置數據識別規則并執行識別任務。
使用限制
僅DataWorks專業版及以上版本,才可使用此功能。DataWorks基礎版暫時無法使用此功能,如您的DataWorks為基礎版,請升級DataWorks為合適版本。詳情請參見DataWorks各版本詳解。
僅華北2(北京)、華東2(上海)、華東1(杭州)、西南1(成都)、華南1(深圳)、華北2(北京政務云)、華東2(上海金融云)、中國(香港)、新加坡、德國(法蘭克福)、馬來西亞(吉隆坡)、美國(硅谷)地域支持使用MaxCompute底層脫敏。
MaxCompute底層脫敏的生效范圍為會話級別,即在進行會話查詢時需增加相關脫敏服務調用語句,脫敏配置才會生效。
MaxCompute底層脫敏不支持對MaxCompute數據表的主鍵字段進行脫敏。
MaxCompute底層脫敏僅支持對String類型字段進行脫敏。
只有MaxCompute項目中已經存在數據并且數據已創建24小時(h)的情況下,才能使用此功能。
準備工作
準備待脫敏的MaxCompute項目和數據。具體操作,請參見創建MaxCompute項目和導入數據。
訪問數據保護傘服務并開通。具體操作,請參見進入數據保護傘。
在服務聲明頁面,勾選我已閱讀并接受以上協議條款,單擊立刻開通。
申請網絡白名單。
阿里云主賬號填寫表單申請MaxCompute項目訪問外部網絡,開通后才可調用脫敏服務。
如果目標IP或域名不存在安全限制,審核通過后即可訪問目標IP或域名,審核周期為3個工作日之內。
申請內容格式如下:
項目名稱(待脫敏的項目名稱) : data_shield_hz 日志地址 : 問題描述 : 對Project打開域名白名單,使UDF運行的時候可以訪問某些域名。 區域:杭州 要訪問的域名: dsg-cn-hangzhou.data.aliyun.com,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com 端口:80,443
不同地域申請的域名不同,請填寫以下列表中地域對應的域名。
上海:dsg-cn-shanghai.data.aliyun.com,dsg-oss-dic-ori.oss-cn-shanghai.aliyuncs.com 杭州:dsg-cn-hangzhou.data.aliyun.com,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com 北京:dsg-cn-beijing.data.aliyun.com,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com 成都:dsg-cn-chengdu.data.aliyun.com,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com 深圳售賣區: dsg-cn-shenzhen.data.aliyun.com,dsg-oss-dic-ori-sz.oss-cn-shenzhen.aliyuncs.com 華北政務云: dsg-cn-north-2-gov-1.data.aliyun.com,dsg-oss-dic-ori-north-2-gov-1.oss-cn-north-2-gov-1-internal.aliyuncs.com 上海金融云:dsg-cn-shanghai-finance-1.data.aliyun.com,dsg-oss-dic-ori-sh-fin-1.oss-cn-shanghai.aliyuncs.com 香港 :dsg-cn-hongkong.data.aliyun.com,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com 新加坡: dsg-ap-southeast-1.data.aliyun.com,dsg-oss-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com 硅谷: dsg-us-west-1.data.aliyun.com,dsg-oss-us-west-1.oss-us-west-1.aliyuncs.com 馬來西亞:dsg-ap-southeast-3.data.aliyun.com,dsg-oss-ap-malaysia.oss-ap-southeast-3.aliyuncs.com 法蘭克福: dsg-eu-central-1.data.aliyun.com,dsg-oss-eu-central-1.oss-eu-central-1-internal.aliyuncs.com
開啟數據脫敏功能
選擇脫敏場景。
登錄DataWorks控制臺,進入數據保護傘頁面。具體操作,請參見進入數據保護傘。
在左側導航欄,選擇 ,進入數據脫敏管理。
在脫敏場景下拉列表選擇MaxCompute引擎層脫敏。
說明如果需要在DataWorks界面上展示脫敏效果,需要打開數據開發/數據地圖展示脫敏。
創建數據脫敏場景更多內容請參見創建數據脫敏場景。
可選:若脫敏規則指定的數據不需要對某些用戶進行脫敏展示,您可配置脫敏規則白名單。
在數據脫敏管理界面,單擊白名單配置管理。
在白名單配置管理頁簽,單擊右上方的新增白名單。
在新增白名單對話框中,選擇規則、用戶組和生效時間。
說明設置白名單生效時間后,若不在白名單脫敏時間的區間內,用戶在查詢該敏感信息時將會繼續脫敏。
查詢SQL確認脫敏結果
DataWorks數據開發界面
關閉頁面查詢內容脫敏開關,詳情請參見安全設置與其他。
執行查詢SQL。
在您執行具體查詢SQL前,請先在當前會話中通過set命令調用脫敏服務,不同地域調用底層脫敏服務命令如下所示。
說明MaxCompute底層數據脫敏僅支持會話級別使用。
上海 set odps.output.field.formatter={"name":"aegis:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-shanghai.data.aliyun.com:80,dsg-cn-shanghai.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-shanghai.aliyuncs.com:80,dsg-cn-shanghai.data.aliyun.com:443; 杭州 set odps.output.field.formatter={"name":"aegis_hz:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443; 北京 set odps.output.field.formatter={"name":"aegis_bj:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-beijing.data.aliyun.com:80,dsg-cn-beijing.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:80,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:443; 成都 set odps.output.field.formatter={"name":"aegis_cd:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-chengdu.data.aliyun.com:80,dsg-cn-chengdu.data.aliyun.com:443,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:80,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:443; 香港 set odps.output.field.formatter={"name":"aegis_hk:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-hongkong.data.aliyun.com:80,dsg-cn-hongkong.data.aliyun.com:443,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:80,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:443; 硅谷 set odps.output.field.formatter={"name":"data_sheild_silicon_dev:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-us-west-1.data.aliyun.com:80,dsg-us-west-1.data.aliyun.com:443,dsg-oss-us-west-1.oss-us-west-1.aliyuncs.com:80,dsg-oss-us-west-1.oss-us-west-1.aliyuncs.com:443;
主要參數解釋如下。
命令
含義
odps.output.field.formatter
表示要調用ODPS的脫敏函數(此脫敏函數要求脫敏字段為String類型)。
aegis_hz:<SchemaName>:masking_v2:表示函數名稱(name)。
其中SchemaName是根據MaxCompute項目是否配置Schema三層模型,若已配置則需要配置對應的SchemaName。關于Schema的介紹詳情,請參見Schema操作。
["alias","index"]:表示參數信息(默認參數)。
odps.isolation.session.enable
表示當前調用是會話級別。會話結束后,脫敏功能便會失效。
odps.internet.access.list
表示運行執行函數時訪問相關域名,用于查詢數據保護傘的脫敏信息。
以杭州地域SchemaName為default為例,完整實現MaxCompute底層數據脫敏腳本如下所示。
set odps.output.field.formatter={"name":"aegis_hz:default:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443; select * from table;
在數據開發界面查看脫敏結果。
odpscmd界面查詢結果
配置訪問域名。
在您執行具體查詢SQL前,請先在odpscmd服務的Config配置文件中配置訪問域名。
不同地域的域名配置,具體如下。
上海 set odps.internet.access.list=dsg-cn-shanghai.data.aliyun.com:80,dsg-cn-shanghai.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-shanghai.aliyuncs.com:80,dsg-cn-shanghai.data.aliyun.com:443; 杭州 set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443; 北京 set odps.internet.access.list=dsg-cn-beijing.data.aliyun.com:80,dsg-cn-beijing.data.aliyun.com:443,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:80,dsg-oss-dic-ori.oss-cn-beijing.aliyuncs.com:443; 成都 set odps.internet.access.list=dsg-cn-chengdu.data.aliyun.com:80,dsg-cn-chengdu.data.aliyun.com:443,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:80,dsg-oss-dic-ori-cd.oss-cn-chengdu.aliyuncs.com:443; 香港 set odps.internet.access.list=dsg-cn-hongkong.data.aliyun.com:80,dsg-cn-hongkong.data.aliyun.com:443,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:80,dsg-oss-hongkong.oss-cn-hongkong.aliyuncs.com:443; 硅谷 set odps.internet.access.list=dsg-us-west-1.data.aliyun.com:80,dsg-us-west-1.data.aliyun.com:443,dsg-oss-us-west-1.oss-us-west-1.aliyuncs.com:80,dsg-oss-us-west-1.oss-us-west-1.aliyuncs.com:443;
主要參數解釋如下。
命令
含義
odps.internet.access.list
表示運行執行函數時訪問相關域名,用于查詢數據保護傘的脫敏信息。
以杭州地域SchemaName為default為例,配置文件代碼如下:
project_name=data_shield_hz # app access id and key are optional for individual users # app_access_id=<app_accessid> # app_access_key=<app_accesskey> access_id=客戶aid access_key=客戶ak # this endpoint is for office environment end_point=http://service.odps.aliyun.com/api # this url is for odpscmd update update_url=http://odps.alibaba-inc.com/official_downloads # download sql results by instance tunnel use_instance_tunnel=true # the max records when download sql results by instance tunnel instance_tunnel_max_record=10000 set odps.internet.access.list=dsg-cn-hangzhou.data.aliyun.com:80,dsg-cn-hangzhou.data.aliyun.com:443,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:80,dsg-oss-dic-ori-hz.oss-cn-hangzhou.aliyuncs.com:443;
執行查詢SQL。
在您執行具體查詢SQL前,請先在當前會話中通過set命令調用脫敏服務,不同地域調用底層脫敏服務命令如下所示。
說明MaxCompute底層數據脫敏僅支持會話級別使用。
上海 set odps.output.field.formatter={"name":"aegis:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 杭州 set odps.output.field.formatter={"name":"aegis_hz:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 北京 set odps.output.field.formatter={"name":"aegis_bj:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 成都 set odps.output.field.formatter={"name":"aegis_cd:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 香港 set odps.output.field.formatter={"name":"aegis_hk:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; 硅谷 set odps.output.field.formatter={"name":"data_sheild_silicon_dev:<SchemaName>:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true;
主要參數解釋如下。
命令
含義
odps.output.field.formatter
表示要調用ODPS的脫敏函數(此脫敏函數要求脫敏字段為string類型)。
aegis_hz:<SchemaName>masking_v2:表示函數名稱(name)。
其中SchemaName是根據MaxCompute項目是否配置Schema三層模型,若已配置則需要配置對應的SchemaName。關于Schema的介紹詳情,請參見Schema操作。
["alias","index"]:表示參數信息(默認參數)。
odps.isolation.session.enable
表示當前調用是會話級別。會話結束后,脫敏功能便會失效。
以杭州地域為例,完整實現MaxCompute底層數據脫敏腳本如下所示。
set odps.output.field.formatter={"name":"aegis_hz:default:masking_v2","param":["alias","index"]}; set odps.isolation.session.enable=true; select * from table;
查看脫敏結果。
取消使用底層脫敏
執行如下SQL語句,取消使用的底層脫敏。
set odps.output.field.formatter=;
select * from table;
或在DataWorks中配置脫敏場景時,數據范圍不要選擇目標MaxCompute項目,詳情請參見配置脫敏場景。