Looker Studio を使用した再識別リスクの可視化

このトピックでは、機密データの保護を使用してデータセットの k-匿名性を測定し、Looker Studio で可視化する方法を示します。そうすることで、リスクをより深く理解し、データの秘匿化や匿名化を行う場合に有用性のトレードオフを評価するのに役立ちます。

このトピックの焦点は、k-匿名性の再識別リスク分析指標の可視化ですが、同じ方法を使用して l-多様性指標を可視化することもできます。

このトピックでは、k-匿名性のコンセプトと、データセット内のレコードの再識別可能性を評価する上での有用性について熟知していることを前提としています。また、機密データの保護を使用して k-匿名性を計算する方法と、Looker Studio を使用する方法にいくらか慣れておくと役立ちます。

はじめに

データの処理や使用時に主体のプライバシーを保護するために、匿名化手法が役立つことがあります。ですが、データセットが十分に匿名化されていることを把握するためにはどうすればいいでしょうか。また、匿名化の結果生じたデータ損失が大きすぎないかどうかを把握するためにはどうすればいいでしょか。つまり、データドリブンの意思決定に役立てるために、再識別リスクとデータの有用性をどのように比較できるでしょうか。

データセットの k-匿名性の値の計算では、データセットのレコードの再識別可能性が評価されるため、こうした質問に答えるのに役立ちます。機密データの保護には、指定した準識別子に基づいてデータセットの 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
... ... ... ...

このチュートリアルでは、準識別子に焦点を当てているため、user_id については説明しません。現実のシナリオでは、user_id が適切に秘匿化またはトークン化されていることを確認する必要があります。score はこのデータセット専用であり、攻撃者が他の方法で学習する可能性は低いため、分析には含めません。したがって、残りの age 列と title 列に焦点を当てることになります。攻撃者はこれらの列を使用して、他のデータソース経由で個人について知る可能性があります。データセットについて回答しようとしている質問は次のとおりです。

  • agetitle の 2 つの準識別子は、匿名化されたデータの全体的な再識別リスクにどのような影響を与えるか。
  • 匿名化変換の適用は、このリスクにどのような影響を与えるか。

agetitle の組み合わせが少数のユーザーにマッピングされないようにする必要があります。たとえば、肩書が Programmer I で 69 歳のユーザーがデータセットに 1 人しかいないとします。攻撃者は、その情報を人口統計または他の利用可能な情報と相互参照し、その人物を特定してスコアの値を知ることができる可能性があります。この現象の詳細については、リスク分析のコンセプト トピックのエンティティ ID と k-匿名性の計算セクションをご覧ください。

ステップ 1: データセットに対する k-匿名性を計算する

まず、次の JSON を DlpJob リソースに送信して、データセットに対する k-匿名性を計算します。この JSON では、エンティティ IDuser_id 列に設定し、2 つの準識別子を age 列と title 列の両方として識別します。また、結果を新しい 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-匿名性ジョブが完了すると、機密データの保護はジョブ結果を dlp-demo-2.dlp_testing.test_results という名前の BigQuery テーブルに送信します。

ステップ 2: 結果を Looker Studio に接続する

次に、ステップ 1 で作成した BigQuery テーブルを Google Looker Studio の新しいレポートに接続します。

  1. Looker Studio を開きます。

    Looker Studio を開く

  2. [作成] > [レポート] をクリックします。

  3. [データのレポートへの追加] ペインの [データに接続する] で、[BigQuery] をクリックします。場合によっては、Looker Studio に BigQuery テーブルへのアクセスを許可する必要があります。

  4. 列選択ツールで、[マイ プロジェクト] を選択します。次に、プロジェクト、データセット、テーブルを選択します。選択が完了したら、[追加] をクリックします。このレポートにデータを追加しようとしているという通知が表示された場合は、[レポートに追加] をクリックします。

これで、k-匿名性スキャン結果が新しいLooker Studio レポートに追加されました。次のステップでは、グラフを作成します。

ステップ 3: グラフを作成する

グラフを挿入して構成するには、次のようにします。

  1. Looker Studio に値の表が表示されたら、それを選択し、Delete キーを押して削除します。
  2. [挿入] メニューで、[複合グラフ] をクリックします。
  3. グラフを表示するキャンバスをクリックして長方形を描画します。

次に、バケットのサイズと値の範囲を変更する効果がグラフに示されるように、[データ] タブでグラフデータを構成します。

  1. 次のように、各フィールドにカーソルを合わせ、 X をクリックして、次の見出しにあるフィールドをクリアします。
    削除ボタンが有効化された timestamp フィールドの詳細。
    • 期間のディメンション
    • ディメンション
    • 指標
    • 並べ替え
  2. すべてのフィールドをクリアして、[upper_endpoint] フィールドを [Available fields] 列から [ディメンション] 見出しにドラッグします。
  3. [upper_endpoint] フィールドを [並べ替え] 見出しにドラッグし、[昇順] を選択します。
  4. [bucket_size] フィールドと [bucket_value_count] フィールドの両方を [指標] 見出しにドラッグします。
  5. bucket_size 指標の左にあるアイコンを指定すると、編集アイコンが表示されます。編集アイコンをクリックして、次の操作を行います。
    1. [名前] フィールドに「Unique row loss」と入力します。
    2. [タイプ] で [割合(%)] を選択します。
    3. [Comparison calculation] で [全体に対する割合] を選択します。
    4. [関数] で [実行中の合計] を選択します。
  6. bucket_value_count 指標について、前の手順を繰り返します。[名前] フィールドに Unique quasi-identifier combination loss と入力します。

完了すると、列は次のように表示されます。

フィールド リストのスクリーンショット。

最後に、両方の指標の折れ線グラフを表示するようにグラフを構成します。

  1. ウィンドウの右側にあるペインの [スタイル] タブをクリックします。
  2. 系列 #1 と系列 #2 の両方で、[折れ線] を選択します。
  3. 最後のグラフを単独で表示するには、ウィンドウの右上隅にある [ビュー] ボタンをクリックします。

以下は、前の手順の完了後のグラフの例です。

最終のグラフ

グラフの解釈

生成されたチャートは、特定の行と準識別子の組み合わせでデータが失われる可能性(%)を y 軸とし、k-匿名性の値を x 軸としてプロットしたグラフです。

k-匿名性の値が高いほど、再識別リスクは低くなります。ただし、より高い k-匿名性の値を実現するためには、行や一意の準識別子の組み合わせをより多く削除する必要があり、これによりデータの有用性が低下する可能性があります。

幸い、データを削除することだけが、再識別リスク軽減の選択肢ではありません。他の匿名化手法を使用すると、損失と有用性のより良いバランスをとることができます。たとえば、より高い k-匿名性の値とこのデータセットに関連する種類のデータ損失に対処するには、年齢と役職の組み合わせの一意性を削減するために、年齢や役職をバケット化できます。たとえば、20〜25、25〜30、30〜35 などの範囲で年齢をバケット化してみることができます。実施方法の詳細については、一般化とバケット化テキスト コンテンツ内の機密データの匿名化をご覧ください。