使用 K-anonymity 以視覺化的方式呈現重新識別風險

本主題將說明如何使用 Cloud Data Loss Prevention (DLP) 測量資料集的 k-anonymity,然後使用視覺化方式呈現在 Google 數據分析中。如此一來,您也可以更充分瞭解風險,並協助評估如要將資料遮蓋或去識別化時,可能必須在實用性上做哪些取捨。其他指標如 l-diversity 等也會在 API 中提供,但本主題的重點放在 k-anonymity 上。

簡介

去識別化技術可以協助您在處理或使用資料時,有效保護當事人的隱私權。但是,您要如何得知資料集是否做了充分的去識別化呢?還有,如何察覺去識別化作業是否造成資料損失過多,而不適合您的用途?也就是說,您可以如何比較重新識別風險與資料的實用性,進而做出資料導向的決策呢?

計算資料集的 k-anonymity 值,有助於藉由評估資料集記錄是否能重新識別,來解答上述問題。Cloud DLP 內建的功能可讓您根據指定的準識別項,計算資料集的 k-anonymity 值。這可以協助您快速評估將某一資料欄或某組資料欄去識別化,將使資料集能被重新識別的機率增加還是減少。

範例資料集

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

user_id zip_code age score
121317473 94043 25 52
121317474 92104 43 87
... ... ... ...

為符合本教學課程的目的,user_id 將不在此說明,因為我們重點是在準識別項上。在現實生活中,您會希望確保這類內容經過正確遮蓋或代碼化score 資料欄專用於這個資料集,而攻擊者不太可能會利用其他方式來得知此內容,因此您不會將此納入分析範圍。其他的 zip_codeage 資料欄才是您的重點,因為攻擊者可能會透過其他資料來源知悉某一個人的資料。對於資料集,您要找出以下問題的解答:

  • 這兩個準識別項 (zip_codeage) 對去識別化資料的整體重新識別風險有何影響?
  • 運用去識別化轉換會如何影響這個風險?

您應確保 zip_codeage 的組合不會對應到少數使用者。譬如,假設在資料集中只有一位使用者居住地的郵遞區號為 94043 且年齡是 25。攻擊者可能可以利用該區域的人口統計或其他可用資訊,交叉參照以上資訊,猜出這個人是誰,並得到分數值。如要進一步瞭解這個現象,請參閱風險分析概念主題中的「實體 ID 及計算 k-anonymity

步驟 1:對資料集計算 k-anonymity

首先,使用 Cloud DLP 對資料集計算 k-anonymity,然後將以下 JSON 傳送到資源。在這個 JSON 中,將 DlpJob 實體 ID 設定為 user_id 資料欄,並將兩個準識別項指定為 zip_codeage 資料欄。此外,也要指示 Cloud DLP 將結果儲存到 BigQuery 表格中。

JSON 輸入:

POST https://dlp.googleapis.com/v2/projects/[PROJECT_ID]/dlpJobs?key={YOUR_API_KEY}

{
  "riskJob":{
    "privacyMetric":{
      "kAnonymityConfig":{
        "entityId":{
          "field":{
            "name":"user_id"
          }
        },
        "quasiIds":[
          {
            "name":"zip_code"
          },
          {
            "name":"age"
          }
        ]
      }
    },
    "actions":[
      {
        "saveFindings":{
          "outputConfig":{
            "table":{
              "projectId":"dlp-demo-2",
              "datasetId":"risk",
              "tableId":"risk1"
            }
          }
        }
      }
    ],
    "sourceTable":{
      "projectId":"dlp-demo-2",
      "datasetId":"deid",
      "tableId":"source1"
    }
  }
}

k-anonymity 工作處理完畢後,Cloud DLP 就會將工作結果傳送到名為 dlp-demo-2.risk.risk1 的 BigQuery 表格。

步驟 2:將結果連接到 Google 數據分析

