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