このページでは、BigQuery の Identity and Access Management(IAM)のロールと権限について説明します。
このページで説明するロールと権限には、BigQuery の次のコンパニオン プロダクトに関連するものも含まれています。
- BigQuery ML
- BigQuery Data Transfer Service
- BigQuery BI Engine
BigQuery ML でのアクセス制御について詳しくは、BigQuery ML ドキュメントのアクセス制御をご覧ください。
概要
ID で Google Cloud API を呼び出す場合、BigQuery ではその ID がリソースを使用するための適切な権限を持っている必要があります。権限を付与するには、ユーザー、グループ、またはサービス アカウントにロールを付与します。
このページでは、BigQuery リソースにアクセスするために ID に付与する BigQuery IAM のロールについて説明します。
IAM のロールのタイプ
IAM には、次の 3 種類のロールがあります。
基本ロール: オーナー、編集者、閲覧者のロールが含まれます。基本ロールは、IAM の導入前に存在していたアクセス制御を表しています。
事前定義ロール: 特定のサービスへのアクセスを細かく制御します。また、Google Cloud により管理されます。事前定義ロールは、一般的なユースケースとアクセス制御パターンをサポートすることを目的としています。
カスタムロール: ユーザー指定の権限リストに従って、アクセスを細かく制御します。
基本ロール、事前定義ロール、カスタムロールに 1 つ以上の権限が含まれているかどうかを確認するには、次のいずれかの方法を使用します。
gcloud iam roles describe
コマンド- IAM API の
roles.get()
メソッド
ある特定のユーザーに事前定義ロールと基本ロールの両方を割り当てると、各ロールの権限が合わせて付与されます。
IAM を使用してリソースにアクセスする方法の詳細については、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。
カスタムロールの作成方法については、IAM ドキュメントのカスタムロールの作成と管理をご覧ください。
BigQuery の権限と事前定義された IAM のロール
BigQuery リソースへのアクセス権を付与するには、ユーザー、グループ、またはサービス アカウントに、1 つ以上のロールを割り当てます。アクセス権は次の BigQuery リソースレベルで付与できます。
- 組織レベルまたは Google Cloud プロジェクト レベル
- データセット レベル
- テーブルレベルまたはビューレベル
組織レベルまたは Cloud プロジェクト レベルで適用されるロール
組織レベルおよびプロジェクト レベルでロールを割り当てると、BigQuery ジョブの実行権限、またはプロジェクトに含まれる BigQuery リソースすべてに対するアクセス権限が付与されます。
データセット レベルで適用されるロール
データセット レベルでロールを割り当てると、プロジェクトのリソースへの完全アクセス権を付与しなくても、特定のデータセットへのアクセス権を付与できます。IAM ポリシー階層では、BigQuery データセットはプロジェクトの子リソースにあたります。データセット レベルでロールを割り当てる方法について詳しくは、データセットへのアクセスの制御をご覧ください。
データセット内の個々のリソースに適用されるロール
データセットのリソースへの完全アクセス権を付与しなくても、データセット内の特定の種類のリソースにロールを個別に割り当てることができます。
以下の種類の個別のリソースにロールを適用できます。
- テーブル
- ビュー
以下の種類の個別のリソースにロールを適用することはできません。
- ルーティン
- モデル
テーブルレベルまたはビューレベルでロールを割り当てる方法の詳細は、テーブルまたはビューへのアクセスの制御をご覧ください。
BigQuery の権限
次の表に、BigQuery で使用可能な権限を記載します。
権限 | 説明 |
---|---|
bigquery.bireservations.get (ベータ版) |
BI Engine の予約を読み取ります。 |
bigquery.bireservations.update (ベータ版) |
BI Engine の予約を更新します。 |
bigquery.capacityCommitments.create (ベータ版) |
プロジェクトに容量コミットメントを作成します。 |
bigquery.capacityCommitments.delete (ベータ版) |
容量コミットメントを削除します。 |
bigquery.capacityCommitments.get (ベータ版) |
容量コミットメントに関する詳細を取得します。 |
bigquery.capacityCommitments.list (ベータ版) |
プロジェクト内の容量コミットメントすべてを一覧表示します。 |
bigquery.capacityCommitments.update (ベータ版) |
プロジェクト内の容量コミットメントすべてを更新します。 |
bigquery.connections.create |
プロジェクト内で新しい接続を作成します。 |
bigquery.connections.delete |
接続を削除します。 |
bigquery.connections.get |
接続のメタデータを取得します。認証情報は除外されます。 |
bigquery.connections.list |
プロジェクト内の接続を一覧表示します。 |
bigquery.connections.update |
接続とその認証情報を更新します。 |
bigquery.connections.use |
接続構成を使用して、リモート データソースに接続します。 |
bigquery.datasets.create |
新しい空白のデータセットを作成します。 |
bigquery.datasets.delete |
データセットを削除します。 |
bigquery.datasets.get |
データセットに関するメタデータを取得します。 |
bigquery.datasets.getIamPolicy |
将来の使用のために予約。 |
bigquery.datasets.setIamPolicy |
将来の使用のために予約。 |
bigquery.datasets.update |
データセットのメタデータを更新します。 |
bigquery.datasets.updateTag (ベータ版) |
データセットのタグを更新します。 |
bigquery.jobs.create |
プロジェクト内でジョブ(クエリを含む)を実行します。 |
bigquery.jobs.get |
ジョブのデータとメタデータを取得します。 |
bigquery.jobs.list |
すべてのジョブを一覧表示し、あらゆるユーザーが送信したあらゆるジョブのメタデータを取得します。他のユーザーが送信したジョブについては、詳細とメタデータが削除されます。 |
bigquery.jobs.listAll |
すべてのジョブを一覧表示し、ユーザーが送信したジョブのメタデータを取得します。* |
bigquery.jobs.update |
ジョブをキャンセルします。* |
bigquery.models.create |
新しいモデルを作成します。 |
bigquery.models.delete |
モデルを削除します。 |
bigquery.models.getData |
モデルデータを取得します。モデル メタデータを取得するには、bigquery.models.getMetadata が必要です。 |
bigquery.models.getMetadata |
モデル メタデータを取得します。モデルデータを取得するには、bigquery.models.getData が必要です。 |
bigquery.models.list |
モデルとモデルのメタデータを一覧表示します。 |
bigquery.models.updateData |
モデルデータを更新します。モデル メタデータを更新するには、bigquery.models.updateMetadata が必要です。 |
bigquery.models.updateMetadata |
モデル メタデータを更新します。モデルデータを更新するには、bigquery.models.updateData が必要です。 |
bigquery.models.export |
モデルをエクスポートします。 |
bigquery.readsessions.create |
BigQuery Storage API を介した新しい読み取りセッションを作成します。 |
bigquery.readsessions.getData |
BigQuery Storage API を介して読み取りセッションからデータを読み出します。 |
bigquery.readsessions.update |
BigQuery Storage API を介して読み取りセッションを更新します。 |
bigquery.reservations.create (ベータ版) |
プロジェクトに予約を作成します。 |
bigquery.reservations.delete (ベータ版) |
予約の削除 |
bigquery.reservations.get (ベータ版) |
予約の詳細を取得します。 |
bigquery.reservations.list (ベータ版) |
プロジェクト内の全予約を一覧表示します。 |
bigquery.reservations.update (ベータ版) |
予約のプロパティを更新します。 |
bigquery.reservationAssignments.create (ベータ版) |
予約割り当てを作成します。所有者プロジェクトと割り当て先リソースには、この権限が必要です。 |
bigquery.reservationAssignments.delete (ベータ版) |
予約割り当てを削除します。この権限は、所有者プロジェクトと割り当て先リソースに必要です。 |
bigquery.reservationAssignments.list (ベータ版) |
プロジェクト内の予約割り当てすべてを一覧表示します。 |
bigquery.reservationAssignments.search (ベータ版) |
特定のプロジェクト、フォルダ、または組織の予約割り当てを検索します。 |
bigquery.routines.create |
新しいルーティン(関数とストアド プロシージャ)を作成します。 |
bigquery.routines.delete |
ルーティンを削除します。 |
bigquery.routines.get |
ルーティンの定義とメタデータを取得します。 |
bigquery.routines.list |
ルーティンおよびルーティンのメタデータを一覧表示します。 |
bigquery.routines.update |
ルーティンの定義とメタデータを更新します。 |
bigquery.savedqueries.create |
保存したクエリを作成します。 |
bigquery.savedqueries.delete |
保存したクエリを削除します。 |
bigquery.savedqueries.get |
保存したクエリのメタデータを取得します。 |
bigquery.savedqueries.list |
保存したクエリの一覧を表示します。 |
bigquery.savedqueries.update |
保存したクエリを更新します。 |
bigquery.tables.create |
新しいテーブルを作成します。 |
bigquery.tables.delete |
テーブルを削除します。 |
bigquery.tables.export |
BigQuery からテーブルのデータをエクスポートします。 |
bigquery.tables.get |
テーブルのメタデータを取得します。 テーブルのデータを取得するには、 bigquery.tables.getData が必要です。 |
bigquery.tables.getData |
テーブルのデータを取得します。この権限は、テーブルのデータを検索するために必要です。 テーブルのメタデータを取得するには、 bigquery.tables.get が必要です。 |
bigquery.tables.getIamPolicy |
テーブルの IAM ポリシーを読み取ります。 |
bigquery.tables.list |
テーブルとテーブルのメタデータを一覧表示します。 |
bigquery.tables.setCategory |
テーブル スキーマにポリシータグを設定します。 |
bigquery.tables.setIamPolicy |
テーブルの IAM ポリシーを変更します。 |
bigquery.tables.update |
テーブルのメタデータを更新します。 |
bigquery.tables.updateData |
テーブルのデータを更新します。 |
bigquery.tables.updateTag (ベータ版) |
テーブルのタグを更新します。 |
bigquery.transfers.get |
転送のメタデータを取得します。 |
bigquery.transfers.update |
転送を作成、更新、削除します。 |
* ジョブを作成すると、ジョブの作成者に、そのジョブの bigquery.jobs.get
権限および bigquery.jobs.update
権限に相当する権限が自動的に付与されます。
BigQuery の事前定義された IAM のロール
次の表に、BigQuery の事前定義された IAM のロールと、各ロールに割り当てられた全権限の一覧を示します。各権限は、それぞれ特定のリソースタイプに適用されます。
ロール | 役職 | 説明 | 権限 | 最下位のリソース |
---|---|---|---|---|
roles/ |
BigQuery 管理者 | プロジェクト内のすべてのリソースを管理する権限を提供します。プロジェクト内のすべてのデータを管理でき、プロジェクト内で実行されている他のユーザーのジョブもキャンセルできます。 |
|
プロジェクト |
roles/ |
BigQuery Connection 管理者 |
|
||
roles/ |
BigQuery Connection ユーザー |
|
||
roles/ |
BigQuery データ編集者 |
このロールをテーブルまたはビューに適用すると、次の権限が付与されます。
このロールは、個々のモデルやルーティンに適用できません。 このロールをデータセットに適用すると、次の権限が付与されます。
プロジェクトまたは組織レベルで適用した場合、このロールは新しいデータセットを作成することもできます。 |
|
テーブルまたはビュー |
roles/ |
BigQuery データオーナー |
このロールをテーブルまたはビューに適用すると、次の権限が付与されます。
このロールは、個々のモデルやルーティンに適用できません。 このロールをデータセットに適用すると、次の権限が付与されます。
プロジェクトまたは組織レベルで適用した場合、このロールは新しいデータセットを作成することもできます。 |
|
テーブルまたはビュー |
roles/ |
BigQuery データ閲覧者 |
このロールをテーブルまたはビューに適用すると、次の権限が付与されます。
このロールは、個々のモデルやルーティンに適用できません。 このロールをデータセットに適用すると、次の権限が付与されます。
プロジェクトまたは組織レベルで適用した場合、このロールは、プロジェクト内のすべてのデータセットを列挙することもできます。ただし、ジョブを実行するためには別途他のロールが必要です。 |
|
テーブルまたはビュー |
roles/ |
BigQuery ジョブユーザー | プロジェクト内でジョブ(クエリを含む)を実行する権限を付与します。 |
|
プロジェクト |
roles/ |
BigQuery メタデータ閲覧者 |
このロールをテーブルまたはビューに適用すると、次の権限が付与されます。
このロールは、個々のモデルやルーティンに適用できません。 このロールをデータセットに適用すると、次の権限が付与されます。
このロールをプロジェクト レベルまたは組織レベルで適用すると、次の権限が付与されます。
ジョブを実行する場合は別途他のロールが必要です。 |
|
テーブルまたはビュー |
roles/ |
BigQuery 読み取りセッション ユーザー | 読み取りセッションを作成および使用するためのアクセス権 |
|
|
roles/ |
BigQuery リソース管理者 | BigQuery のすべてのリソースを管理します。 |
|
|
roles/ |
BigQuery リソース編集者 | すべての BigQuery リソースを管理しますが、購入意思決定はできません。 |
|
|
roles/ |
BigQuery リソース閲覧者 | すべての BigQuery リソースを表示できますが、変更や購入意思決定はできません。 |
|
|
roles/ |
BigQuery ユーザー |
このロールをデータセットに適用すると、データセットのメタデータを読み取り、データセット内のテーブルを一覧表示できます。 プロジェクトに適用すると、プロジェクト内でクエリなどのジョブを実行することもできるようになります。このロールを持つメンバーは、自分が所有するジョブの列挙、自分が所有するジョブのキャンセル、プロジェクト内のデータセットの列挙を行うことができます。また、プロジェクト内に新しいデータセットを作成することもできます。作成者には新しいデータセットに対する BigQuery データオーナーのロール( |
|
データセット |
BigQuery の基本ロール
BigQuery の基本ロールについては、BigQuery の基本ロールと権限をご覧ください。
BigQuery のカスタムロール
BigQuery のカスタムの IAM ロールを作成するには、IAM のカスタムロールのドキュメントで説明されている手順を行います。
次のステップ
- BigQuery のアクセス制御の例をご覧ください。
- BigQuery の基本ロールについては、BigQuery の基本ロールと権限をご覧ください。
- データセット レベルでロールを割り当てる方法については、データセットへのアクセスの制御をご覧ください。
- テーブルまたはビューレベルでロールを割り当てる方法については、テーブルとビューへのアクセスの制御をご覧ください。