在數據分析中透過圖表呈現重新識別作業的風險

本主題說明如何使用 Sensitive Data Protection 評估資料集的 k 匿名性,並在數據分析中以圖表呈現。這樣一來,您也能更瞭解風險,並評估在遮蓋或去識別化資料時,可能需要權衡的效用。

雖然本主題著重於以視覺化方式呈現 k 匿名性重新識別風險分析指標,但您也可以使用相同的方法,以視覺化方式呈現 l 多樣性指標。

本主題假設您已熟悉 k-anonymity 的概念,以及如何運用這項概念評估資料集內記錄的重新識別性。此外,您也需要對使用 Sensitive Data Protection k-匿名性和數據分析有一定程度的瞭解。

簡介

在處理或使用資料時,去識別化技術有助於保護受試者的隱私。但如何判斷資料集是否已充分去識別化?如何判斷去識別化是否導致資料遺失過多,不符合用途需求?也就是說,如何比較重新識別風險與資料效用,以便做出資料導向決策?

計算資料集的 k 匿名性值,可評估資料集記錄的重新識別性,進而解答這些問題。Sensitive Data Protection 內建功能,可根據您指定的準 ID,計算資料集的 k 匿名值。這有助於您快速評估,對特定資料欄或資料欄組合進行去識別化,是否會導致資料集更容易或更不容易重新識別。

範例資料集

以下是某個大型範例資料集的前幾行。

user_id age title score
602-61-8588 24 Biostatistician III 733
771-07-8231 46 Executive Secretary 672
618-96-2322 69 Programmer I 514
... ... ... ...

本教學課程著重於準 ID,因此不會討論 user_id。在實際情境中,您會想確保 user_id 已適當遮蓋或權杖化。score 欄是這個資料集專屬,攻擊者不太可能透過其他方式得知,因此您不會將其納入分析。您將著重於其餘的 age 和 title 欄,攻擊者可能會透過其他資料來源,利用這些欄瞭解個人資訊。對於資料集,您要找出以下問題的解答:

  • age 和 title 這兩個準識別碼,對去識別化資料的整體重新識別風險有何影響?
  • 運用去識別化轉換會如何影響這個風險?

請務必確認 age 和 title 的組合不會對應到少數使用者。舉例來說,假設資料集中只有一位使用者的職稱為「程式設計師 I」,且年齡為 69 歲。攻擊者可能會將這項資訊與客層或其他可用資訊交叉比對,找出該使用者的身分,並得知其分數。如要進一步瞭解這項現象,請參閱「風險分析」概念主題中的「實體 ID 和計算 k 匿名性」一節。

步驟 1:計算資料集的 k 匿名性

首先,請使用 Sensitive Data Protection 計算資料集的 k 匿名性,方法是將下列 JSON 傳送至 DlpJob 資源。在這個 JSON 中,您將實體 ID 設為 user_id 欄,並將兩個準 ID 識別為 age 和 title 欄。您也指示 Sensitive Data Protection 將結果儲存至新的 BigQuery 資料表。

JSON 輸入:

POST https://dlp.googleapis.com/v2/projects/dlp-demo-2/dlpJobs

{
  "riskJob": {
    "sourceTable": {
      "projectId": "dlp-demo-2",
      "datasetId": "dlp_testing",
      "tableId": "dlp_test_data_kanon"
    },
    "privacyMetric": {
      "kAnonymityConfig": {
        "entityId": {
          "field": {
            "name": "id"
          }
        },
        "quasiIds": [
          {
            "name": "age"
          },
          {
            "name": "job_title"
          }
        ]
      }
    },
    "actions": [
      {
        "saveFindings": {
          "outputConfig": {
            "table": {
              "projectId": "dlp-demo-2",
              "datasetId": "dlp_testing",
              "tableId": "test_results"
            }
          }
        }
      }
    ]
  }
}

