GSP864
概要
Cloud Data Loss Prevention(DLP)API は、機密情報を検出、分類、保護できるようにするためのフルマネージド サービスである Sensitive Data Protection の一部です。
DLP API を使用すると、データタイプ、機密レベル、カテゴリなど、さまざまな方法でデータを分類できます。
また、次のようなさまざまな方法で機密データを保護できます。
-
秘匿化: ドキュメントやファイルの機密データを秘匿化します。
-
マスキング:
* などのプレースホルダで機密データをマスクします。
-
トークン化: 機密データを一意の識別子に置き換えます。
-
暗号化: 機密データを暗号化します。
このラボでは、DLP API の基本的な機能について学習し、API を使用してデータを保護するさまざまな方法を試します。
学習内容
このラボでは、DLP API を使用して次のことを行います。
- 文字列とファイルを調べて、情報タイプが一致しているかどうかを確認する
- 匿名化の手法について学び、データを匿名化する
- 文字列と画像で情報タイプを秘匿化する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
- ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
-
ウィンドウで次の操作を行います。
- Cloud Shell 情報ウィンドウで操作を進めます。
- Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、 が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
- [承認] をクリックします。
出力:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
リージョンを設定する
プロジェクトのリージョンを設定する
gcloud config set compute/region {{{project_0.default_region | Region}}}
タスク 1. リポジトリのクローンを作成して API を有効にする
- Cloud Shell で次のコマンドを実行して、Cloud Data Loss Prevention Node.js クライアント リポジトリをダウンロードします。
git clone https://github.com/googleapis/synthtool
- プロジェクト コードをダウンロードしたら
サンプル ディレクトリに移動し、必要な Node.js パッケージをインストールします。
cd synthtool/tests/fixtures/nodejs-dlp/samples/ && npm install
注: 警告メッセージは無視してください。
- 次の
gcloud コマンドを使って、正しいプロジェクトを設定します。
export PROJECT_ID={{{project_0.project_id | "filled in at lab start"}}}
gcloud config set project $PROJECT_ID
API を有効にする
プロジェクトを有効にするために必要な API は次のとおりです。
-
DLP API - テキスト、画像、Google Cloud Storage リポジトリ内のプライバシー センシティブなフラグメントの検出、リスク分析、匿名化のための手法が提供されます。
-
Cloud Key Management Service(KMS)API - Google Cloud KMS を使用すると、暗号鍵を管理し、それらの鍵を使用して暗号オペレーションを実行できます。
- 次の
gcloud コマンドを使用して、必要な API を有効にします。
gcloud services enable dlp.googleapis.com cloudkms.googleapis.com \
--project $PROJECT_ID
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
API を有効にする
タスク 2. 文字列とファイルを調べる
前の手順でダウンロードしたプロジェクトのサンプル ディレクトリには、DLP API のさまざまな機能を利用する JavaScript ファイルがいくつか含まれています。ファイル inspectString.js は、指定された文字列を調べて機密情報の種類を検出します。
- 文字列オプションと、機密情報が含まれている可能性のあるサンプル文字列を指定します。
node inspectString.js $PROJECT_ID "My email address is jenny@somedomain.com and you can call me at 555-867-5309" > inspected-string.txt
出力には、一致した情報タイプごとに検出結果が表示されます。これには以下が含まれます。
-
infoType: 文字列のその部分で検出された情報タイプ。考えられる情報タイプの完全なリストについては、こちらをご覧ください。デフォルトでは、inspectString.js が CREDIT_CARD_NUMBER、PHONE_NUMBER、PERSON_NAME、EMAIL_ADDRESS のみを調べます。
-
可能性: 結果は、一致の可能性に基づいて分類されます。可能性は、VERY_UNLIKELY から VERY_LIKELY までに及びます。
次のコマンドを使用して出力を確認します。
cat inspected-string.txt
上記のリクエストに対する調査結果は、次のようになります。
Findings:
Info type: PERSON_NAME
Likelihood: POSSIBLE
Info type: EMAIL_ADDRESS
Likelihood: LIKELY
Info type: PHONE_NUMBER
Likelihood: VERY_LIKELY
- 同様に、ファイルで情報の種類を調べられます。次のコマンドを実行して、サンプルの
accounts.txt ファイルを確認します。
cat resources/accounts.txt
このファイルには次のテキストが含まれています。
My credit card number is 1234 5678 9012 3456, and my CVV is 789.
-
inspectFile.js ファイルを使用して、提供されたファイルで機密情報の種類を調べます。
node inspectFile.js $PROJECT_ID resources/accounts.txt > inspected-file.txt
次のコマンドを使用して出力を確認します。
cat inspected-file.txt
結果
Findings:
Info type: CREDIT_CARD_NUMBER
Likelihood: VERY_LIKELY
以下は、API を使用して文字列入力を調る非同期関数です。
async function inspectString(
ProjectId,
string,
minLikelihood,
maxFindings,
infoTypes,
customInfoTypes,
includeQuote
) {
...
}
上記のパラメータに指定された引数は、リクエスト オブジェクトの構築に使用されます。そのリクエストは inspectContent 関数に提供され、出力につながるレスポンスが取得されます。
// Construct item to inspect
const item = {value: string};
// Construct request
const request = {
parent: `projects/${projectId}/locations/global`,
inspectConfig: {
infoTypes: infoTypes,
customInfoTypes: customInfoTypes,
minLikelihood: minLikelihood,
includeQuote: includeQuote,
limits: {
maxFindingsPerRequest: maxFindings,
},
},
item: item,
};
// Run request
const [response] = await dlp.inspectContent(request);
出力を Cloud Storage にアップロードする
次のコマンドを実行して、アクティビティの記録の検証用にレスポンスを Cloud Storage にアップロードします。
gsutil cp inspected-string.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp inspected-file.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
文字列とファイルを調べる
タスク 3. 匿名化を行う
Sensitive Data Protection では、機密データの調査と検出だけでなく、DLP API を使用して匿名化を行うこともできます。匿名化とは、個人を特定できる情報をデータから削除するプロセスです。この API は、情報の種類で定義された機密データを検出し、匿名化変換を使用してデータのマスキングや削除、難読化を行います。
- 次のコマンドを実行し、
deidentifyWithMask.js を使用してマスクによる匿名化を行います。
node deidentifyWithMask.js $PROJECT_ID "My order number is F12312399. Email me at anthony@somedomain.com" > de-identify-output.txt
次のコマンドを使用して出力を確認します。
cat de-identify-output.txt
マスクを使用すると、一致する情報タイプの文字が別の文字(デフォルトでは「*」)に置き換えられます。出力例:
My order number is F12312399. Email me at *****************************
文字列内のメールアドレスは難読化されていますが、任意の注文番号はそのままです(カスタムの情報タイプも使用可能ですが、このラボの範囲外です)。
DLP API を使用してマスクで匿名化する関数を確認しましょう。これらの引数もリクエスト オブジェクトを構築するために使用されます。ここでは deidentifyContent 関数に提供されます。
async function deidentifyWithMask() {
const request = {
parent: `projects/${projectId}/locations/global`,
deidentifyConfig: {
infoTypeTransformations: {
transformations: [
{
primitiveTransformation: {
characterMaskConfig: {
maskingCharacter: maskingCharacter,
numberToMask: numberToMask,
},
},
},
],
},
},
item: item,
};
// Run deidentification request
const [response] = await dlp.deidentifyContent(request);
出力を Cloud Storage にアップロードする
次のコマンドを実行して、アクティビティの記録の検証用にレスポンスを Cloud Storage にアップロードします。
gsutil cp de-identify-output.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
匿名化を行う
タスク 4. 文字列と画像を秘匿化する
機密情報を難読化するもう一つの方法は、秘匿化です。秘匿化では一致したものが、一致すると特定された情報タイプに置き換えられます。
-
redactText.js を使用して、サンプル入力のテキストを秘匿化します。
node redactText.js $PROJECT_ID "Please refund the purchase to my credit card 4012888888881881" CREDIT_CARD_NUMBER > redacted-string.txt
次のコマンドを使用して出力を確認します。
cat redacted-string.txt
出力では、サンプル クレジット カード番号が情報タイプ CREDIT_CARD_NUMBER に置き換えられます。
Please refund the purchase on my credit card [CREDIT_CARD_NUMBER]
これは、機密情報を非表示にしながら、削除される情報の種類を特定したい場合に便利です。DLP API では、テキストを含む画像の情報も同様に秘匿化できます。samples/resources ディレクトリのサンプル画像をご覧ください。

- 次のコマンドを実行して、上の画像の電話番号を秘匿化します。
node redactImage.js $PROJECT_ID resources/test.png "" PHONE_NUMBER ./redacted-phone.png
指定したとおり、redacted-phone.png という名前の新しい画像が生成され、リクエストされた情報が黒く塗りつぶされます。確認するには、Cloud Shell コードエディタを使用して samples/redacted-phone.png ファイルを開きます。
注: Cloud Shell コードエディタの左側の [エクスプローラ] ペインから、synthtool > tests > fixtures > nodejs-dlp > samples > redacted-phone.png に移動します。

- もう一度、画像のメールアドレスを秘匿化してみます。
node redactImage.js $PROJECT_ID resources/test.png "" EMAIL_ADDRESS ./redacted-email.png
指定したとおり、redacted-email.png という名前の新しい画像が生成され、リクエストされた情報が黒く塗りつぶされます。確認するには、Cloud Shell コードエディタで samples/redacted-email.png ファイルを開きます。

文字列から機密情報を秘匿化するために使用される関数は次のとおりです。
async function redactText(
callingProjectId,
string,
minLikelihood,
infoTypes
) {
...}
deidentifyContent 関数に提供されるリクエストは次のとおりです。
const request = {
parent: `projects/${projectId}/locations/global`,
item: {
value: string,
},
deidentifyConfig: {
infoTypeTransformations: {
transformations: [replaceWithInfoTypeTransformation],
},
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
};
const [response] = await dlp.deidentifyContent(request);
同様に、画像を秘匿化する関数は次のとおりです。
async function redactImage(
callingProjectId,
filepath,
minLikelihood,
infoTypes,
outputPath
) {
...}
redactImage 関数に提供されるリクエストは次のとおりです。
// Construct image redaction request
const request = {
parent: `projects/${projectId}/locations/global`,
byteItem: {
type: fileTypeConstant,
data: fileBytes,
},
inspectConfig: {
minLikelihood: minLikelihood,
infoTypes: infoTypes,
},
imageRedactionConfigs: imageRedactionConfigs,
};
出力を Cloud Storage にアップロードする
次のコマンドを実行して、アクティビティの記録の検証用にレスポンスを Cloud Storage にアップロードします。
gsutil cp redacted-string.txt gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp redacted-phone.png gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
gsutil cp redacted-email.png gs://{{{project_0.startup_script.gcs_bucket_name|bucket_name_filled_after_lab_start}}}
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
文字列と画像を秘匿化する
お疲れさまでした
Cloud Data Loss Prevention(DLP)API は、機密データの調査、分類、匿名化のプラットフォームにアクセスできる高度なツールです。このラボでは、DLP API を使用して文字列とファイルで複数の情報タイプを調べ、文字列と画像のデータを秘匿化しました。
次のステップと詳細情報
DLP API への理解をさらに深めるために、以下のドキュメントをご確認ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 4 月 22 日
ラボの最終テスト日: 2025 年 4 月 22 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。