基本ロールと権限

概要

BigQuery は、プロジェクト レベルのアクセスを許可するため、IAM の基本ロールをサポートしています。

プロジェクトの基本ロール

デフォルトでは、プロジェクトへのアクセス権限を付与すると、その中のデータセットにもアクセス権が付与されます。デフォルトのアクセス権限はデータセット単位でオーバーライドできます。次の表に、IAM の基本ロールのメンバーに付与されるアクセス権を示します。

基本ロール 機能
Viewer
  • プロジェクトでジョブを開始できます。ジョブの種類によっては、データセットのロールが追加で必要になります。
  • すべてのジョブを一覧表示して取得し、プロジェクトに対して開始したジョブを更新できます。
  • 閲覧者が含まれるプロジェクトにデータセットを作成すると、BigQuery によって、新しいデータセット用の事前定義ロール bigquery.dataViewer がそれらのユーザーに付与されます。
Editor
  • Viewer で可能な操作に加えて、次の操作が可能です。
    • プロジェクトで新しいデータセットを作成できます。
    • 編集者が含まれるプロジェクトにデータセットを作成すると、BigQuery によって、新しいデータセット用の事前定義ロール bigquery.dataEditor がそれらのユーザーに付与されます。
Owner
  • Editor で可能な操作に加えて、次の操作が可能です。
    • プロジェクトのロールの取り消し、または変更を行う
    • プロジェクトのすべてのデータセットをリスト表示する
    • プロジェクトの任意のデータセットを削除できます。
    • プロジェクトで実行されているすべてのジョブ(他のプロジェクト ユーザーによって実行されたジョブを含む)を一覧表示し、それらのジョブを取得できます。
    • データセットを作成すると、BigQuery によって、新しいデータセット用の定義済みの役割 bigquery.dataOwner がすべてのプロジェクト オーナーに付与されます。

      例外: ユーザーがクエリを実行すると、キャッシュに保存される結果テーブルを格納するために匿名データセットが作成されます。クエリを実行するユーザーにのみ、匿名データセットに対する OWNER アクセス権が付与されます。

プロジェクトの基本ロールは、Google Cloud コンソール を使用して付与または取り消します。プロジェクトが作成されると、プロジェクトを作成したユーザーに Owner のロールが付与されます。

BigQuery では、基本ロールが割り当てられている ID(ユーザー、グループ、サービス アカウント)から呼び出しを受信すると、BigQuery はその基本ロールを特殊グループのメンバーとして解釈します。特殊グループのメンバーシップは、BigQuery IAM ロールに割り当てられた ID 権限を付与します。次の表は、各基本ロールの特殊グループとそのロールを示しています。

基本ロール 割り当て先のグループ BigQuery IAM ロール
roles/viewer access.specialGroup: projectReaders roles/bigquery.dataViewer
roles/editor access.specialGroup: projectWriters roles/bigquery.dataEditor
roles/owner access.specialGroup: projectOwners roles/bigquery.dataOwner

特殊グループのアクセス権は作成時にのみ付与されます。後で権限を削除または変更するには、データセットの IAM ポリシーまたはオブジェクトのアクセス制御リスト(ACL)を編集します。

プロジェクト ロールへのアクセス権の付与と取り消しについては、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。

データセットの基本ロール

以下の基本ロールはデータセット レベルで適用されます。

データセット ロール 機能
READER
  • データセットのテーブルの読み取り、クエリ、コピー、エクスポートを行えます。データセット内のルーティンを読み取ることも可能です。
    • データセットで get を呼び出すことができます。
    • データセット内のテーブルで getlist を呼び出すことができます。
    • データセット内のルーティンで getlist を呼び出すことができます。
    • データセット内のテーブルのテーブルデータで list を呼び出すことができます。
  • bigquery.dataViewer 事前定義ロールにマッピングされます。
WRITER
  • READER で可能な操作に加えて、次の操作が可能です。
    • データセットのデータを編集または追加できます。
      • テーブルで insertinsertAllupdatedelete を呼び出すことができます。
      • データセット内のテーブルを、ジョブの読み込み、コピー、クエリの実行先として使用できます。
      • ルーティンで insertupdatedelete を呼び出すことができます。
  • bigquery.dataEditor 事前定義ロールにマッピングされます。
OWNER
  • WRITER で可能な操作に加えて、次の操作が可能です。
    • データセットで update を呼び出すことができます。
    • データセットで delete を呼び出すことができます。
  • bigquery.dataOwner 事前定義ロールにマッピングされます。

注: データセットには、OWNER ロールを持つエンティティが少なくとも 1 つ必要です。OWNER ロールを持つユーザーは自分の OWNER ロールを削除できません。

データセット レベルでロールを割り当てる方法について詳しくは、データセットへのアクセスの制御をご覧ください。

新しいデータセットを作成すると、BigQuery によってデフォルトのデータセット アクセス権限が次のエンティティに追加されます。データセットの作成時にロールを指定すると、デフォルトの値がオーバーライドされます。

エンティティ データセット ロール
プロジェクトに対する Viewer アクセス権限を持つすべてのユーザー READER
プロジェクトに対する Editor アクセス権限を持つすべてのユーザー WRITER
プロジェクトに対する Owner アクセス権限を持つすべてのユーザー
およびデータベース作成者

OWNER

例外: ユーザーがクエリを実行すると、キャッシュに保存される結果テーブルを格納するために匿名データセットが作成されます。クエリを実行するユーザーにのみ、匿名データセットに対する OWNER アクセス権が付与されます。