k-マップは、k-匿名性とよく似ていますが、 攻撃者がデータセットに含まれる人物を知らない可能性が高い点が異なります。k-マップは、データセットが比較的小規模である場合や、属性を一般化するのに必要な労力のレベルが高すぎる場合に使用します。
k-匿名性と同じように、k-マップを使用するには、データベースのどの列が準識別子であるかを決定する必要があります。この作業では、データセットに含まれる個人を特定するために攻撃者が使用する可能性が高いデータを明確にします。さらに、k-マップの値を計算するには、元のデータセット内の行と比較するためのより大きなテーブルである再識別データセットが必要です。
このトピックでは、Sensitive Data Protection を使用してデータセットの k-マップの値を計算する方法について説明します。k-マップまたはリスク分析の概要については、続行する前に、リスク分析のコンセプトのトピックをご覧ください。
始める前に
続行する前に、次のことを行っていることを確認してください。
- ログインして Google アカウントにアクセスします。
- Google Cloud コンソールのプロジェクト セレクタページで、 Google Cloud プロジェクトを選択または作成します。 プロジェクト セレクタに移動
- プロジェクト Google Cloud に対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する。
- Sensitive Data Protection を有効にします。 Sensitive Data Protection を有効にする
- 分析する BigQuery データセットを選択します。機密データの保護 は、BigQuery テーブルをスキャンして k-マップ指標を見積もります。
- 攻撃データセットをモデル化するために使用するデータセットの種類を決定します。詳細については、
KMapEstimationConfigオブジェクトのリファレンス ページ、リスク分析の用語と手法をご覧ください。
k-マップ推定値の計算
機密データの保護を使用して k-マップの値を推定できます。機密データの保護は、
統計モデルを使用して再識別データセットを推定します。これは、攻撃データセットが明示的に知られている他のリスク分析手法とは対照的です。Sensitive Data Protection は、データの種類に応じて、一般に公開されているデータセット(米国国勢調査のデータセットなど)またはカスタム統計モデル(ユーザーが指定する 1 つ以上の BigQuery テーブルなど)を使用するか、ユーザーが入力したデータセット内の値の分布から推定します。詳細については、KMapEstimationConfig オブジェクトのリファレンス ページをご覧ください。
機密データの保護を使用して k-マップの推定値を計算するには、まず
リスクジョブを構成します。projects.dlpJobs リソースに対するリクエストを作成します。ここで、PROJECT_ID はプロジェクトの識別子を示します。
https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs
このリクエストには、次の項目で構成される RiskAnalysisJobConfig オブジェクトが含まれます。
PrivacyMetricオブジェクト。ここで、以下を含むKMapEstimationConfigオブジェクトを指定して、k-マップを計算することを指定します。quasiIds[]: 必須。準識別子とみなされるフィールド(TaggedFieldオブジェクト)です。k-マップを計算するためにスキャンして使用されます。2 つの列に同じタグを付けることはできません。次のいずれかを指定できます。- infoType: これによって、Sensitive Data Protection は、関連する一般公開データセットを母集団の統計モデルとして使用します(米国の郵便番号、地域コード、年齢、性別など)。
- カスタム infoType: この列の有効な値に関する統計情報を含む補助テーブル(
AuxiliaryTableオブジェクト)を示すカスタムタグ。 inferredタグ: 意味のあるタグが示されない場合は、inferredを指定します。機密データの保護は入力データ内の値の分布から統計モデルを推定します。
regionCode: 統計モデリングで使用する ISO 3166-1 alpha-2 地域コード (Sensitive Data Protection 用)。この値は、列が地域固有の infoType(米国の郵便番号など)または地域コードでタグ付けされていない場合に必要です。auxiliaryTables[]: 分析で使用する補助テーブル(AuxiliaryTableオブジェクト)。準識別子(quasiIds[])の列に付けるカスタムタグは、それぞれ 1 つの補助テーブルの 1 つの列でのみ使用する必要があります。
BigQueryTableオブジェクト。次のすべてを含めることで、スキャンする BigQuery テーブルを指定します。projectId: テーブルを含むプロジェクトのプロジェクト ID。datasetId: テーブルのデータセット ID。tableId: テーブルの名前。
1 つ以上の
Actionオブジェクトのセット。これは、ジョブの完了時に所定の順序で実行するアクションを表します。各Actionオブジェクトには、次のいずれかのアクションを含めることができます。SaveFindingsオブジェクト: リスク分析のスキャン結果を BigQuery テーブルに保存します。PublishToPubSubオブジェクト: Pub/Sub トピックに通知を公開します。
PublishSummaryToCsccオブジェクト: 結果の概要を Security Command Center に保存します。PublishFindingsToCloudDataCatalogオブジェクト: 結果をData Catalog に保存します。JobNotificationEmailsオブジェクト: 結果が記載されたメールを送信します。PublishToStackdriverオブジェクト: 結果を Google Cloud Observability に保存します。
コードの例
以下に、Sensitive Data Protection を使用して k-マップの値を計算する方法を示すサンプルコードをいくつかの言語で示します。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、 機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
k-マップジョブの結果を表示する
REST API を使用して k-マップのリスク分析ジョブの結果を取得するには、次の GET リクエストを projects.dlpJobs リソースに送信します。PROJECT_ID はプロジェクト ID に、JOB_ID は結果を取得するジョブの識別子に置き換えます。ジョブ ID は、ジョブの開始時に返されています。また、すべてのジョブの一覧表示して取得することもできます。
GET https://dlp.googleapis.com/v2/projects/PROJECT_ID/dlpJobs/JOB_ID
リクエストは、ジョブのインスタンスを含む JSON オブジェクトを返します。分析結果は、AnalyzeDataSourceRiskDetails オブジェクトの "riskDetails" キーにあります。詳細については、DlpJob の API リファレンスをご覧ください。