k 匿名性工作完成後,Sensitive Data Protection 會將工作結果傳送至名為 dlp-demo-2.dlp_testing.test_results 的 BigQuery 資料表。

步驟 2:將結果連結至數據分析

接著,您要將步驟 1 產生的 BigQuery 資料表連結至數據分析中的新報表。

  1. 開啟數據分析。

    開啟數據分析

  2. 依序點選「建立」>「報表」。

  3. 在「將資料新增至報表」窗格的「連結至資料」下方,點選「BigQuery」。您可能需要授權數據分析存取 BigQuery 資料表。

  4. 在資料欄挑選器中,選取「我的專案」。然後選擇專案、資料集和資料表。完成後,按一下「新增」。如果看到即將在報表中新增資料的通知,請點選「加入報表」。

k 匿名性掃描結果現已新增至新的數據分析報表。在下一個步驟中,您將會建立圖表。

步驟 3:建立圖表

請按照下列步驟插入及設定圖表:

  1. 在數據分析中,如果出現值表格,請選取該表格,然後按下 Delete 鍵移除。
  2. 在「插入」選單中,按一下「組合圖」。
  3. 在畫布上點選並繪製矩形,指定圖表顯示位置。

接著,在「Data」(資料) 分頁下方設定圖表資料,讓圖表顯示不同值區大小和值範圍的效果:

  1. 將滑鼠游標移到下列標題下方的各個欄位,然後按一下 X,即可清除欄位,如下所示:
    時間戳記欄位的詳細資料,其中「刪除」按鈕已啟用。
    • 日期範圍維度
    • 維度
    • 指標
    • 排序
  2. 清除所有欄位後,將 upper_endpoint 欄位從「可用欄位」欄拖曳到「維度」標題。
  3. 將「upper_endpoint」欄位拖曳至「排序」標題,然後選取「遞增」。
  4. 將 bucket_size 和 bucket_value_count 欄位拖曳至「Metric」(指標) 標題。
  5. 將滑鼠游標移至 bucket_size 指標左側的圖示,畫面上會顯示「編輯」圖示 。按一下「Edit」圖示 ,然後執行下列操作:
    1. 在「Name」(名稱) 欄位中輸入 Unique row loss。
    2. 在「類型」下方,選擇「百分比」。
    3. 在「比較計算」下方,選擇「總計百分比」。
    4. 在「Running calculation」下方,選擇「Running sum」。
  6. 對 bucket_value_count 指標重複執行上一個步驟,但在「Name」(名稱) 欄位中輸入 Unique quasi-identifier combination loss。

完成後,資料欄應顯示如下:

欄位清單的螢幕擷取畫面。

最後,設定圖表,針對兩個指標顯示折線圖:

  1. 在視窗右側的窗格中,按一下「樣式」分頁標籤。
  2. 在「系列 1」和「系列 2」中,選擇「折線圖」。
  3. 如要單獨查看最終圖表,請按一下視窗右上 角的「 View」(檢視) 按鈕。

完成上述步驟後,圖表會如下所示。

最終圖表

解釋圖表

產生的圖表會在 y 軸上繪製不重複資料列和不重複準識別項組合的潛在資料遺失百分比,並在 x 軸上繪製 k-匿名值。

k 匿名值越高,重新識別的風險就越低。不過,如要達到更高的 k 匿名值,您必須移除更高百分比的總資料列和不重複的準 ID 組合,這可能會降低資料的實用性。

幸好,捨棄資料並非降低重新識別風險的唯一方法。其他去識別化技術則可在損失和效用之間取得更佳平衡。舉例來說,如要解決與較高 k 匿名值和這個資料集相關的資料遺失問題,可以嘗試將年齡或職稱分桶,降低年齡/職稱組合的獨特性。舉例來說,您可以嘗試將年齡分組為 20-25、25-30、30-35 等範圍。如要進一步瞭解如何執行這項操作,請參閱「一般化和分塊」和「將文字內容中的私密資料去識別化」。