日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

風(fēng)險識別規(guī)則響應(yīng)案例

DataWorks通過OpenEvent能力為您提供消息訂閱能力,您可以將服務(wù)程序注冊為DataWorks的擴展程序,通過擴展程序來捕捉并響應(yīng)訂閱的事件消息,以此實現(xiàn)對特定事件進行消息通知與流程管控。本文以“實時阻斷或?qū)徟^1000條數(shù)據(jù)的下載行為”事件為例,為您介紹風(fēng)險識別規(guī)則從開發(fā)到驗證的全流程。

背景信息

數(shù)據(jù)下載在企業(yè)風(fēng)險管控中舉足輕重。通常情況下,只有企業(yè)數(shù)據(jù)開發(fā)人員和分析人員可以在數(shù)據(jù)平臺上瀏覽和使用數(shù)據(jù),而不允許將詳細數(shù)據(jù)下載到本地進行分析。一旦數(shù)據(jù)導(dǎo)出到本地,就無法對其使用行為進行審計。同時,如果數(shù)據(jù)被不當(dāng)使用或者受到別有用心者的攻擊,就可能導(dǎo)致數(shù)據(jù)濫用和泄露,甚至可能引發(fā)數(shù)據(jù)安全事件和風(fēng)險輿情。本場景將向您展示如何實現(xiàn)實時阻斷數(shù)據(jù)導(dǎo)出行為。

場景目標(biāo)

當(dāng)用戶一次性導(dǎo)出數(shù)據(jù)超過1000行時,系統(tǒng)將自動阻止或?qū)徟摬僮鳌?/p>

前提條件

步驟一:開啟并配置消息訂閱

  1. 開啟并配置消息訂閱

    由于查詢結(jié)果下載非工作空間操作,因此本案例使用default總線承接操作事件消息。

  2. 查詢事件類型為dataworks:ResourcesDownload:DownloadResources的事件。image

  3. 單擊操作列的事件詳情,查看事件消息體,示例如下:

    重要
    • 消息體中的內(nèi)容可作為您進行風(fēng)險判斷的上下文信息,例如您可以將以下表格中關(guān)鍵字段作為其他同類場景風(fēng)險判斷的上下文信息。

    • 如果您需要通過RAM子賬號、RAM角色讀取default總線中的事件,需進行RAM授權(quán)

    {
      "datacontenttype": "application/json;charset=utf-8",
      "aliyunaccountid": "110755000425****",
      "aliyunpublishtime": "2023-12-05T07:25:31.708Z",
      "data": {
        "eventCode": "download-resources",
        "extensionBizId": "audit_4d7ebb42b805428483148295a97a****",
        "extensionBizName": "DataWorks_IDE_Query_20231205152530.csv",
        "requestId": "77cac0c2fc12cecbf1d289128897****@@ac15054317017611303051804e****",
        "appId": ****,
        "tenantId": 52425742456****,
        "blockBusiness": true,
        "eventBody": {
          "sqlText": "SELECT * FROM table_1",
          "queryDwProjectId": "****",
          "moduleType": "develop_query",
          "operatorBaseId": "110755000425****",
          "datasourceId": "1****",
          "queryDwProjectName": "yongxunQA_emr_chen****",
          "dataRowSize": 4577,
          "datasourceName": "odps_source",
          "operatorUid": "110755000425****"
        },
        "operator": "110755000425****"
      },
      "aliyunoriginalaccountid": "110755000425****",
      "specversion": "1.0",
      "aliyuneventbusname": "default",
      "id": "169d171c-d523-4370-a874-bb0fa083****",
      "source": "acs.dataworks",
      "time": "2023-12-05T15:25:31.588Z",
      "aliyunregionid": "cn-chengdu",
      "type": "dataworks:ResourcesDownload:DownloadResources"
    }

    關(guān)鍵參數(shù)字段說明:

    參數(shù)

    說明

    sqlText

    查詢SQL。

    queryDwProjectId

    查詢數(shù)據(jù)源所在的工作空間ID。

    moduleType

    下載來源,取值:

    • develop_query:數(shù)據(jù)開發(fā)查詢。

    • sqlx_query:數(shù)據(jù)分析查詢。

    • dw_excel:數(shù)據(jù)分析電子表格。

    operatorBaseId

    操作者的UID。

    datasourceId

    查詢的數(shù)據(jù)源ID。

    queryDwProjectName

    查詢數(shù)據(jù)源所在的工作空間名稱。

    dataRowSize

    下載的數(shù)據(jù)量。

    datasourceName

    查詢的數(shù)據(jù)源名稱。

