BigQuery は、ペタバイト級のアナリティクス データ ウェアハウスであり、巨大容量のデータに対して SQL クエリをリアルタイムに近い速度で実行できます。
データセットに表示アクセス権を設定する場合、BigQuery では承認済みビューを作成します。承認済みビューを使用すると、元のテーブルへのアクセス権がないユーザーでも、クエリの結果を特定のユーザーやグループと共有できます。ビューの SQL クエリを使用して、ユーザーがクエリを実行できる列(フィールド)を制限することもできます。このチュートリアルでは、承認済みビューを作成します。
目標
このチュートリアルの内容は次のとおりです。
- データセットを作成し、アクセス制御を適用する
- プロジェクトにアクセス制御を割り当てる
- ユーザーがクエリを実行できるデータを制限する承認済みビューを作成する
料金
BigQuery は有料のプロダクトです。このチュートリアルを行うと、BigQuery の使用料金が発生します。BigQuery では、特定の上限まで無料で一部のリソースを使用できるようになっています。詳細については、Always Free の使用量上限をご覧ください。
始める前に
このチュートリアルを始める前に、Google Cloud Console を使用して、プロジェクトを作成または選択します。
- Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、 BigQuery API を有効にします。 にアクセスします。
- クレジット カード情報の提供やプロジェクトに対する課金の有効化を行わない場合は、BigQuery によってサンドボックスが提供されます。このトピックの手順は、プロジェクトへの課金が有効かどうかに関係なく機能します。必要に応じて課金を有効にする場合は、課金を有効にする方法についてをご覧ください。
はじめに
このチュートリアルでは、2 つのデータセットを作成します。1 つはソースデータに使用し、もう 1 つは承認済みビューに使用します。GitHub 一般公開データセットのデータから、ソース データセットを作成します。次に、ソース データセットのテーブルにクエリを実行するビューを作成します。
データセットとビューを作成したら、ビューを含むデータセットとソースデータを含むデータセットに対するアクセス制御をプロジェクトに割り当てます。
ソース データセットに表示アクセス権を設定するために、承認済みのビューを作成します。承認済みのビューは次の手順で作成します。
- ビューを保存するデータセットを別に作成する
- 新しいデータセットにビューを作成する
- プロジェクトにアクセス制御を割り当てる
- ビューを含むデータセットにアクセス制御を割り当てる
- ソース データセットの表示アクセスを承認する
ソース データセットを作成する
まず、ソースデータを格納するデータセットを作成します。このチュートリアルでは、GitHub 一般公開データセットからクエリでデータを取得し、ソース データセットのテーブルに格納します。ソース データセットには、データ アナリストに見せる必要のない情報も含まれています。このようなデータに対するアクセスを承認済みのビューで制限します。
ソース データセットを作成するには:
Console
Cloud Console で [BigQuery] ページを開きます。
ナビゲーション パネルの [リソース] セクションでプロジェクトを選択し、[データセットを作成] をクリックします。
[データセット ID] に「
github_source_data
」と入力します。その他のデフォルト設定はすべてそのままにし、[データセットを作成] をクリックします。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ソース データセットを作成したら、SQL クエリを使用してテーブルを更新します。このクエリでは、GitHub 一般公開データセットからデータを取得します。
コンソール
Cloud Console で [BigQuery] ページを開きます。
[クエリを新規作成] をクリックします。
次のクエリをコピーして、[クエリエディタ] テキスト領域に貼り付けます。
SELECT commit, author, committer, repo_name FROM `bigquery-public-data.github_repos.commits` LIMIT 1000
[展開] をクリックして、[クエリの設定] を選択します。
[送信先] で、[クエリ結果の宛先テーブルを設定する] チェックボックスをオンにします。
- [プロジェクト名] で、適切なプロジェクトが選択されていることを確認します。
- [データセット名] で [
github_source_data
] が選択されていることを確認します。 - [テーブル名] に「
github_contributors
」と入力します。 - [保存] をクリックします。
[実行] をクリックします。
クエリが完了したら、[github_contributors] をクリックしてから [プレビュー] をクリックし、データがテーブルに書き込まれていることを確認します。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ビューを保存するデータセットを別に作成する
ソース データセットを作成したら、データ アナリストと共有する承認済みビューを格納する新しい別のデータセットを作成します。後のステップで、ソース データセット内のデータへのアクセス権を承認済みビューに付与します。データ アナリストには承認済みビューへのアクセス権が付与されますが、ソースデータへの直接アクセス権は付与されません。
データセット レベルでのアクセス制御の対象となる承認済みビューは、ソースデータとは別のデータセットに作成する必要があります。これにより、データオーナーはユーザーに対して元のデータへのアクセス権を同時に付与することなく、承認済みビューへのアクセス権を付与できます。ソース データセットと承認済みビューのデータセットは、同じリージョンのロケーションに存在する必要があります。
ビューを保存するデータセットを作成するには:
Console
Cloud Console で [BigQuery] ページを開きます。
ナビゲーション パネルの [リソース] セクションでプロジェクトを選択し、[データセットを作成] をクリックします。
[データセット ID] に「
shared_views
」と入力します。その他のデフォルト設定はすべてそのままにし、[データセットを作成] をクリックします。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
新しいデータセットにビューを作成する
新しいデータセットに、承認用に使用するビューを作成します。このビューをデータ アナリストと共有します。このビューは SQL クエリで作成します。このクエリで、データ アナリストに見せない列を除外します。
このチュートリアルでは、作成者の氏名を除き、作成者のすべての情報を共有ビューから除外します。また、実行者の名前を除き、実行者の情報もすべて除外します。
新しいデータセットにビューを作成するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリを新規作成] をクリックします。
次のクエリをコピーして、[クエリエディタ] テキスト領域に貼り付けます。
project_id
は実際のプロジェクト ID に置き換えます。SELECT commit, author.name as author, committer.name as committer, repo_name FROM `project_id.github_source_data.github_contributors`
[展開] をクリックして、[クエリの設定] を選択します。
[SQL 言語] で [標準] を選択します。[保存] をクリックして、クエリの設定を更新します。
[ビューを保存] をクリックします。
[ビューの保存] ダイアログで、次の操作を行います。
- [プロジェクト名] で、適切なプロジェクトが選択されていることを確認します。
- [データセット名] で [
shared_views
] が選択されていることを確認します。 - [テーブル名] に「
github_analyst_view
」と入力します。 - [保存] をクリックします。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
データ アナリストにプロジェクト レベルの IAM ロールを割り当てる
データ アナリストがビューにクエリを実行するには、クエリジョブの実行権限が必要になります。bigquery.user
ロールには、プロジェクト内でジョブ(クエリジョブを含む)を実行する権限が含まれます。ユーザーまたはグループにプロジェクト レベルで bigquery.user
役割を付与すると、ユーザーはデータセットを作成し、それらのデータセット内のテーブルに対してクエリジョブを実行できます。bigquery.user
役割では、他のユーザーが作成しなかったデータセットのクエリ、テーブルデータの表示、テーブル スキーマの詳細の表示はできません。
プロジェクト レベルの bigquery.user
役割を割り当てても、データ アナリストはビューからクエリするテーブルを含むデータセット内のテーブルデータを表示したり、クエリしたりすることはできません。通常、企業に所属するほとんどの個人(データ サイエンティスト、ビジネス インテリジェンス アナリスト、データ アナリスト)には、プロジェクト レベルの bigquery.user
ロールを割り当てる必要があります。
グループに IAM ロールを追加する場合には、有効な Google アカウントまたは Google Apps アカウントに関連付けられたメールアドレスまたはドメインを使用する必要があります。
プロジェクト レベルでデータ アナリストのグループを bigquery.user
ロールに割り当てるには:
Console
Google Cloud Console で IAM ページを開きます。
[プロジェクトを選択] をクリックします。
実際のプロジェクトを選択し、[開く] をクリックします。
[IAM] ページで、[追加] をクリックします。
[メンバーの追加] ダイアログで、次の操作を行います。
- [メンバー] ボックスに、データ アナリストを含むグループ(たとえば、
data_analysts@example.com
)を入力します。 - [ロール] ボックスで [ロールを選択] をクリックし、[BigQuery] > [BigQuery ユーザー] を選択します。
- [追加] をクリックします。
- [メンバー] ボックスに、データ アナリストを含むグループ(たとえば、
ビューを含むデータセットにアクセス制御を割り当てる
データ アナリストがビューにクエリを実行するには、ビューを含むデータセットに対する bigquery.dataViewer
ロールが必要です。bigquery.user
ロールは、データ アナリストにクエリジョブの作成に必要な権限を付与しますが、ビューを含むデータセットに対して少なくとも bigquery.dataViewer
権限がないと、クエリが失敗します。
データセットに対する bigquery.dataViewer
アクセス権をデータ アナリストに付与するには:
Console
[リソース] セクションで、
shared_views
データセットを選択し、[共有データセット] をクリックします。[データセットの権限] パネルで、[メンバーを追加] をクリックします。
[新しいメンバー] テキスト ボックスに、データ アナリストを含むグループ(たとえば、
data_analysts@example.com
)を入力します。[ロールを選択] をクリックし、[BigQuery] > [BigQuery データ閲覧者] を選択します。
[完了] をクリックします。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ソース データセットの表示アクセスを承認する
ビューを含むデータセットのアクセス制御を作成したら、承認済みのビューとしてソース データセットにビューを追加します。これにより、データ アナリスト グループ以外は、ビューからソースデータにアクセスできるようになります。
ソースデータにアクセスするビューを承認するには:
Console
[リソース] から
github_source_data
データセットを選択し、[共有データセット] をクリックします。[データセットの権限] パネルで、[承認済みのビュー] タブをクリックします。
[承認済みビューの共有] で、次の操作を行います。
- [プロジェクトを選択] で、適切なプロジェクトが選択されていることを確認します。
- [データセットを選択] で [
shared_views
] を選択します。 - [ビューを選択] で、ビュー名として「
github_analyst_view
」と入力します。 - [OK] をクリックします。
[追加] をクリックしてから [完了] をクリックします。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
構成を確認する
構成が完了すると、データ アナリスト グループ(たとえば、data_analysts
)のメンバーがビューにクエリを実行して、構成を確認できます。
構成を確認するには:
Console
データ アナリスト グループのメンバーに Cloud Console の BigQuery ページに移動してもらいます。
[クエリを新規作成] をクリックします。
次のクエリをコピーして、[クエリエディタ] テキスト領域に貼り付けます。
SELECT * FROM `shared_views.github_analyst_view`
完全なソースコード
次に、このチュートリアル用のソースコード全体を示します。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。
- Cloud Console で [リソースの管理] ページに移動します。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。
次のステップ
- BigQuery でのアクセス制御の詳細については、事前定義された役割と権限を確認する。
- ビューの概要で BigQuery ビューについて学習する。
- 承認済みビューの詳細については、承認済みビューの作成をご覧ください。
- IAM の概要で IAM の基本コンセプトを確認する。
- ポリシーの管理でアクセス制御の管理方法を確認する。