BigQuery は、ペタバイト級のアナリティクス データ ウェアハウスであり、巨大容量のデータに対して SQL クエリをリアルタイムに近い速度で実行できます。
データセットに表示アクセス権を設定する場合、BigQuery では承認済みビューを作成します。承認済みビューを使用すると、元のテーブルへのアクセス権がないユーザーでも、クエリの結果を特定のユーザーやグループと共有できます。ビューの SQL クエリを使用して、ユーザーがクエリを実行できる列(フィールド)を制限することもできます。このチュートリアルでは、承認済みビューを作成します。
目標
このチュートリアルでは、次のタスクを行う方法を説明します。
- データセットを作成し、アクセス制御を適用する
- プロジェクトにアクセス制御を割り当てる
- ユーザーがクエリを実行できるデータを制限する承認済みビューを作成する
費用
BigQuery は有料のプロダクトです。このチュートリアルを行うと、BigQuery の使用料金が発生します。BigQuery では、特定の上限まで無料でリソースを使用できます。詳細については、BigQuery の無料のオペレーションと無料枠をご覧ください。
始める前に
このチュートリアルを始める前に、Google Cloud コンソールを使用して、プロジェクトを作成または選択します。
- 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.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、
BigQuery API を有効にします。
に移動します。 - (省略可)プロジェクトに対する課金を有効にします。課金を有効にしない場合や、クレジット カードを指定しない場合でも、このドキュメントの手順は行えます。BigQuery には、この手順を実施するためのサンドボックスが用意されています。詳細については、BigQuery サンドボックスを有効にするをご覧ください。
ソース データセットを作成する
まず、ソースデータを格納するデータセットを作成します。このチュートリアルでは、GitHub 一般公開データセットからクエリでデータを取得し、ソース データセットのテーブルに格納します。ソース データセットには、データ アナリストに見せたくない情報も含まれています。このようなデータに対するアクセスを承認済みのビューで制限します。
ソース データセットを作成するには:
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
[エクスプローラ] ペインで、データセットを作成するプロジェクトを選択します。
アクション オプションを開いて、[データセットを作成] をクリックします。
[データセット ID] に「
github_source_data
」と入力します。その他のデフォルト設定はそのままにして、[データセットを作成] をクリックします。
SQL
CREATE SCHEMA
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE SCHEMA github_source_data;
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
ソース データセットを作成したら、SQL クエリを使用してテーブルを更新します。このクエリでは、GitHub 一般公開データセットからデータを取得します。
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
次のクエリをコピーして、[エディタ] ペインに貼り付けます。
SELECT commit, author, committer, repo_name FROM `bigquery-public-data.github_repos.commits` LIMIT 1000;
[展開] をクリックして、[クエリ設定] を選択します。
[送信先] で [クエリ結果の宛先テーブルを設定する] をオンにします。
[データセット] に「
PROJECT_ID.github_source_data
」と入力します。PROJECT_ID は、実際のプロジェクト ID に置き換えます。[テーブル ID] に「
github_contributors
」と入力します。[保存] をクリックします。
[実行] をクリックします。
クエリが完了したら、[github_contributors] をクリックしてから [プレビュー] をクリックし、データがテーブルに書き込まれていることを確認します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
ビューを保存できるデータセットを作成する
ソース データセットを作成したら、データ アナリストと共有する承認済みビューを格納する新しい別のデータセットを作成します。後のステップで、ソース データセット内のデータへのアクセス権を承認済みビューに付与します。データ アナリストには承認済みビューへのアクセス権が付与されますが、ソースデータへの直接アクセス権は付与されません。
承認済みビューは、ソースデータとは別のデータセットで作成する必要があります。これにより、データのオーナーは元のデータへのアクセス権を同時に付与することなく、承認済みビューへのアクセス権を付与できます。ソース データセットと承認済みビューのデータセットは、同じリージョンのロケーションに存在する必要があります。
ビューを保存するデータセットを作成するには:
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
[エクスプローラ] パネルで、データセットを作成するプロジェクトを選択します。
アクション オプションを開いて、[データセットを作成] をクリックします。
[データセット ID] に「
shared_views
」と入力します。その他のデフォルト設定はそのままにして、[データセットを作成] をクリックします。
SQL
CREATE SCHEMA
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE SCHEMA shared_views;
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
新しいデータセットにビューを作成する
新しいデータセットに、承認用に使用するビューを作成します。このビューをデータ アナリストと共有します。このビューは SQL クエリで作成します。このクエリで、データ アナリストに見せない列を除外します。
このチュートリアルでは、共有ビューから作成者の情報(投稿者の情報を除く)を除外し、実行者の情報(実行者の名前を除く)を除外します。
新しいデータセットにビューを作成するには:
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
次のクエリをコピーして、[エディタ] ペインに貼り付けます。
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors`;
[保存] > [ビューを保存] の順にクリックします。
[ビューの保存] ダイアログで、次の操作を行います。
- [プロジェクト] で、必要なプロジェクトが選択されていることを確認します。
- [データセット] に「
shared_views
」と入力します。 - [テーブル] に「
github_analyst_view
」と入力します。 - [保存] をクリックします。
SQL
CREATE VIEW
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE VIEW shared_views.github_analyst_view AS ( SELECT commit, author.name AS author, committer.name AS committer, repo_name FROM `PROJECT_ID.github_source_data.github_contributors` );
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
データ アナリストにプロジェクト レベルの IAM ロールを割り当てる
データ アナリストがビューにクエリを実行するには、クエリジョブの実行権限が必要になります。bigquery.user
ロールには、プロジェクト内でジョブ(クエリジョブを含む)を実行する権限が含まれます。ユーザーまたはグループにプロジェクト レベルで bigquery.user
役割を付与すると、ユーザーはデータセットを作成し、それらのデータセット内のテーブルに対してクエリジョブを実行できます。bigquery.user
役割では、他のユーザーが作成しなかったデータセットのクエリ、テーブルデータの表示、テーブル スキーマの詳細の表示はできません。
プロジェクト レベルの bigquery.user
ロールを割り当てても、データ アナリストはビューからクエリするテーブルを含むデータセット内のテーブルデータを表示することはできません。また、クエリも実行できません。bigquery.user
ロールでは、ユーザーはビューを更新することもできません。通常、企業に所属するほとんどの個人(データ サイエンティスト、ビジネス インテリジェンス アナリスト、データ アナリスト)には、プロジェクト レベルの bigquery.user
ロールを割り当てる必要があります。
グループに IAM ロールを追加する場合には、有効な Google アカウントまたは Google Apps アカウントに関連付けられたメールアドレスまたはドメインを使用する必要があります。
プロジェクト レベルでデータ アナリストのグループを bigquery.user
ロールに割り当てるには:
コンソール
Google Cloud Console で IAM ページを開きます。
上部のバーにあるプロジェクト セレクタでプロジェクトが選択されていることを確認します。
[
アクセスを許可] をクリックします。[アクセス権を付与します] ダイアログで、次の操作を行います。
- [新しいプリンシパル] ボックスに、データ アナリストを含むグループを入力します(例:
data_analysts@example.com
)。 - [ロールを選択] ボックスで、BigQuery ユーザーのロールを検索して選択します。
- [保存] をクリックします。
- [新しいプリンシパル] ボックスに、データ アナリストを含むグループを入力します(例:
ビューを含むデータセットにアクセス制御を割り当てる
データ アナリストがビューにクエリを実行するには、ビューを含むデータセットに対する bigquery.dataViewer
ロールが必要です。bigquery.user
ロールは、クエリジョブの作成に必要な権限をデータ アナリストに付与します。ただし、ビューを含むデータセットへの bigquery.dataViewer
アクセス権がないと、ビューを正常にクエリすることはできません。
データセットに対する bigquery.dataViewer
アクセス権をデータ アナリストに付与するには:
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
[エクスプローラ] ペインで、
shared_views
データセットを選択します。[> [権限] の順にクリックします。
共有][権限] ペインで、[プリンシパルを追加] をクリックします。
[新しいプリンシパル] ボックスに、データ アナリストを含むグループを入力します(例:
data_analysts@example.com
)。[ロールを選択] をクリックし、[BigQuery] > [BigQuery データ閲覧者] を選択します。
[保存] をクリックします。
[閉じる] をクリックします。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
ソース データセットの表示アクセスを承認する
ビューを含むデータセットのアクセス制御を作成したら、承認済みのビューとしてソース データセットにビューを追加します。この承認により、ビューはソースデータにアクセスできますが、データ アナリスト グループはアクセスできません。
ソースデータにアクセスするビューを承認するには:
コンソール
Google Cloud コンソールで、[BigQuery] ページを開きます。
[エクスプローラ] ペインで、
github_source_data
データセットを選択します。[
共有] をクリックし、[ビューを承認] を選択します。[承認済みビュー] ペインが表示されたら、[承認済みビュー] フィールドに
github_analyst_view
ビューを入力します。[承認を追加] をクリックします。
これで、github_analyst_view
ビューがソース データセット内のデータにアクセスできるようになりました。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
構成を確認する
構成が完了すると、データ アナリスト グループ(たとえば、data_analysts
)のメンバーがビューにクエリを実行して、構成を確認できます。
構成を確認するには:
SQL
データ アナリスト グループのメンバーに次の作業を依頼します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
SELECT * FROM `PROJECT_ID.shared_views.github_analyst_view`;
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
完全なソースコード
次に、このチュートリアル用のソースコード全体を示します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、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.
次のステップ
- BigQuery でのアクセス制御の詳細については、事前定義ロールと権限を確認する。
- ビューの概要で BigQuery ビューについて学習する。
- 承認済みビューの作成で承認済みビューの詳細を確認する。
- IAM の概要で IAM の基本コンセプトを確認する。
- ポリシーの管理でアクセス制御の管理方法を確認する。