このガイドでは、Cloud Storage、Datastore モードの Firestore(Datastore)、BigQuery でデータを検査し、検査結果を Security Command Center に送信する方法について説明します。
BigQuery データの場合、検査オペレーションとは異なるプロファイリングを追加で実行できます。Security Command Center にデータ プロファイルを送信することも可能です。詳細については、Security Command Center にデータ プロファイルを公開するをご覧ください。
概要
Security Command Center を使用すると、セキュリティの脅威に関するデータを収集し、脅威を特定して、ビジネス上の損害や損失が生じる前に脅威に対処できます。Security Command Center では、一元化された 1 つのダッシュボードから、複数のセキュリティ関連のアクションを行えます。
機密データの保護には、Security Command Center との統合が組み込まれています。機密データの保護のアクションを使用して Google Cloud Storage リポジトリの機密データを検査すると、結果が直接 Security Command Center ダッシュボードに送信されます。結果はその他のセキュリティ指標の横に表示されます。
このガイドの手順を完了すると、次のことができるようになります。
- Security Command Center と機密データの保護を有効にする。
- Google Cloud Storage リポジトリ(Cloud Storage バケット、BigQuery テーブル、Datastore の種類のいずれか)を検査するように機密データの保護を設定する。
- 検査ジョブの結果を Security Command Center に送信するように、機密データの保護のスキャンを構成する。
Security Command Center の詳細については、Security Command Center のドキュメントをご覧ください。
検査ジョブではなく検出スキャンの結果を Security Command Center に送信する場合は、代わりに組織、フォルダ、またはプロジェクトのプロファイリングに関するドキュメントを参照してください。
料金
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Sensitive Data Protection
- Cloud Storage
- BigQuery
- Datastore
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
機密データの保護のスキャン結果を Security Command Center に送信する前に、以下の各手順を行う必要があります。
- 手順 1: Google Cloud Storage リポジトリを設定する
- 手順 2: Identity and Access Management(IAM)のロールを設定する。
- 手順 3: Security Command Center を有効にする
- 手順 4: 機密データの保護を有効にする。
- 手順 5: Security Command Center のセキュリティ ソースとして機密データの保護を有効にする。
こうしたコンポーネントを設定する手順については、以降のセクションで説明します。
手順 1: Google Cloud Storage リポジトリを設定する
独自の Google Cloud Storage リポジトリとサンプル リポジトリのどちらをスキャンするかを選択します。このトピックでは、両方のシナリオについて説明します。
独自のデータをスキャンする
すでにある独自の Cloud Storage バケット、BigQuery テーブル、または Datastore の種類をスキャンする場合は、まずリポジトリが存在するプロジェクトを開きます。以降の手順では、このプロジェクトと組織に対して Security Command Center と機密データの保護の両方を有効にします。
使用するプロジェクトを開いたら、手順 2 の IAM のロールを設定するに進みます。
サンプルデータをスキャンする
テスト データセットをスキャンする場合は、まず請求先アカウントを設定してから、新しいプロジェクトを作成します。この手順を完了するには、IAM のプロジェクト作成者ロールが必要です。IAM ロールの詳細
- 課金をまだ構成していない場合は、請求先アカウントを設定します。
- Google Cloud Console の [新しいプロジェクト] ページに移動します。
- [請求先アカウント] プルダウン リストで、プロジェクトの請求先となる請求先アカウントを選択します。
- [組織] プルダウン リストで、プロジェクトを作成する組織を選択します。
- [場所] プルダウン リストで、プロジェクトを作成する組織またはフォルダを選択します。
次に、サンプルデータをダウンロードして保存します。
- GitHub の Cloud Run 関数のチュートリアル リポジトリにアクセスします。
- [Clone or download] をクリックし、[Download ZIP] をクリックします。
- ダウンロードした ZIP ファイルを解凍します。
- Google Cloud コンソールで Storage の [ブラウザ] ページに移動します。
- [バケットを作成] をクリックします。
- [バケットの作成] ページでバケットに一意の名前を付けて、[作成] をクリックします。
- [バケットの詳細] ページで、[フォルダをアップロード] をクリックします。
- 抽出した
dlp-cloud-functions-tutorials-master
フォルダに移動して開き、sample_data
フォルダを選択します。[アップロード] をクリックして、フォルダのコンテンツを Cloud Storage にアップロードします。
後で使用できるように、Cloud Storage バケットに付けた名前をメモしておきます。ファイルのアップロードが完了したら、次の手順に進みます。
手順 2: IAM のロールを設定する
機密データの保護を使用してスキャン結果を Security Command Center に送信するには、セキュリティ センター管理者と機密データの保護ジョブ編集者の IAM ロールが必要です。このセクションでは、ロールを追加する方法について説明します。このセクションを完了するには、組織管理者の IAM ロールが必要です。
[IAM] ページに移動します。
- [プリンシパル別の表示] タブで、Google アカウントを探し、edit [プリンシパルを編集] をクリックします。
セキュリティ センター管理者と機密データの保護ジョブ編集者のロールを追加します。
- [アクセス権を編集] パネルで、[別のロールを追加] をクリックします。
- [ロールを選択] リストで [セキュリティ センター管理者] を検索して選択します。
- [別の役割を追加] をクリックします。
- [ロールを選択] リストで [DLP ジョブ編集者] を検索して選択します。
- [保存] をクリックします。
これで、組織に機密データの保護ジョブ編集者とセキュリティ センター管理者のロールが付与されました。これらのロールにより、このトピックの残りの部分でタスクを完了できます。
手順 3: Security Command Center を有効にする
Google Cloud コンソールで [Security Command Center] ページに移動します。
[組織] プルダウン リストで、機密データの保護を有効にする組織を選択し、[選択] をクリックします。
表示される [アセット ディスカバリの有効化] ページで、[現在と将来のすべてのプロジェクト] を選択し、[有効にする] をクリックします。機密データの保護がアセット ディスカバリを開始していることを示すメッセージが表示されます。
アセット ディスカバリが完了すると、サポートされている Google Cloud アセットが機密データの保護に表示されます。アセット ディスカバリには数分かかることがあり、ページを更新してアセットを表示する必要がある場合もあります。
Security Command Center の詳細については、Security Command Center のドキュメントをご覧ください。
手順 4: 機密データの保護を有効にする
スキャンするプロジェクトで機密データの保護を有効にします。プロジェクトは、Security Command Center を有効にした同じ組織内にある必要があります。Google Cloud コンソールを使用して機密データの保護を有効にするには:
- Google Cloud コンソールで、[API を有効にする] ページに移動します。
- ツールバーで、このガイドの手順 1 で設定したプロジェクトを選択します。プロジェクトには、スキャンする Cloud Storage バケット、BigQuery テーブル、または Datastore の種類が含まれている必要があります。
- [次へ] をクリックします。
- [有効にする] をクリックします。
これで、プロジェクトで機密データの保護が有効になりました。
手順 5: Security Command Center の統合サービスとして機密データの保護を有効にする
Security Command Center で機密データの保護のスキャン結果を表示するには、統合サービスとして Sensitive Data Protection を有効にします。詳細については、Security Command Center のドキュメントのGoogle Cloud 統合サービスを追加するをご覧ください。
機密データの保護の検出結果は、Security Command Center の [検出結果] ページに表示されます。
機密データの保護の検査スキャンを構成して実行する
このセクションでは、機密データの保護の検査ジョブを構成して実行します。
ここで構成する検査ジョブは、Cloud Storage に保存されているサンプルデータをスキャンするか、Cloud Storage、Datastore、BigQuery に保存されている独自のデータをスキャンするかを機密データの保護に指示します。ユーザーが指定するジョブの構成で、スキャン結果を Security Command Center に保存するように機密データの保護に指示することもできます。
手順 1: プロジェクト ID をメモする
- Google Cloud コンソールに移動します。
- [選択] をクリックします。
- [選択元] プルダウン リストで、Security Command Center を有効にした組織を選択します。
- [ID] で、スキャンするデータを含むプロジェクトのプロジェクト ID をコピーします。
- [名前] で、プロジェクトをクリックして選択します。
手順 2: API Explorer を開いてジョブを構成する
- 次のボタンをクリックして、
dlpJobs.create
メソッドのリファレンス ページで API Explorer に移動します。 - [parent] ボックスに、次のように入力します。PROJECT_ID は、手順 1 でメモしたプロジェクト ID です。
projects/PROJECT_ID
[Request body] フィールドの内容を、使用するデータの種類(Cloud Storage バケット内のサンプルデータ、Cloud Storage、Datastore、BigQuery に保存された独自のデータ)の JSON に置き換えます。
サンプルデータ
サンプルデータを保存するための Cloud Storage バケットを作成した場合は、次の JSON コードをコピーして [Request body] フィールドに貼り付けます。BUCKET_NAME
は、Cloud Storage バケットに付けた名前に置き換えます。
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://BUCKET_NAME/**"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
Cloud Storage データ
独自の Cloud Storage バケットをスキャンするには、次の JSON コードをコピーして [Request body] フィールドに貼り付けます。
PATH_NAME
は、スキャンするロケーションのパスに置き換えます。繰り返しスキャンするには、パスの末尾にアスタリスクを 2 つ付けます(例: gs://path_to_files/**
)。特定のディレクトリをスキャンし、それ以上スキャンしない場合は、パスの末尾にアスタリスクを 1 つ付けます(例: gs://path_to_files/*
)。
{
"inspectJob":{
"storageConfig":{
"cloudStorageOptions":{
"fileSet":{
"url":"gs://PATH_NAME"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
利用可能なスキャン オプションの詳細については、ストレージとデータベースに含まれる機密データの検査をご覧ください。
Datastore データ
Datastore に保存されている独自のデータをスキャンするには、次の JSON コードをコピーして [Request body] フィールドに貼り付けます。
DATASTORE_KIND
は Datastore の種類の名前で置き換えます。また、NAMESPACE_ID
と PROJECT_ID
を名前空間とプロジェクトの識別子に置き換えることも、必要に応じて "partitionID"
を完全に削除することもできます。
{
"inspectJob":{
"storageConfig":{
"datastoreOptions":{
"kind":{
"name":"DATASTORE_KIND"
},
"partitionId":{
"namespaceId":"NAMESPACE_ID",
"projectId":"PROJECT_ID"
}
}
},
"inspectConfig":{
"infoTypes":[
{
"name":"EMAIL_ADDRESS"
},
{
"name":"PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name":"PHONE_NUMBER"
}
],
"includeQuote":true,
"minLikelihood":"UNLIKELY",
"limits":{
"maxFindingsPerRequest":100
}
},
"actions":[
{
"publishSummaryToCscc":{
}
}
]
}
}
利用可能なスキャン オプションの詳細については、ストレージとデータベースに含まれる機密データの検査をご覧ください。
BigQuery データ
独自の BigQuery テーブルをスキャンするには、次の JSON コードをコピーして [Request body] フィールドに貼り付けます。
PROJECT_ID
、BIGQUERY_DATASET_NAME
、BIGQUERY_TABLE_NAME
は、それぞれプロジェクト ID と BigQuery データセット名とテーブル名に置き換えます。
{
"inspectJob":
{
"storageConfig":
{
"bigQueryOptions":
{
"tableReference":
{
"projectId": "PROJECT_ID",
"datasetId": "BIGQUERY_DATASET_NAME",
"tableId": "BIGQUERY_TABLE_NAME"
}
}
},
"inspectConfig":
{
"infoTypes":
[
{
"name": "EMAIL_ADDRESS"
},
{
"name": "PERSON_NAME"
},
{
"name": "LOCATION"
},
{
"name": "PHONE_NUMBER"
}
],
"includeQuote": true,
"minLikelihood": "UNLIKELY",
"limits":
{
"maxFindingsPerRequest": 100
}
},
"actions":
[
{
"publishSummaryToCscc":
{
}
}
]
}
}
利用可能なスキャン オプションの詳細については、ストレージとデータベースに含まれる機密データの検査をご覧ください。
手順 3: 検査ジョブの開始をリクエストする
前の手順に従ってジョブを構成したら、[実行] をクリックしてリクエストを送信します。リクエストが成功すると、成功コードと、作成した機密データの保護ジョブのステータスを示す JSON オブジェクトとともに、レスポンスがリクエストの下に表示されます。
機密データの保護の検査スキャンのステータスを確認する
スキャン リクエストへのレスポンスには、検査スキャンジョブのジョブ ID が "name"
キー、検査ジョブの現在の状態が "state"
キーとして含まれます。リクエストを送信すると、すぐにジョブの状態が "PENDING"
になります。
スキャン リクエストを送信すると、コンテンツのスキャンがすぐに始まります。
検査ジョブのステータスを確認するには:
- 次のボタンをクリックして、
dlpJobs.get
メソッドのリファレンス ページで API Explorer に移動します。 - [name] ボックスに、スキャン リクエストへの JSON レスポンスのジョブ名を入力します。形式は次のとおりです。
ジョブ ID はprojects/PROJECT_ID/dlpJobs/JOB_ID
i-1234567890123456789
の形式です。 - リクエストを送信するには、[Execute] をクリックします。
ジョブが "DONE"
であることをレスポンス JSON オブジェクトの "state"
キーが示している場合、検査ジョブは終了しています。
残りのレスポンス JSON を表示するには、ページを下にスクロールします。["result"
] > ["infoTypeStats"
] に表示されている情報の各種類に、対応する "count"
が表示されているはずです。表示されていない場合、入力した JSON が正確であり、データへのパスまたは場所が正しいことを確認します。
検査ジョブが完了したら、このガイドの次のセクションに進み、Security Command Center でスキャン結果を表示できます。
コードサンプル: Cloud Storage バケットを検査する
この例では、DLP API を使用して、Cloud Storage バケットを検査し、検出結果を Security Command Center に送信する検査ジョブを作成する方法を示します。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
コードサンプル: BigQuery テーブルを検査する
この例では、DLP API を使用して、BigQuery テーブルを検査し、検出結果を Security Command Center に送信する検査ジョブを作成する方法を示します。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
コードサンプル: Datastore の種類を検査する
この例では、DLP API を使用して、Datastore の種類を検査し、検出結果を Security Command Center に送信する検査ジョブを作成する方法を示します。
C#
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
機密データの保護用のクライアント ライブラリをインストールして使用する方法については、機密データの保護のクライアント ライブラリをご覧ください。
機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。
Security Command Center で機密データの保護のスキャン結果を表示する
検査ジョブの結果を Security Command Center に送信するように機密データの保護に指示したため、Security Command Center で検査ジョブの結果を表示できるようになりました。
- Google Cloud コンソールで、Security Command Center の [検出] ページに移動します。
- Security Command Center を有効にした組織を選択します。
[クエリエディタ] フィールドに次のクエリを入力して、機密データ保護の検出結果をクエリします。
state="ACTIVE" AND NOT mute="MUTED" AND (parent_display_name="Sensitive Data Protection" OR parent_display_name="Cloud Data Loss Prevention")
クエリエディタの詳細については、Google Cloud コンソールで検出結果のクエリを編集するをご覧ください。
機密データの保護から送信された検出結果があれば、その検出結果が結果リストに表示されます。このリストには、機密データの保護から送信されたすべての検出結果が含まれ、検査ジョブと検出(データ プロファイリング)オペレーションでの検出結果が含まれます。
このガイドで説明している手順は、機密データの保護の一部の組み込み検出器でのみ有効です。
- 機密データの保護で検出できるその他の情報については、InfoType のリファレンスをご覧ください。
- 独自のカスタム infoType 検出器を構成する方法については、カスタム infoType 検出器の作成をご覧ください。
クリーンアップ
このトピックで使用したリソースについて、Google Cloud アカウントに課金されないようにする手順は次のとおりです。
プロジェクトの削除
課金を停止する最も簡単な方法は、このトピックで説明する手順用に作成したプロジェクトを削除することです。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
この方法でプロジェクトを削除すると、作成した機密データの保護ジョブと Cloud Storage バケットも削除されます。次のセクションの手順に従う必要はありません。
機密データの保護ジョブを削除する
独自のデータをスキャンした場合は、作成した検査ジョブのみを削除する必要があります。
- 次のボタンをクリックして、
dlpJobs.delete
メソッドのリファレンス ページで API Explorer に移動します。 - [name] ボックスに、スキャン リクエストへの JSON レスポンスのジョブ名を入力します。形式は次のとおりです。
ジョブ ID はprojects/PROJECT_ID/dlpJobs/JOB_ID
i-1234567890123456789
の形式です。
追加の検査ジョブを作成した場合や、ジョブが正常に削除されているかを確認する場合は、既存のすべてのジョブを一覧表示できます。
- 次のボタンをクリックして、
dlpJobs.list
メソッドのリファレンス ページで API Explorer に移動します。 - [parent] ボックスに、プロジェクト ID を次の形式で入力します。
projects/PROJECT_ID
- [実行] をクリックします。
レスポンスにジョブが表示されていない場合は、すべてのジョブが削除されています。レスポンスにジョブが表示されている場合は、該当するジョブに対して前述の削除手順を繰り返します。
Cloud Storage バケットの削除
サンプルデータを保持するために新しい Cloud Storage バケットを作成した場合は、そのバケットを削除します。
- Cloud Storage ブラウザを開く
- Cloud Storage ブラウザで、作成したバケットの名前の横に表示されているチェックボックスをオンにして、[削除] をクリックします。
次のステップ
- 機密データの保護の
publishSummaryToCscc
アクションの詳細を学習する。 - 機密データの保護を使用してストレージ リポジトリの機密データをスキャンする方法を学習する。
- Security Command Center の使用方法を学習する。