數據安全中心DSC(Data Security Center)支持從數據合規和業務需求等多角度對數據價值、屬性、敏感性進行分類分級,以便企業針對不同數據進行更標準更細粒度的保護和風險調控。數據管理DMS(Data Management)是覆蓋數據全生命周期的一站式數據管理平臺。本文旨在介紹如何將數據安全中心的分類分級能力應用于DMS實踐,為客戶提供敏感數據保護的聯動方案。
準備工作
在RDS管理控制臺申請一個RDS實例,并創建數據庫、表,構建測試數據。
具體操作,請參見快速創建RDS MySQL實例、創建數據庫和賬號。
在數據安全中心控制臺完成實例授權,并進行分類分級識別。
在DMS控制臺為新建的實例開通敏感數據保護能力。具體操作,請參見管理敏感數據。
根據DSC分級結果設定敏感等級
DMS基于權限管理角度識別數據的敏感性,并將數據分為3個安全級別:低敏感、中敏感、高敏感。
DSC從數據價值、敏感性、數據合規和業務需求等多角度將數據分為5個安全級別:N/A、S1、S2、S3、S4。DSC和DMS的推薦敏感數據分級結果對應關系如下,您也可以根據業務需求調整對應關系。
DSC的N/A對應DMS低敏感。
DSC的S1或S2對應DMS中敏感。
DSC的S3或S4對應DMS高敏感。
步驟一:查詢DSC數據分級結果
通過OpenAPI查詢
調用數據安全中心DescribeColumns - 查詢數據資產表中列的數據接口查詢數據分類分級結果的示例代碼如下:
func TestDescribeColumns(t *testing.T) { // 請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代碼泄露可能會導致 AccessKey 泄露,并對賬號名下資源的安全性產生威脅。以下代碼示例使用環境變量獲取 AccessKey 的方式進行調用,僅供參考,建議使用更安全的 STS 方式。 client, _err := CreateSDDPClient(tea.String(os.Getenv("請設置ak環境變量")), tea.String(os.Getenv("請設置sk環境變量"))) assert.Nil(t, _err) describeColumnsRequest := &sddp20190103.DescribeColumnsRequest{ InstanceName: tea.String("資產實例名稱"), TableName: tea.String("數據庫表的名稱"), RiskLevelId: tea.Int64(4),// 指定查詢的數據安全級別,不指定則查詢所有級別。 } response, _err := client.DescribeColumnsWithOptions(describeColumnsRequest, &util.RuntimeOptions{}) assert.Nil(t, _err) for _, item := range response.Body.Items { fmt.Println(*item.Name) } }
示例代碼返回結果如下:
S3等級的字段包括: hide3、hide4、hide14、hide18 S2等級字段包括: hide7、hide13、hide15、hide16、hide19 S1等級字段包括: hide12 N/A等級字段包括: hide1、hide2、hide5、hide6、hide8、hide9、hide10、hide11、hide17、hide20、hide21、hide22、hide23、hide24、hide25、hide26
通過控制臺查詢結果
在數據安全中心控制臺的 頁面,找到并展開目標數據庫實例,單擊數據對象名稱(即數據庫的名稱)對應操作列的表詳情,在該數據對象的詳情面板,單擊數據表的列詳情,可以查看詳細的識別結果。
步驟二:根據DSC分級結果設置列的安全級別
DSC從數據價值、敏感性、數據合規和業務需求等角度對數據進行分類分級,其識別結果更精細和全面。您可以參考DSC的識別結果,結合實際的業務需求,重新設置DMS數據列的安全級別,制定適合的分類分級原則。
通過OpenAPI設置
通過調用DMS的ChangeColumnSecurityLevel - 調整字段安全級別接口設置數據分類分級結果的示例代碼如下:
func TestChangeColumnSecurityLevel(t *testing.T) { // 請確保代碼運行環境設置了環境變量ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代碼泄露可能會導致AccessKey泄露,并對賬號名下資源的安全性產生威脅。以下代碼示例使用環境變量獲取 AccessKey 的方式進行調用,僅供參考,建議使用更安全的 STS 方式。 client, _err := CreateClient(tea.String(tea.String(os.Getenv("請設置ak環境變量")), tea.String(os.Getenv("請設置sk環境變量"))) assert.Nil(t, _err) request := &dms_enterprise20181101.ChangeColumnSecurityLevelRequest{ Tid: tea.Int64(101950), DbId: tea.Int64(35119204), IsLogic: tea.Bool(false), SchemaName: tea.String("數據庫名"), TableName: tea.String("表名"), ColumnName: tea.String("hide1"),//字段名。 NewSensitivityLevel: tea.String("S1"),//字段新的安全級別。 } _, _err = client.ChangeColumnSecurityLevelWithOptions(request, &util.RuntimeOptions{}) assert.Nil(t, _err) }
通過DMS控制臺設置
具體操作,請參見調整字段安全級別。
根據DSC分類結果選擇脫敏算法
DMS的默認脫敏算法為全遮掩,如下圖所示,對于hide3、hide4、hide14、hide18等4列高敏感列全部遮掩為:"*******"。如此展示的效果很不便于查閱,您可以為不同的敏感數據類型設置不同的脫敏規則。
步驟一:查詢DSC的分類結果
調用數據安全中心DescribeColumns - 查詢數據資產表中列的數據接口查詢數據分類結果的示例代碼如下:
func TestDescribeColumns(t *testing.T) {
// 請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// 工程代碼泄露可能會導致 AccessKey 泄露,并對賬號名下資源的安全性產生威脅。以下代碼示例使用環境變量獲取 AccessKey 的方式進行調用,僅供參考,建議使用更安全的 STS 方式。
client, _err := CreateSDDPClient(tea.String(tea.String(os.Getenv("請設置ak環境變量")), tea.String(os.Getenv("請設置sk環境變量")))
assert.Nil(t, _err)
describeColumnsRequest := &sddp20190103.DescribeColumnsRequest{
InstanceName: tea.String("資產實例名稱"),
TableName: tea.String("數據資產表的名稱。"),
RuleId: tea.Int64(1542), // 指定敏感數據識別規則,不指定則查詢所有規則,您可以調用DescribeCategoryTemplateRuleList接口獲取該參數。
PageSize: tea.Int32(20),
}
response, _err := client.DescribeColumnsWithOptions(describeColumnsRequest, &util.RuntimeOptions{})
assert.Nil(t, _err)
for _, item := range response.Body.Items {
if item.RuleName != nil {
fmt.Println(*item.Name, " ", *item.RuleName)
}
}
}
查詢結果如下:
結果如下:
hide3 : 手機號(中國內地)
hide4 : 身份證(中國內地)
hide14 : 郵箱
hide18 : KEY私鑰
步驟二:針對不同的數據設定不同的脫敏規則
通過OpenAPI設置
通過調用DMS的ModifyDesensitizationStrategy - 修改字段綁定的脫敏規則接口設置將字段hide3的脫敏規則設置為23180(手機號中間四位隨機替換),示例代碼如下:
func TestModifyDesensitizationStrategy(t *testing.T) { // 請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代碼泄露可能會導致 AccessKey 泄露,并對賬號名下資源的安全性產生威脅。以下代碼示例使用環境變量獲取 AccessKey 的方式進行調用,僅供參考,建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:http://bestwisewords.com/document_detail/378661.html client, _err := CreateClient(tea.String(tea.String(os.Getenv("請設置ak環境變量")), tea.String(os.Getenv("請設置sk環境變量"))) assert.Nil(t, _err) request := &dms_enterprise20181101.ModifyDesensitizationStrategyRequest{ Tid: tea.Int64(101950), IsLogic: tea.Bool(false), SchemaName: tea.String("數據庫名"), TableName: tea.String("表名"), ColumnName: tea.String("hide3"), RuleId: tea.Int32(23180),//指定要設置的脫敏規則ID,調用ListDesensitizationRule接口可查詢該參數。 } _, _err = client.ModifyDesensitizationStrategyWithOptions(request, &util.RuntimeOptions{}) assert.Nil(t, _err) }
通過DMS控制臺設置
在DMS控制臺調整脫敏算法的具體操作,請參見管理敏感數據。