接下來,您要將步驟 1 所產生的 BigQuery 表格連接到 Google 數據分析中的新報表。

  1. 開啟 Google 數據分析,然後按一下 [Start a new report] (建立新報表) 下方的 [Blank] (空白報表) 選項。
  2. 在右側的「Add a data source」(加入資料來源) 窗格中,按一下最下方的 [CREATE NEW DATA SOURCE] (建立新資料來源)
  3. 在「Google Connectors」區段中,指向「BigQuery」,然後按一下 [SELECT] (選取)
  4. 在 BigQuery 資料來源頁面上,從資料欄選擇器中選擇專案、資料集和資料表。在這個範例中,專案請選擇 [dlp-demo-2],資料集請選 [risk],而資料表則選取 [risk1]
  5. 按一下 [CONNECT] (連結) 按鈕,在您選好三個資料欄後,這個按鈕會變成藍色。成功連線後,會列出使用不同顏色標示的欄位,如下所示:數據分析中的欄位清單。
  6. 在「Field」(欄位) 資料欄中,找出「upper_endpoint」欄位。在這個資料列的「Aggregation」(匯總) 下方,從下拉式選單中選擇 [Sum] (總和)
  7. 按一下 [ADD TO REPORT] (加入報表)

k-anonymity 掃描結果就會加到新的數據分析報表中。在下一個步驟中,您將會建立圖表。

步驟 3:建立圖表

最後是根據匯入的欄位建立圖表。請執行以下步驟來插入圖表:

  1. 在數據分析的 [Insert] (插入) 選單中,按一下 [Combo chart] (組合圖)
  2. 在編輯器頁面上按一下,然後在您要顯示圖表的地方畫一個矩形。

接著,設定圖表資料,讓圖表顯示改變值區的大小和值範圍會產生的影響:

  1. 在右側的「DATA」(資料) 分頁中,指向「timestamp」(時間戳記),然後按一下圓圈內的 X 來移除「Date Range Dimension」(日期範圍維度),如下所示:
    啟用刪除按鈕時的時間戳記欄位詳細資料。
  2. 將「upper_endpoint」欄位拖曳到右資料欄的「Dimension」(維度) 和「Sort」(排序) 欄位中,然後從「Sort」(排序) 欄位下的下拉式選單中選取 [Ascending] (遞增)
  3. 將「bucket_size」和「bucket_value_count」欄位拖曳到「Metric」(指標) 欄位中,然後移除右資料欄中其他的「Metric」(指標) 選項。完成後,資料欄應顯示如下:
    欄位清單的螢幕擷取畫面。
  4. 指向「bucket_size」指標左側的圖示,編輯 (鉛筆) 圖示便會出現。按一下編輯圖示,然後從對應的下拉式選單中選取以下兩個項目:

    • [Display as] (顯示方式:) > [Percent of total] (在總數中所佔的百分比)
    • [Apply running calculation] (套用累計) > [Running sum] (累計加總)
  5. 對「bucket_value_count」指標,重複執行前面的步驟。

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

  1. 在視窗右側窗格中,按一下 [STYLE] (樣式) 分頁標籤。
  2. 針對這兩個數列 (#1 和 #2,其分別代表 bucket_sizebucket_value_count),選擇 [Line] (線條)
  3. 如要查看最後的圖表,請按一下視窗左上角的 [VIEW] (資料檢視) 按鈕。

最終圖表,醒目顯示 k-anonymity 為 10。

解釋圖表

在所產生的圖表上,x 軸是 k-anonymity 值,y 軸則是資料損失百分比。舉例來說,在上面的螢幕擷取畫面中,醒目顯示的資料點指出 k-anonymity 值為 10。這可以解釋如下:如果將 k-anonymity 值為 10 以下的所有資料列捨棄,那麼就會損失資料集中 82% 的資料列。另外,這也會導致不重複的年齡/郵遞區號組合發生 92% 的損失。上面的圖表說明了如不捨棄大量的資料列和值,要使 k-anonymity 值超過 2 或 3 是有困難的。

幸好捨棄資料不是唯一選擇。其他的去識別化技術可以在損失和實用性之間取得較好的平衡。例如,如要解決 k-anonymity 值偏高和這個資料集相關的資料損失問題,您可以試著將年齡或郵遞區號進行特徵分塊,藉此降低年齡/郵遞區號組合的獨特性。比方說,您可以嘗試將年齡分為 20-25、25-30、30-35 等範圍的特徵分塊。要進一步瞭解如何操作,請參閱一般化與特徵分塊將文字內容中的機密資料去識別化等文。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Data Loss Prevention