步驟二:開發(fā)并部署擴展程序

  1. 準(zhǔn)備工作:

    開啟消息訂閱并注冊擴展程序,獲取開發(fā)擴展程序所需的必要信息,詳情請參見開發(fā)部署擴展程序:自建服務(wù)方式

  2. 開發(fā)并部署擴展程序。

    根據(jù)已獲取的信息,開發(fā)擴展程序并將其部署為一個應(yīng)用服務(wù),詳情請參見開發(fā)部署擴展程序:函數(shù)計算方式。關(guān)鍵參數(shù)配置和示例如下:

    • 注冊擴展程序時,處理的擴展點選擇數(shù)據(jù)下載前置事件

    • 開發(fā)擴展程序示例代碼如下:

      重要
      • 此擴展程序示例基于步驟一中事件消息體中的dataRowSize字段實現(xiàn)下載行數(shù)風(fēng)險判斷。

      • 在配置響應(yīng)時,如需實現(xiàn)“審批”,則需保證擴展程序在識別到用戶風(fēng)險行為時callbackExtensionRequest.setCheckResult()返回WARN;如需實現(xiàn)“阻斷”,則callbackExtensionRequest.setCheckResult()應(yīng)返回FAIL

      • 本文擴展程序代碼以下載1000條數(shù)據(jù)進行判斷舉例說明,如果希望不同的下載條數(shù)觸發(fā)不同的審批流,您可以配置多個擴展程序,詳情請參見步驟三:配置風(fēng)險識別規(guī)則。例如:

        • 第一個擴展程序僅在下載條數(shù)為0~2000時命中,對應(yīng)審批流程1。

        • 第二個擴展程序僅在下載條數(shù)為2001及以上時命中,對應(yīng)審批流程2。

      package com.aliyun.dataworks.demo;
      
      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.aliyun.dataworks.config.Constants;
      import com.aliyun.dataworks.config.EventCheckEnum;
      import com.aliyun.dataworks.config.ExtensionParamProperties;
      import com.aliyun.dataworks.services.DataWorksOpenApiClient;
      import com.aliyuncs.IAcsClient;
      import com.aliyuncs.dataworks_public.model.v20200518.*;
      import com.aliyuncs.exceptions.ClientException;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      
      /**
       * @author dataworks demo
       */
      @RestController
      @RequestMapping("/extensions")
      public class ExtensionsController {
      
          @Autowired(required = false)
          private DataWorksOpenApiClient dataWorksOpenApiClient;
      
          @Autowired
          private ExtensionParamProperties extensionParamProperties;
      
          /**
           * 接收eventBridge推送過來的消息
           * @param jsonParam
           */
          @PostMapping("/consumer")
          public void consumerEventBridge(@RequestBody String jsonParam){
              JSONObject jsonObj = JSON.parseObject(jsonParam);
              String eventCode = jsonObj.getString(Constants.EVENT_CODE_FILED);
              if(Constants.COMMIT_FILE_EVENT_CODE.equals(eventCode) || Constants.DEPLOY_FILE_EVENT_CODE.equals(eventCode)){
                  //初始化client
                  IAcsClient client = dataWorksOpenApiClient.createClient();
                  try {
                      //當(dāng)前事件參數(shù)信息
                      String messageId = jsonObj.getString("id");
                      JSONObject data = jsonObj.getObject("data", JSONObject.class);
                     // Long projectId = data.getLong("appId");
      
                      //初始化事件回調(diào)
                      CallbackExtensionRequest callbackExtensionRequest = new CallbackExtensionRequest();
                      callbackExtensionRequest.setMessageId(messageId);
                      callbackExtensionRequest.setExtensionCode(extensionParamProperties.getExtensionCode());
                      JSONObject eventBody = data.getJSONObject("eventBody");
                      Long dataRowSize = eventBody.getLong("dataRowSize");
                      //獲取擴展程序選項配置在項目空間下的配置
                      GetOptionValueForProjectRequest getOptionValueForProjectRequest = new GetOptionValueForProjectRequest();
                      //全局?jǐn)U展點事件的配置信息所屬projectId默認(rèn)為-1
                      getOptionValueForProjectRequest.setProjectId("-1");
                      getOptionValueForProjectRequest.setExtensionCode(extensionParamProperties.getExtensionCode());
                      GetOptionValueForProjectResponse getOptionValueForProjectResponse = client.getAcsResponse(getOptionValueForProjectRequest);
                      JSONObject jsonObject = JSON.parseObject(getOptionValueForProjectResponse.getOptionValue());
                      //注意:這里需根據(jù)在DataWorks上實際設(shè)置格式來填寫
                      Long maxDataRowSize = jsonObject.getLong("dataRowSize");
                      //判斷代碼是否包含限制函數(shù)
                      if(dataRowSize > 1000){
      
                          callbackExtensionRequest.setCheckResult(EventCheckEnum.FAIL.getCode());
                          callbackExtensionRequest.setCheckMessage("下載的行數(shù)超過限制數(shù)");
                      }else{//成功回調(diào)
                          callbackExtensionRequest.setCheckResult(EventCheckEnum.OK.getCode());
                      }
                      //回調(diào)DataWorks
                      CallbackExtensionResponse acsResponse = client.getAcsResponse(callbackExtensionRequest);
                      //請求的唯一標(biāo)識,用于后續(xù)錯誤排查使用
                      System.out.println("acsResponse:" + acsResponse.getRequestId());
                  } catch (ClientException e) {
                      //請求的唯一標(biāo)識,用于后續(xù)錯誤排查使用
                      System.out.println("RequestId:" + e.getRequestId());
                      //錯誤狀態(tài)碼
                      System.out.println("ErrCode:" + e.getErrCode());
                      //錯誤描述信息
                      System.out.println("ErrMsg:" + e.getErrMsg());
                  }
              }else{
                  System.out.println("未能過濾其他事件,請檢查配置步驟");
              }
          }
      }

