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

授權(quán)多用戶訪問

使用全密態(tài)數(shù)據(jù)庫(kù)集群時(shí),不同用戶之間天然存在密文數(shù)據(jù)隔離,可以通過簽發(fā)BCL(Behavior Control List)授權(quán),實(shí)現(xiàn)不同用戶之間的數(shù)據(jù)融合計(jì)算。

前提條件

背景信息

全密態(tài)數(shù)據(jù)庫(kù)中,用戶數(shù)據(jù)使用各自的數(shù)據(jù)密鑰進(jìn)行加密,不同用戶之間的密文數(shù)據(jù)天然存在隔離。若需要使用多方用戶的數(shù)據(jù)進(jìn)行聯(lián)合查詢,可以通過簽發(fā)BCL授權(quán)的方式,授權(quán)聯(lián)合查詢的指定參與方,在不泄露數(shù)據(jù)的前提下查詢其他參與方的數(shù)據(jù)。

場(chǎng)景示例:

某數(shù)據(jù)平臺(tái)收集了用戶畫像數(shù)據(jù)(例如不同年齡分布),對(duì)表中的敏感數(shù)據(jù)列使用數(shù)據(jù)平臺(tái)獨(dú)享的數(shù)據(jù)密鑰進(jìn)行了加密,并存儲(chǔ)于后端PolarDB全密態(tài)數(shù)據(jù)庫(kù)中。數(shù)據(jù)密鑰只有數(shù)據(jù)平臺(tái)持有,因此在非授權(quán)狀態(tài)下,任意第三方僅可見密文數(shù)據(jù),且無法直接使用用戶畫像數(shù)據(jù)。

某廣告業(yè)務(wù)應(yīng)用,希望使用數(shù)據(jù)平臺(tái)的用戶畫像數(shù)據(jù)輔助進(jìn)行人群圈選,從而對(duì)特定目標(biāo)用戶人群(例如年齡小于30歲)定向推送廣告。此時(shí),廣告業(yè)務(wù)應(yīng)用可以向數(shù)據(jù)平臺(tái)發(fā)起用戶畫像數(shù)據(jù)使用授權(quán)申請(qǐng)(調(diào)用相應(yīng)的授權(quán)申請(qǐng)接口,并在BCL中指明授權(quán)申請(qǐng)信息),若數(shù)據(jù)平臺(tái)審批后同意授權(quán),則簽發(fā)該BCL授權(quán)申請(qǐng)。廣告業(yè)務(wù)應(yīng)用獲得授權(quán)后,可以在查詢中使用用戶畫像數(shù)據(jù),并獲得查詢目標(biāo)用戶人群信息,進(jìn)而向目標(biāo)用戶人群定向推送廣告。

在該業(yè)務(wù)場(chǎng)景中,廣告業(yè)務(wù)應(yīng)用即便獲得數(shù)據(jù)平臺(tái)授權(quán),也只能在BCL指明的授權(quán)范圍內(nèi)使用用戶畫像數(shù)據(jù),且僅能獲得最終查詢結(jié)果,無法獲得任意中間數(shù)據(jù)。

