複数のロケーションにまたがるポリシータグの管理

このドキュメントでは、BigQuery での列レベルのセキュリティと動的データ マスキングのために、リージョンのロケーション全体でポリシータグを管理する方法について説明します。

BigQuery では、ポリシータグを使用して、機密性の高いテーブル列のきめ細かいアクセス制御動的データ マスキングを提供し、型ベースのデータ分類をサポートします。

データ分類を作成し、データにポリシータグを適用すると、ロケーションをまたがってより詳細にポリシータグを管理できます。

ロケーションに関する留意事項

分類は BigQuery のデータセットやテーブルなどのリージョン リソースです。分類を作成するときは、分類にリージョン(ロケーション)を指定します。

分類を作成し、BigQuery を利用可能なすべてのリージョン内のテーブルにポリシータグを適用できます。ただし、分類からテーブル列にポリシータグを適用するには、分類自体とテーブルが同じリージョンに存在している必要があります。

別のロケーションに存在しているテーブル列にポリシータグを適用することはできませんが、分類を明示的に複製して別の場所にコピーすることはできます。

ロケーションをまたぐ分類の使用

ロケーションごとに新しい分類を手動で作成しなくても、分類とそのポリシータグ定義を追加のロケーションに明示的にコピー(または複製)できます。分類を複製すると、複数のロケーションで列レベルのセキュリティのために同じポリシータグを使用することで、管理を簡素化できます。

複製の際、分類とポリシータグは各ロケーションで同じ ID を維持します。

分類タグとポリシータグを再度同期して、複数のロケーションにまたがって統一できます。分類の明示的なレプリケーションは、Data Catalog API の呼び出しによって行われます。複製された分類の以降の同期では、同じ API コマンドを使用します。これによって、前の分類が上書きされます。

分類の同期を容易にするには、Cloud Scheduler を使用して、スケジュールを設定するか、手動でボタンを押すことで、定期的にリージョン間の分類の同期を実行できます。Cloud Scheduler を使用するには、サービス アカウントを設定する必要があります。

新しいロケーションでの分類の複製

必要な権限

分類を複製するユーザー認証情報またはサービス アカウントには、Data Catalog ポリシータグ管理者のロールが必要です。

ポリシータグ管理者のロールを付与する方法については、BigQuery の列レベルのセキュリティによるアクセスの制限をご覧ください。

BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。

複数のロケーションにまたがって分類を複製するには:

API

Data Catalog API の projects.locations.taxonomies.import メソッドを呼び出し、POST リクエストと、HTTP 文字列内の宛先プロジェクト名とロケーションを指定します。

POST https://datacatalog.googleapis.com/{parent}/taxonomies:import

parent パスのパラメータは、分類をコピーする宛先プロジェクトとロケーションです。例: projects/MyProject/locations/eu

複製された分類の同期

複数のロケーションにまたがってすでに複製されている分類を同期するには、新しいロケーションでの分類の複製の説明に従って Data Catalog API 呼び出しを繰り返します。

また、サービス アカウントと Cloud Scheduler を使用して、指定されたスケジュールで分類を同期することもできます。Cloud Scheduler でサービス アカウントを設定すると、Google Cloud コンソールの Cloud Scheduler ページまたは Google Cloud CLI により、オンデマンド(スケジュール設定なし)の同期をトリガーできます。

複製された分類を Cloud Scheduler と同期

複製された分類を Cloud Scheduler を使用してロケーション間で同期するには、サービス アカウントが必要です。

サービス アカウント

既存のサービス アカウントにレプリケーションの同期のための権限を付与することも、新しいサービス アカウントを作成することもできます。

新しいサービス アカウントを作成するには、サービス アカウントを作成するをご覧ください。

必要な権限

  1. 分類を同期しているサービス アカウントには、Data Catalog ポリシータグ管理者のロールが必要です。詳細については、ポリシータグ管理者のロールを付与するをご覧ください。

  2. Cloud Scheduler API を有効にします

Cloud Scheduler を使用した分類同期の設定

Cloud Scheduler を使用して複数のロケーション間で複製された分類を同期するには:

Console

まず、同期ジョブとそのスケジュールを作成します。

  1. Cloud Scheduler でジョブを作成するの手順を行います。

  2. [頻度] に、自動同期を行う間隔を入力します。

  3. ターゲットについては、認証を使用するスケジューラ ジョブの作成の手順をご覧ください。

    スケジューラ ジョブを作成する(パート 2)

次に、スケジュール設定された同期に必要な認証を追加します。

  1. [さらに表示] をクリックして認証フィールドを表示します。

  2. [Auth ヘッダー] で、[OAuth トークンを追加] を選択します。

  3. サービス アカウントの情報を追加します。

  4. [範囲] に「https://www.googleapis.com/auth/cloud-platform」と入力します。

  5. [作成] をクリックして、スケジュールされた同期を保存します。

    スケジューラ ジョブを作成する(パート 2)

次に、ジョブが正しく構成されているかをテストします。

  1. ジョブが作成されたら、[今すぐ実行] をクリックして、ジョブが正しく構成されていることを確認します。その後、Cloud Scheduler は、指定されたスケジュールに基づいて HTTP リクエストをトリガーします。

    スケジューラ ジョブのテスト

gcloud

構文:

  gcloud scheduler jobs create http "JOB_ID" --schedule="FREQUENCY" --uri="URI" --oath-service-account-email="CLIENT_SERVICE_ACCOUNT_EMAIL" --time-zone="TIME_ZONE" --message-body-from-file="MESSAGE_BODY"
  

次のように置き換えます。

  1. ${JOB_ID} はジョブの名前です。これはプロジェクト内で一意でなければなりません。ジョブを削除しても、プロジェクトでそのジョブ名を再利用できないことに注意してください。
  2. ${FREQUENCY} は、ジョブが実行される頻度のジョブ間隔とも呼ばれます。たとえば、「3 時間ごと」です。ここで指定する文字列には、crontab に対応した任意の文字列を使用できます。あるいは、従来の App Engine cron に慣れているデベロッパーは、App Engine Cron 構文も使用できます。
  3. ${URI} はエンドポイントの完全修飾 URL です。
  4. --oauth-service-account-email はトークンタイプを定義します。*.googleapis.com でホストされている Google API は OAuth トークンを想定しています。
  5. ${CLIENT_SERVICE_ACCOUNT_EMAIL} は、クライアント サービス アカウントのメールです。
  6. ${MESSAGE_BODY} は、POST リクエストの本文が含まれるファイルのパスです。

Google Cloud CLI リファレンスで説明されている他のオプション パラメータも使用できます。

例:

  gcloud scheduler jobs create http cross_regional_copy_to_eu_scheduler --schedule="0 0 1 * *" --uri="https://datacatalog.googleapis.com/v1/projects/my-project/locations/eu/taxonomies:import" --oauth-service-account-email="policytag-manager-service-acou@my-project.iam.gserviceaccount.com" --time-zone="America/Los_Angeles" --message-body-from-file=request_body.json
  

次のステップ