步驟三:配置風(fēng)險識別規(guī)則

  1. 進入安全中心頁面。

    登錄DataWorks控制臺,切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的數(shù)據(jù)開發(fā)與治理 > 安全中心,在右側(cè)頁面中單擊進入安全中心

  2. 在左側(cè)導(dǎo)航欄單擊安全策略 > 風(fēng)險識別規(guī)則

  3. 為已上線的擴展程序設(shè)置審批流程。具體操作,請參見配置風(fēng)險響應(yīng)image

步驟四:啟用風(fēng)險識別規(guī)則

單擊啟用開關(guān),根據(jù)提示開啟擴展程序。image

步驟五:結(jié)果驗證

  1. 進入數(shù)據(jù)下載頁面。

  2. 單擊指定文件操作列的下載

    • 如果檢測通過,則可繼續(xù)下載。

    • 如果檢測不通過,則下載被阻斷或提示發(fā)起申請操作。

其他同類場景說明

你可以基于下載事件中的其他字段,例如工作空間名稱、SQL明細、數(shù)據(jù)源名稱、人員UID等,實現(xiàn)其他符合實際業(yè)務(wù)的實時風(fēng)控場景,例如:

  • 按人員所屬部門(工作空間)判斷是否允許下載數(shù)據(jù)。

  • 當(dāng)查詢SQL中包含敏感字段時阻斷下載。

  • 分段風(fēng)控,當(dāng)下載條數(shù)超過2萬條時需要審批,超過5萬條時則阻斷。

  • 針對空間角色定義下載條數(shù),例如開發(fā)角色允許下載N條,超過則阻斷;分析師角色允許下載M條,超過則阻斷(需結(jié)合ListProjectMembers - 查詢工作空間成員接口實現(xiàn))。

  • 需針對數(shù)據(jù)開發(fā)、數(shù)據(jù)分析場景分別設(shè)置不同的下載數(shù)量策略。