操作步驟

  1. 在參與方的業(yè)務(wù)代碼中,參考如下命令,初始化各自的證書公鑰。

    //參與方用戶證書私鑰
    String userPriPemString = "*****";
    //參與方用戶證書公鑰
    String userPukPemString = "*****";
    //初始化,只需要初始化執(zhí)行一次,無需重復(fù)執(zhí)行
    KeyManager km = sdk.getKeyManager();
    km.registerCertificate(userPriPemString, userPukPemString);
  2. 定義授權(quán)內(nèi)容。

    String bclBodyJsonString = """{ 
      "version": 1,
      "serial_num": "a121bac0-5cb3-4463-a2b2-1155ff29f4c8",
    
      "issuer_pukid": "dYJ3Wfj/n0eZbuqgQjv8bnBdPXGyWGOlxE/uMy16NXo=",
      "subject_pukid": "+Gg4vXehPt9BWlCPdR83wKDn6E1b/XddNhKQ5mVbKVQ=",
      "validity": {
        "not_after": "20220820111111+0800",
        "not_before": "20230820111111+0800"
      },
      "policies": {
        "issuer_dek_group": [
          {
            "min": 1,
            "max": 100000,
            "groupid": "b6785611-0c49-4f13-87a9-13f151de9b4d"
          }
        ],
        "result_dek": "SUBJECT",
        "subject_dek_group": [
          {
            "min": 1,
            "max": 100000,
            "groupid": "5e19cfa7-c001-4e44-acab-2e5de4b97dcb"
          }
        ],
        "operation": [
          "*"
        ],
        "postproc": "NULL",
        "preproc": "NULL"
      }
    }""";

    參數(shù)說明

    參數(shù)

    取值樣例

    說明

    version

    1

    版本號(hào),當(dāng)前固定為1。

    serial_num

    "a121bac0-5cb3-4463-a2b2-1155ff29f4c8"

    序列號(hào),UUID格式,自定義,全局唯一。

    issuer_pukid

    "dYJ3Wfj/n0eZbuqgQjv8bnBdPXGyWGOlxE/uMy16NXo="

    授權(quán)方證書摘要。

    獲取方法:

    1. 將證書內(nèi)容進(jìn)行Hash加密。

      說明
      • Hash加密算法默認(rèn)SHA 256,您可以指定其他加密算法。

      • 證書內(nèi)容即以下示例內(nèi)容,包括-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----。

        -----BEGIN CERTIFICATE-----
        dYJ3Wfj/n0eZbuqgQjv8bnBdPXGyWGOlxE/uMy16NXo=
        -----END CERTIFICATE-----
    2. 將加密所得的Hash值進(jìn)行Base64編碼。

    3. 將Base64編碼所得的字符串配置到此參數(shù)。

    subject_pukid

    "+Gg4vXehPt9BWlCPdR83wKDn6E1b/XddNhKQ5mVbKVQ="

    申請(qǐng)方用戶證書摘要,配置方法與issuer_pukid相同。

    validity

    { "not_before": "20220820111111+0800", "not_after": "20230820111111+0800"}

    授權(quán)有效期。需使用GeneralizedTime時(shí)間格式。

    • "not_before":有效期開始時(shí)間。

    • "not_after":有效期結(jié)束時(shí)間。

    policies

    issuer_dek_group

    [ { "min": 1, "max": 100000, "groupid": "b6785611-0c49-4f13-87a9-13f151de9b4d" }]

    授權(quán)方允許使用的數(shù)據(jù)密鑰(DEK)分組。

    • "groupid":DEK分組ID。

    • "min":分組內(nèi)授權(quán)的最小DEK ID。

    • "max":分組內(nèi)授權(quán)的最大DEK ID。

    說明

    可通過SELECT encdb_get_cc_entry_by_name(<keyname>);獲取groupiddekidkeyname配置為目標(biāo)被授權(quán)訪問的列。

    subject_dek_group

    [ { "min": 1, "max": 100000, "groupid": "5e19cfa7-c001-4e44-acab-2e5de4b97dcb" }]

    申請(qǐng)方允許使用的數(shù)據(jù)密鑰(DEK)分組。

    • "groupid":DEK分組ID。

    • "min":分組內(nèi)授權(quán)的最小DEK ID。

    • "max":分組內(nèi)授權(quán)的最大DEK ID。

    說明

    可通過SELECT encdb_get_cc_entry_by_name(<keyname>);獲取groupiddekidkeyname配置為目標(biāo)被授權(quán)訪問的列。

    result_dek

    "SUBJECT"

    計(jì)算結(jié)果使用的DEK加密方式。

    • "SUBJECT":使用當(dāng)前計(jì)算中申請(qǐng)方的DEK加密。

    • "ISSUER":使用當(dāng)前計(jì)算中授權(quán)方的DEK加密。

    • DEK ID:使用指定DEK ID的DEK加密。

      重要

      如果使用DEK ID,直接在此參數(shù)配置DEK ID的內(nèi)容,無需添加雙引號(hào)。

    operation

    [ "*"]

    允許的計(jì)算操作。

    • "encrypt":加密。

    • "decrypt":解密。

    • "cmp":比較。

    說明

    如果配置為"*",則表示全授權(quán)。

    postproc

    "NULL"

    計(jì)算前需要的前置預(yù)處理操作。當(dāng)前固定為NULL,表示無前置預(yù)處理操作。

    preproc

    "NULL"

    計(jì)算后需要的后置預(yù)處理操作。當(dāng)前固定為NULL,表示無后置預(yù)處理操作。

  3. 申請(qǐng)方發(fā)起B(yǎng)CL授權(quán)申請(qǐng)。

    boolean isIssuer = false;
    bclBodyJsonString = km.issueBCL(bclBodyJsonString, userPukPemString, userPriPemString, isIssuer);
  4. 授權(quán)方簽發(fā)BCL同意授權(quán)。

    boolean isIssuer = true;
    bclBodyJsonString = km.issueBCL(bclBodyJsonString, userPukPemString, userPriPemString, isIssuer);
  5. (可選)如果授權(quán)方需要撤銷授權(quán),則使用如下配置。

    1. 定義撤銷授權(quán)內(nèi)容。

      brlBodyJsonString = """{
        "version": 1,  
        "pukid": "dYJ3Wfj/n0eZbuqgQjv8bnBdPXGyWGOlxE/uMy16NXo=",
        "this_update": "20220819111128+0800",
        "next_update": "20220919111128+0800",
        "revoked": [
          {
            "revocation_date": "20220819111128+0800",
            "serial_num": "a121bac0-5cb3-4463-a2b2-1155ff29f4c8"
          }
        ]
      }""";

      參數(shù)說明

      參數(shù)

      取值樣例

      說明

      version

      1

      版本號(hào),當(dāng)前固定為1。

      pukid

      "dYJ3Wfj/n0eZbuqgQjv8bnBdPXGyWGOlxE/uMy16NXo="

      授權(quán)方證書摘要。需配置為請(qǐng)求授權(quán)時(shí)BCL中的授權(quán)方證書摘要。

      this_update

      "20220819111128+0800"

      本次撤銷列表更新時(shí)間,需使用GeneralizedTime時(shí)間格式。

      next_update

      "20220919111128+0800"

      下次撤銷列表更新時(shí)間,需使用GeneralizedTime時(shí)間格式。

      revoked

      revocation_date

      "20220819111128+0800"

      撤銷時(shí)間,需使用GeneralizedTime時(shí)間格式。

      serial_num

      "a121bac0-5cb3-4463-a2b2-1155ff29f4c8"

      序列號(hào),UUID格式,需配置為請(qǐng)求授權(quán)時(shí)BCL中的序列號(hào)。

    2. 授權(quán)方簽發(fā)BCL撤銷授權(quán)。

      brlBodyJsonString = km.revokeBCL(brlBodyJsonString, userPukPemString, userPriPemString);