在 Canner Enterprise 中進行資料遮罩
在此教程中,您會了解如何使用 Canner Enterprise 的 SQL Explorer 與 UDF 功能來遮罩您的資料,並且搭配工作區授權機制,確保符合機敏資料的使用規範。
在開始本教程之前,您會需要先完成在 Canner Enterprise 中連結資料來源,並且了解如何使用 Canner Enterprise 工作區作為您的資料工作中心。
資料遮罩是為了保護特定敏感或隱私資訊,而將資料遮蔽或置換的處理方式,在降低資料外洩風險的同時又保持可用性。
基礎:在 SQL Explorer 中進行資料遮罩
進入工作區,於 【Tables】 >【Create a Table】加入您要遮罩的資料。
前往 【SQL Explorer】 ,於編輯器中輸入 ANSI SQL Query 進行遮罩:
例如您有一個原始 Tablecustomer_table
Name Phone David Chen 25-989-741-2988 Jennifer Lin 23-768-687-3665 Henry Wu 11-719-748-3364 Amber Lee 14-128-190-5944 以下 Query 將客戶姓名置換為簡稱,並遮蔽電話後四碼為****
SELECT
substr(split_part(Name,' ',1),1,1)||'. '||substr(split_part(Name,' ',2),1,1)||'.' AS Name_abbr,
substr(Phone,1,11)||'****'AS Phone_masked
FROM customer_table撰寫進行遮罩 【SQL】 > 點擊 【Run】 ,在 【Result】 >【View(放大鏡)】 會顯示您遮蔽後的結果。
點擊 【Save as(儲存標示)】 ,您可以將遮蔽後的資料儲存為 View 或 Materialized View,以利後續輸出應用。
進階:搭配 UDF 功能
如果您的遮罩邏輯較複雜,或是希望所有使用者運用相同的商務邏輯來處理資料,可以使用 Canner Enterprise 的 UDF 功能來協助。
首先,於 【UDF】頁面中上傳您的自定義遮罩函式:
您上傳的函式需使用 Java 撰寫,以下範例MaskFunction
函式將置換整個指定的字串欄位為 * 號package com.brandboat.udfs.scalar;
import io.airlift.slice.Slice;
import io.trino.spi.function.Description;
import io.trino.spi.function.ScalarFunction;
import io.trino.spi.function.SqlType;
import io.trino.spi.type.StandardTypes;
import static io.airlift.slice.Slices.utf8Slice;
public class MaskFunction
{
private MaskFunction() {}
@Description("mask value in column")
@ScalarFunction("mask_column")
@SqlType(StandardTypes.VARCHAR)
public static Slice maskColumnSlice(@SqlType(StandardTypes.VARCHAR) Slice value)
{
return utf8Slice("*****");
}
}函式撰寫完成後,您需將 java 檔儲存為 .jar 格式並上傳。
上傳完成後,點擊進入您要使用的函式檔案,於 【Action】 >【Edit Access Control】 開啟 Enable 並將 【Privilege Type】 設為 Public ,所有工作區都可以使用到此函式。若您只要讓特定幾個工作區可以使用,則請將 【Privilege Type】 設為 Private,並於 【Share to workspace】 選擇要分享指定函式至哪些工作區。
進入工作區,於 【Tables】 >【Create a Table】加入您要遮罩的資料。
前往 【SQL Explorer】 ,於編輯器中輸入 ANSI SQL Query,運用已上傳的 UDF 函式進行遮罩:
例如您有一個原始 Tablecustomer_table
Name Phone David Chen 25-989-741-2988 Jennifer Lin 23-768-687-3665 Henry Wu 11-719-748-3364 Amber Lee 14-128-190-5944 以下 Query 使用
MaskFunction
函式 ,將客戶姓名置換為*號,並遮蔽電話後四碼SELECT
mask_column(Name) AS Name_masked,
substr(Phone,1,11)||'****'AS Phone_masked
FROM customer_table撰寫進行遮罩 【SQL】 > 點擊 【Run】 ,在 【Result】 >【View(放大鏡)】 會顯示您遮蔽後的結果。
點擊 【Save as(儲存標示)】 ,您可以將遮蔽後的資料儲存為 View 或 Materialized View,以利後續輸出應用。
下一步
您可以搭配 Canner Enterprise 的多層權限管理機制,運用工作區的資料使用授權及語意層,指定其他使用者只能使用您遮蔽後的資料,達到資料安全管理。