列レベルのアクセス制御によるアクセス制限
このページでは、BigQuery の列レベルのアクセス制御を使用して、BigQuery データへのアクセスを列レベルで制限する方法について説明します。列レベルのアクセス制御に関する一般的な情報については、BigQuery の列レベルのアクセス制御の概要をご覧ください。
このページの手順には、BigQuery と Data Catalog の両方が使用されます。
テーブル スキーマを更新して、列にポリシータグを設定する必要があります。 Google Cloud コンソール、bq コマンドライン ツール、BigQuery API を使用して、列のポリシータグを設定できます。さらに、次の手法を使用して、テーブルの作成、スキーマの指定、ポリシータグの指定を 1 回の操作で行えます。
- bq コマンドライン ツールの
bq mkコマンドとbq loadコマンド。 tables.insertAPI メソッド。- Google Cloud コンソールの [テーブルを作成] ページ。Google Cloud コンソールを使用する場合は、スキーマを追加または編集するときに [テキストとして編集] を選択する必要があります。
列レベルのアクセス制御を適用するため、必要に応じて動的データ マスキングを使用できます。データ マスキングを使用すると、列の実際の値を null、デフォルト、またはハッシュされたコンテンツで置換することで機密データをマスクできます。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Data Catalog and BigQuery Data Policy APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - BigQuery は、新しいプロジェクトでは自動的に有効になりますが、既存のプロジェクトでは有効にする必要がある場合があります。
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - ポリシータグを管理するユーザーまたはサービス アカウントには、Data Catalog ポリシータグ管理者のロールが必要です。ポリシータグ管理者のロールは、分類とポリシータグを管理できます。また、ポリシータグに関連付けられた IAM ロールを付与または削除できます。
- アクセス制御を適用して列レベルのアクセス制御を行うユーザーまたはサービス アカウントには、BigQuery 管理者のロールまたは BigQuery データオーナーのロールが必要です。BigQuery のロールでは、分類階層にアクセス制御を適用するために使用されるデータポリシーを管理できます。
- Google Cloud コンソールで組織内のすべてのプロジェクトのタクソノミーとポリシータグを表示するには、組織閲覧者のロールが必要です。組織閲覧者のロールがない場合、コンソールに表示されるのは、選択したプロジェクトに関連付けられているタクソノミーとポリシータグのみです。
- 列レベルのアクセス制御で保護されているデータに対してクエリを実行するユーザーまたはサービス アカウントには、そのデータにアクセスするための Data Catalog のきめ細かい読み取りのロールが必要です。
Google Cloud コンソールで [IAM] ページに移動します。
ロールを付与するユーザーのメールアドレスがリストにある場合は、そのメールアドレスを選択して [編集] をクリックします。[権限の編集] ペインが開きます。[別のロールを追加] をクリックします。
ユーザーのメールアドレスがリストにない場合は、 [追加] をクリックし、[新しいプリンシパル] ボックスにメールアドレスを入力します。
[ロールを選択] プルダウン リストをクリックします。
[プロダクトまたはサービスごと] で [Data Catalog] をクリックします。[ロール] で [ポリシータグ管理者] をクリックします。
[保存] をクリックします。
Google Cloud コンソールで [IAM] ページに移動します。
ロールを付与するユーザーのメールアドレスがリストにある場合は、そのメールアドレスを選択して [編集] をクリックします。[別のロールを追加] をクリックします。
ユーザーのメールアドレスがリストにない場合は、 [追加] をクリックし、[新しいプリンシパル] ボックスにメールアドレスを入力します。
[ロールを選択] プルダウン リストをクリックします。
[BigQuery] をクリックし、[BigQuery データポリシー管理者]、[BigQuery 管理者]、[BigQuery データオーナー] のいずれかをクリックします。
[保存] をクリックします。
- ポリシータグの分類を作成します。
- プリンシパルをポリシータグに関連付け、プリンシパルに Data Catalog のきめ細かい読み取りのロールを付与します。
- ポリシータグと BigQuery テーブル列を関連付けます。
- ポリシータグを含む分類にアクセス制御を適用します。
- Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
- [分類の作成] をクリックします。
[新しい分類] ページで次の操作を行います。
- [分類名] に、作成する分類の名前を入力します。
- [説明] に、説明を入力します。
- 必要に応じて、[プロジェクト] に表示されているプロジェクトを変更します。
- 必要に応じて、[場所] に表示されている場所を変更します。
- [ポリシータグ] に、ポリシータグの名前と説明を入力します。
- ポリシータグの子ポリシータグを追加するには、[サブタグを追加] をクリックします。
- 別のポリシータグと同じレベルに新しいポリシータグを追加するには、[+ ポリシータグを追加] をクリックします。
- 必要に応じて、分類にポリシータグと子ポリシータグをさらに追加します。
- ポリシータグの階層の作成が完了したら、[作成] をクリックします。
taxonomies.createを呼び出して分類を作成します。taxonomies.policytag.createを呼び出してポリシータグを作成します。Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
関連するポリシータグを含む分類の名前をクリックします。
ポリシータグを 1 つ以上選択します。
[情報パネル] が表示されていない場合は、[情報パネルを表示] をクリックします。
情報パネルに、選択したポリシータグのロールとプリンシパルが表示されます。ポリシータグを作成および管理するアカウントに、ポリシータグ管理者のロールを追加します。列レベルのアクセス制御で保護されたデータにアクセスするアカウントにきめ細かい読み取りのロールを追加します。また、このパネルを使用して、アカウントからのロールの削除や、他の権限の変更を行うことができます。
[保存] をクリックします。
Google Cloud コンソールで [BigQuery] ページを開きます。
BigQuery Explorer で、更新するテーブルを見つけて選択します。そのテーブルのテーブル スキーマが開きます。
[スキーマを編集] をクリックします。
[現在のスキーマ] 画面でターゲット列を選択し、[ポリシータグを追加] をクリックします。
[ポリシータグを追加] 画面で、列に適用するポリシータグを選択します。
[選択] をクリックします。画面は次のようになります。
[保存] をクリックします。
ローカル ファイルにスキーマを書き込みます。
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
ここで
- project-id は、プロジェクト ID です。
- dataset は、更新しているテーブルを含むデータセットの名前です。
- table は、更新するテーブルの名前です。
schema.json を変更して、列にポリシータグを設定します。
policyTagsのnamesフィールドの値には、ポリシータグのリソース名を使用します。[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": ["projects/project-id/locations/location/taxonomies/taxonomy-id/policyTags/policytag-id"] } }, ... ]
スキーマを更新します。
bq update \ project-id:dataset.table schema.json
bq mkを使用してテーブルを作成するとき。テーブルの作成に使用するスキーマを渡します。bq loadを使用してデータをテーブルに読み込むとき。テーブルを読み込むときに使用するスキーマを渡します。Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
列レベルのアクセス制御を適用する分類をクリックします。
[アクセス制御の適用] がまだオンになっていない場合は、[アクセス制御の適用] をクリックして有効にします。
Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
ポリシータグを表示する分類をクリックします。[分類] ページに、分類内のポリシータグが表示されます。
Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
関連するポリシータグを含む分類の名前をクリックします。
ポリシータグを 1 つ以上選択します。
[情報パネル] が表示されていない場合は、[情報パネルを表示] をクリックします。
情報パネルに、選択したポリシータグのロールとプリンシパルが表示されます。
Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
関連するポリシータグを含む分類の名前をクリックします。
ポリシータグを 1 つ以上選択します。
[情報パネル] が表示されていない場合は、[情報パネルを表示] をクリックします。
情報パネルに、選択したポリシータグのロールとプリンシパルが表示されます。ポリシータグを作成および管理するアカウントに、ポリシータグ管理者のロールを追加します。列レベルのアクセス制御で保護されたデータにアクセスするアカウントにきめ細かい読み取りのロールを追加します。また、このパネルを使用して、アカウントからのロールの削除や、他の権限の変更を行うことができます。
[保存] をクリックします。
ポリシータグを含む分類のポリシータグを表示します。
リソース名をコピーするポリシータグを見つけます。
[ポリシータグのリソース名をコピー] アイコンをクリックします。
スキーマを取得してローカル ファイルに保存します。
bq show --schema --format=prettyjson \ project-id:dataset.table > schema.json
ここで
- project-id は、プロジェクト ID です。
- dataset は、更新しているテーブルを含むデータセットの名前です。
- table は、更新するテーブルの名前です。
schema.json を変更して、列からポリシータグを消去します。
[ ... { "name": "ssn", "type": "STRING", "mode": "REQUIRED", "policyTags": { "names": [] } }, ... ]
スキーマを更新します。
bq update \ project-id:dataset.table schema.json
- Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
- 削除するタグを含む分類の名前をクリックします。
- [編集] をクリックします。
- 削除するポリシータグの横にある をクリックします。
- [保存] をクリックします。
- [確認] をクリックします。
- Google Cloud コンソールで [ポリシータグの分類] ページを開きます。
- 削除するタグを含む分類の名前をクリックします。
- [ポリシーの分類を削除] をクリックします。
- 分類名を入力して、[削除] をクリックします。
クエリを変更し、アクセスできない列を除外します。たとえば、ユーザーが
ssn列にはアクセスできないものの残りの列にはアクセスできる場合、次のクエリを実行できます。SELECT * EXCEPT (ssn) FROM ...
上記の例では、
EXCEPT句でssn列を除外しています。ユーザーを関連データクラスに対して Data Catalog のきめ細かい読み取りのロールを持つものとして追加するよう、Data Catalog 管理者に依頼します。エラー メッセージには、ユーザーがアクセスする必要があるポリシータグの完全な名前が表示されます。
- 宛先テーブルのある
SELECTクエリ - テーブルコピー ジョブ
- データ抽出ジョブ(たとえば、Cloud Storage などへ)
- [ポリシータグの分類] ページで、[アクセス制御を適用] の切り替えが [オン] になっていることを確認します。
クエリが、キャッシュに保存されたクエリ結果を使用したものでないことを確認します。
bqコマンドライン インターフェース ツールを使用してクエリをテストする場合は、--nouse_cache flagを使用してクエリのキャッシュを無効にする必要があります。例:bq query --nouse_cache --use_legacy_sql=false "SELECT * EXCEPT (customer_pii) FROM my_table;"
ロールと権限
ユーザーまたはサービス アカウントのポリシータグに関連するロールがいくつかあります。
すべてのポリシータグ関連のロールの詳細については、列レベルのアクセス制御で使用するロールをご覧ください。
Data Catalog のポリシータグ管理者のロール
Data Catalog ポリシータグ管理者のロールは、データポリシー タグを作成、管理できます。
ポリシータグ管理者のロールを付与するには、ロールを付与するプロジェクトに対する resourcemanager.projects.setIamPolicy 権限が必要です。resourcemanager.projects.setIamPolicy 権限がない場合は、権限を付与するようプロジェクト オーナーに依頼してください。または、次の手順を行ってください。
BigQuery データポリシー管理者、BigQuery 管理者、BigQuery データオーナーのロール
BigQuery データポリシー管理者、BigQuery 管理者、BigQuery データオーナーのロールは、データポリシーを管理できます。
これらのロールのどちらかを付与するには、ロールを付与するプロジェクトの resourcemanager.projects.setIamPolicy 権限が必要です。resourcemanager.projects.setIamPolicy 権限がない場合は、権限を付与するようプロジェクト オーナーに依頼してください。または、次の手順を行ってください。
組織閲覧者のロール
組織閲覧者のロールを持つユーザーは、組織リソースの詳細を表示できます。このロールを付与するには、組織に対する resourcemanager.organizations.setIamPolicy 権限が必要です。
Data Catalog のきめ細かい読み取りのロール
列レベルのアクセス制御で保護されたデータにアクセスするユーザーには、Data Catalog のきめ細かい読み取りロール、または datacatalog.categories.fineGrainedGet 権限が付与されている他のロールが必要です。このロールは、ポリシータグの構成の一環としてプリンシパルに割り当てられます。
ポリシータグに対するきめ細かい読み取りのロールをユーザーに付与するには、そのポリシータグの分類を含むプロジェクトに対する datacatalog.taxonomies.setIamPolicy 権限が必要です。datacatalog.taxonomies.setIamPolicy 権限がない場合は、プロジェクト オーナーに依頼して権限を付与してもらうか、この操作を実行してもらってください。
手順については、ポリシータグの権限を設定するをご覧ください。
列レベルのアクセス制御を設定する
次のタスクを実行して、列レベルのアクセス制御を設定します。
分類の作成
分類を作成するユーザーまたはサービス アカウントには、Data Catalog ポリシータグ管理者ロールが必要です。
コンソール
API
既存の分類を使用するには、次の手順の最初の 2 つのステップの代わりに taxonomies.import を呼び出します。
ポリシータグに権限を設定する
分類を作成するユーザーまたはサービス アカウントには、Data Catalog ポリシータグ管理者ロールが必要です。
コンソール
API
taxonomies.policytag.setIamPolicy を呼び出して、プリンシパルに適切なロールを割り当てることで、ポリシータグへのアクセス権を付与します。
ポリシータグを列に設定する
ポリシータグを設定するユーザーまたはサービス アカウントには、datacatalog.taxonomies.get 権限と bigquery.tables.setCategory 権限が必要です。datacatalog.taxonomies.get は、Data Catalog ポリシータグ管理者とプロジェクト閲覧者のロールに含まれています。bigquery.tables.setCategory は、BigQuery 管理者(roles/bigquery.admin)と BigQuery データオーナー(roles/bigquery.dataOwner)のロールに含まれています。
Google Cloud コンソールで組織内のすべてのプロジェクトの分類とポリシータグを表示するには、resourcemanager.organizations.get 権限が必要です。この権限は、組織閲覧者のロールに含まれています。
コンソール
Google Cloud コンソールを使用してスキーマを変更し、ポリシータグを設定します。
bq
API
既存のテーブルの場合は tables.patch を呼び出し、新しいテーブルの場合は tables.insert を呼び出します。渡した Table オブジェクトの schema プロパティを使用して、スキーマ定義でポリシータグを設定します。ポリシータグの設定方法については、コマンドラインのサンプル スキーマを参照してください。
既存のテーブルを操作する場合は、tables.patch メソッドの方が適切です。tables.update メソッドはテーブル リソース全体を置き換えるからです。
列にポリシータグを設定するその他の方法
ポリシータグは次の場合にも設定できます。
スキーマに関する一般的な情報については、スキーマの指定をご覧ください。
アクセス制御の適用
アクセス制御の適用を有効または無効にするには、次の手順を使用します。
アクセス制御を適用するには、データポリシーを作成する必要があります。これは、Google Cloud コンソールを使用してアクセス制御を適用する場合に行われます。BigQuery Data Policy API を使用してアクセス制御を適用する場合は、データポリシーを明示的に作成する必要があります。
アクセス制御を適用するプリンシパルには、BigQuery 管理者のロールまたは BigQuery データオーナーのロールが必要です。また、プリンシパルには Data Catalog 管理者ロールまたは Data Catalog 閲覧者ロールのいずれかも必要です。
アクセス制御の適用(有効になっている場合)を停止するには、[アクセス制御の適用] をクリックして切り替えます。
分類のいずれかのポリシータグにデータポリシーが関連付けられている場合は、アクセス制御の適用を停止する前に、分類内のすべてのデータポリシーを削除する必要があります。BigQuery Data Policy API を使用してデータポリシーを削除する場合は、dataPolicyType が DATA_MASKING_POLICY のデータポリシーをすべて削除する必要があります。詳細については、データポリシーを削除するをご覧ください。
データポリシーを作成する
データポリシーを作成する手順は次のとおりです。
コンソール
アクセス制御を適用するには、次の手順を行います。
API
create メソッドを使用して、dataPolicyType フィールドが COLUMN_LEVEL_SECURITY_POLICY に設定されている DataPolicy リソースを渡します。
データポリシーを取得する
データポリシーに関する情報を取得する手順は次のとおりです。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
データポリシーに対する Identity and Access Management(IAM)ポリシーを取得する
データポリシーに対する IAM ポリシーを取得する手順は次のとおりです。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
データポリシーを一覧表示する
データポリシーを一覧表示する手順は次のとおりです。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
データポリシーを削除する
データポリシーを削除する手順は次のとおりです。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
ポリシータグを使用する
このセクションでは、ポリシータグを表示、変更、削除する方法について説明します。
ポリシータグを表示する
分類用に作成したポリシータグを表示するには:
スキーマ内のポリシータグを表示する
テーブル スキーマの検証時に、テーブルに適用されたポリシータグを表示できます。スキーマを表示するには、 Google Cloud コンソール、bq コマンドライン ツール、BigQuery API、クライアント ライブラリを使用します。スキーマの表示方法の詳細については、テーブル情報の取得をご覧ください。
ポリシータグの権限を表示する
ポリシータグの権限を更新する
分類を作成するユーザーまたはサービス アカウントには、Data Catalog ポリシータグ管理者ロールが必要です。
コンソール
API
taxonomies.policytag.setIamPolicy を呼び出して、プリンシパルに適切なロールを割り当てることで、ポリシータグへのアクセス権を付与します。
ポリシータグのリソース名を取得する
ポリシータグを列に適用するには、ポリシータグのリソース名が必要です。
ポリシータグのリソース名を取得するには:
ポリシータグを消去する
テーブル スキーマを更新して、列からポリシータグを消去します。Google Cloud コンソール、bq コマンドライン ツール、BigQuery API メソッドを使用して、列からポリシータグを消去できます。
コンソール
[現在のスキーマ] ページの [ポリシータグ] で、[X] をクリックします。
bq
API
tables.patch を呼び出し、schema プロパティを使用して、スキーマ定義のポリシータグを消去します。ポリシータグの消去方法については、コマンドラインのサンプル スキーマを参照してください。
tables.update メソッドはテーブル リソース全体を置き換えるため、tables.patch メソッドの方が適切です。
ポリシータグを削除する
分類内の 1 つ以上のポリシータグを削除するか、分類とそれに含まれるすべてのポリシータグを削除できます。ポリシータグを削除すると、適用先の列との関連付けが自動的に削除されます。
データポリシーが関連付けられているポリシータグを削除すると、データポリシーが削除されるまで最大で 30 分かかることがあります。すぐに削除したい場合は、データポリシーを直接削除できます。
分類内の 1 つ以上のポリシータグを削除するには、次の手順を行います。
分類全体を削除する手順は次のとおりです。
列レベルのアクセス制御を使用してデータにクエリを実行する
ユーザーにデータセットへのアクセス権があり、Data Catalog のきめ細かい読み取りのロールがある場合は、列データを使用できます。ユーザーは通常どおりクエリを実行します。
ユーザーがデータセットにアクセスできるものの、Data Catalog のきめ細かい読み取りのロールがない場合、列データを使用できません。そのようなユーザーが SELECT * を実行した場合、ユーザーがアクセスできない列を示すエラーが表示されます。このエラーを解決する方法は次のとおりです。
よくある質問
BigQuery の列レベルのセキュリティはビューに対して機能しますか?
はい。ビューは、基になるテーブルから派生します。保護されている列にビューを介してアクセスする場合、テーブルと同じ列レベルのアクセス制御が適用されます。
BigQuery には、論理ビューと承認済みビューの 2 種類があります。どちらのタイプのビューもソーステーブルから派生しており、どちらもテーブルの列レベルのセキュリティが適用されます。
詳細については、承認済みビューをご覧ください。
列レベルのアクセス制御は STRUCT 列または RECORD 列で機能しますか?
はい。ポリシータグはリーフ フィールドにのみ適用でき、それらのフィールドのみが保護されます。
レガシー SQL と GoogleSQL の両方を使用できますか?
列レベルのアクセス制御で保護されているテーブルには、GoogleSQL を使用してクエリを実行できます。
ターゲット テーブルにポリシータグがある場合、レガシー SQL クエリはすべて拒否されます。
クエリは Cloud Logging に記録されますか?
ポリシータグのチェックは Logging に記録されます。詳細については、監査ロギングの列レベルのアクセス制御をご覧ください。
テーブルのコピーは列レベルのアクセス制御の影響を受けますか?
はい。アクセスできない列はコピーできません。
次の操作は、列レベルの権限を確認して行われます。
新しいテーブルにデータをコピーすると、ポリシータグは自動的に反映されますか?
ほとんどの場合、反映されません。クエリの結果を新しいテーブルにコピーしても、新しいテーブルに自動的にポリシータグが割り当てられることはありません。そのため、新しいテーブルには列レベルのアクセス制御はありません。Cloud Storage にデータをエクスポートする場合も同様です。
例外は、テーブルコピー ジョブを使用する場合です。テーブルコピー ジョブはデータ変換を適用しないため、ポリシータグは自動的に宛先テーブルに反映されます。リージョン間のテーブルコピー ジョブはポリシータグのコピーをサポートしていないため、この例外はリージョン間のテーブルコピー ジョブには適用されません。
列レベルのアクセス制御は Virtual Private Cloud と互換性がありますか?
はい。列レベルのアクセス制御と VPC には互換性があり、補完的です。
VPC は IAM を利用して、BigQuery や Cloud Storage などのサービスへのアクセスを制御します。列レベルのアクセス制御により、BigQuery 自体の個々の列できめ細かいセキュリティを実現できます。
ポリシータグとデータポリシーに VPC を適用して、列レベルのアクセス制御と動的データ マスキングを行うには、境界で次の API を制限する必要があります。
トラブルシューティング
Data Catalog のロールが表示されない
Data Catalog のきめ細かな読み取りのロールが表示されない場合は、プロジェクトで Data Catalog API が有効になっていない可能性があります。Data Catalog API を有効にする方法については、始める前にをご覧ください。Data Catalog API を有効にしてから数分後に、Data Catalog のロールが表示されます。
[分類] ページが表示されない
[分類] ページを表示するには、追加の権限が必要です。たとえば、Data Catalog のポリシータグ管理者のロールは、[分類] ページにアクセスできます。
ポリシータグを適用したが、動作していないように見える
アクセス権のないアカウントのクエリ結果がまだ表示される場合は、そのアカウントがキャッシュ内の結果を受信している可能性があります。具体的には、以前にクエリの実行に成功しその後ポリシータグを適用した場合、クエリ結果キャッシュから結果を取得している場合があります。デフォルトでは、クエリ結果は 24 時間キャッシュされます。結果キャッシュを無効にすると、クエリはすぐに失敗します。キャッシュ保存の詳細については、列レベルのアクセス制御の影響をご覧ください。
一般に、IAM の更新の反映には 30 秒ほどの時間がかかります。ポリシータグ階層の変更が反映されるまでには、最大で 30 分ほどかかる場合があります。
列レベルのセキュリティが適用されたテーブルから読み取る権限がない
組織、フォルダ、プロジェクト、ポリシータグなどのさまざまなレベルで、きめ細かい読み取りロールまたはマスクされた取りロールが必要です。きめ細かい読み取りロールは元データへのアクセスを許可し、マスクされた読み取りロールはマスクされたデータへのアクセスを許可します。IAM のトラブルシューティングを使用して、プロジェクト レベルでこの権限を確認できます。
ポリシータグの分類できめ細かなアクセス制御を設定したにもかかわらず、ユーザーが保護されたデータを閲覧できる
この問題のトラブル シューティングには、以下の詳細を確認します。